CentOS Linux中搭建Hadoop和Spark集群详解(3)

最开始我也没配,结果出错了,出错的情形表现为:通过主节点可以启动yarn集群,子节点上有NodeManager进程,但是,在:8088/cluster/nodes页面却没有显示子节点的信息,同时在主节点上通过yarn node -list -all命令查看也没有子节点的信息。然后在nodemanager节点的相关日志日志文件里(/usr/local/hadoop-2.6.5/logs/yarn-root-nodemanager-hadoop2.log)有org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031异常,如下图一所示。我的理解是,因为在yarn-site.xml文件中没有显式地将这些端口配置出来的原因,导致子节点无法向主节点注册(Registered)——然后,从报错的信息看貌似是只要把8031端口配置上了就可以了,其实也不是so easy的……如果不配置其他端口,则提交yarn任务的时候会无限地卡在ACCEPTED状态上,卡在该状态上的日志我看不出问题来,但是确实把上面的端口都配置了之后就好了。

因此,最好是将这些端口都显式配置好!!!

图一:

注:判定上图信息是异常的原因,是因为子节点要去连接主节点,它需要连接到正确的主节点IP才行,而上图中连接的却是0.0.0.0——在子节点上,0.0.0.0的IP代表的是子节点自己,它连接错了,自然无法向主节点注册。

关于最后两项配置

yarn.nodemanager.pmem-check-enabled:是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true;

yarn.nodemanager.vmem-check-enabled:是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

因为我实验时给3台机器分配的资源都很少,所以必须得设置它们都为false,否则运行yarn程序的时候会报如下错误。

CentOS Linux中搭建Hadoop和Spark集群详解

报错是因为,执行程序时,yarn对于机器能分配的资源进行了检查,结果发现运行程序需要的资源超出了机器所能分配资源的上限,然后就粗错了。如果把上面两项设置为false,则运行程序时就不会去进行对应的资源检查了,此时虽然机器能分配的资源依然不足,但是yarn不会像之前那样立马把container干掉了,而是会花较长的时间才能把程序跑完。

2.2.5配置slaves

命令:

vim slaves

在文件中加入如下内容

hadoop2
hadoop3

如下:

注:本次配置中hadoop1是管理节点,hadoop2和hadoop3是数据节点。如果如果想使得hadoop1既是管理节点又是数据节点,可以把hadoop1也写到slaves文件中来。

2.3将hadoop1上配置好的hadoop文件分发到hadoop2和hadoop3节点上(hadoop1上操作)

命令:

scp -r /usr/local/hadoop-2.6.5 root@hadoop2:/usr/local/

scp -r /usr/local/hadoop-2.6.5 root@hadoop3:/usr/local/

2.4修改环境变量,在hadoop1上执行以下命令

命令:

vim /etc/profile

在文件中添加如下内容:

export HADOOP_HOME=/usr/local/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile命令使修改的环境变量生效,接着用which hdfs命令查看是否修改成功。

2.5配置完成,接着格式化hdfs

在主节点hadoop1上执行以下命令

hdfs namenode -format

如下:

CentOS Linux中搭建Hadoop和Spark集群详解

CentOS Linux中搭建Hadoop和Spark集群详解

注:命令执行完之后从结果上很难看出是否格式化成功了,这时可以紧接着通过echo $? 命令查看hdfs namenode -format命令是否执行成功。如下,如果输出0,则说明上一条执行成功。

2.6启动hdfs,在hadoop1上执行以下命令

cd /usr/local/hadoop-2.6.5/sbin
./start-dfs.sh

如下:

CentOS Linux中搭建Hadoop和Spark集群详解

2.7验证hdfs是否安装成功

方法一:

在主节点hadoop1上用jps命令可以看到SecondaryNameNode和NameNode进程:

在任一子节点上用jps命令可以查看到DataNode进程

如此,可以认为,从主节点上可以成功启动hdfs集群了。

但是是否一定没有问题了呢?不一定。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c6d96deb6dfb4199c7c364ecc98110c.html