迄今为止,已经有五次因为安装hadoop被黑客入侵导致重装服务器的系统了。经过不断的排查摸索,终于初步确定了就是因为hadoop开放端口的原因。

在安装spark之前,我们首先需要安装好以下几个组件:

  • java
  • hadoop
  • scala

1.安装java

关于java的安装,可以选择java8或者java11。使用以下命令搜索相关yum源程序:

yum search java

如下图:
yum search java

之后可以使用如下命令安装java:

yum install java-1.8.0-openjdk-devel.x86_64

yum install java-11-openjdk-devel.x86_64

2.安装hadoop

关于安装hadoop,之前已经写过相关文章如CentOS安装Hadoop - lightsmile’s Blog。关于hadoop的下载,我们可以通过清华源来下载,具体下载地址为:Index of /apache/hadoop/core/hadoop-3.3.0

需要注意的是设置ssh免密登录过程可能会出现问题,在设置完成后可能还需要提示输入密码才可以。

这时可以输入:

ssh -vvv localhost

查看详细的登录日志信息,以确定问题所在。其中的问题主要包括~/.ssh文件夹的权限不对以及authorized_keys的权限不对,以及用户自定义ssh秘钥文件名等等。

2.1 hadoop设置ssh免密登录失败常见原因及解决措施

~/.ssh文件夹权限

可以输入以下命令以修改ssh文件夹权限:

chmod 700 ~/.ssh

authorized_keys文件权限

chmod 0600 authorized_keys

找不到ssh秘钥文件或用户自定义ssh秘钥文件名

如果用户不将ssh秘钥文件设置为默认的id_dsa或id_rsa等,那么用户还需要在~/.ssh文件夹下新增一个config文件以配置相关信息,具体内容大致如下:

Host localhost
    HostName localhost
    User hadoop
    Port 22
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

其中Host后面的localhost是指用户自定义的主机名,用于之后免密登录时ssh后面的地址,HostName则为实际的主机名,User指用户名,Port指ssh登录所使用的端口,IdentityFile指秘钥所对应的路径。

在新增config文件之后,同时也还需要设置该文件的权限,如:

chmod 0600 config

3.安装scala

首先需要到ScalaDownload | The Scala Programming Language官网下载scala,可以下载如下文件:

在下载完成之后,将其解压到合适的文件夹,并将bin目录添加到系统PATH环境变量中即可。

我是将hadoop、spark和scala都放到了/opt路径下,同时新增了/etc/profile.d/hadoop.sh文件,里面内容为:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.9.11-3.el8_3.x86_64  
export HADOOP_HOME=/opt/hadoop-3.3.0
export SCALA_HOME=/opt/scala-2.13.4
export SPARK_HOME=/opt/spark-3.0.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin

安装完成之后,可以简单验证一下,如下图:

4.安装spark

对于spark的下载,可以通过国内清华源下载以提高下载速度。具体网址为:Index of /apache/spark,当前最新版本的下载链接为:spark-3.0.1-bin-hadoop3.2.tgz

在下载好spark后,解压到合适的位置并配置环境变量与配置scala类似,此处不表。在安装完成之后,可以简单验证一下,如下命令:

(base) ➜  ~ run-example SparkPi 10  2>&1 | grep "Pi is"
Pi is roughly 3.144179144179144

5.通过安全组控制hadoop服务所开放的端口

通过以下命令排查得到java所对应端口:

(base) ➜  ~ netstat -tunlp | grep java
tcp        0      0 0.0.0.0:8030            0.0.0.0:*               LISTEN      81914/java          
tcp        0      0 0.0.0.0:8031            0.0.0.0:*               LISTEN      81914/java          
tcp        0      0 0.0.0.0:8032            0.0.0.0:*               LISTEN      81914/java          
tcp        0      0 0.0.0.0:8033            0.0.0.0:*               LISTEN      81914/java          
tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      82046/java          
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      81255/java          
tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      82046/java          
tcp        0      0 0.0.0.0:9868            0.0.0.0:*               LISTEN      81632/java          
tcp        0      0 0.0.0.0:9870            0.0.0.0:*               LISTEN      81255/java          
tcp        0      0 0.0.0.0:36563           0.0.0.0:*               LISTEN      82046/java          
tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN      81914/java

通过jps命令查看java进程信息:

(base) ➜  ~ jps
81632 SecondaryNameNode
81255 NameNode
81914 ResourceManager
82046 NodeManager
190765 Jps

然后根据对应的端口号配置安全组,如下图:

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题,总访问量为
载入天数...载入时分秒...
冀ICP备20001334号