hadoop集群搭建过程问题汇总

通过hadoop集群的安装,主要存在的问题有有以下几点:

1、防火墙问题

防火墙问题是遇到最多的问题,一般的教程是直接关闭防火墙,但是考虑到生产环境的安全问题,防火墙是要打开的。刚开始采取只开放hadoop需要的端口,但是发现hadoop每次运行任务的时候都会不断的测试各种端口,导致无法通过一个一个端口开放来设置。因此在设置防火墙时,选择对内网开放,对外网关闭的设置时最符合要求的。


利用firewall-cmd添加一个新的规则即可

1
2
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 accept'
firewall-cmd --reload

如何使用firewalld设置对内开放
Hadoop集群的各部分一般都会使用到多个端口 - 仔仔水鱼 - 博客园

2、datanode启动问题

启动集群后,出现一些datanode无法启动。一般情况下,出现这个问题的原因是namenode和datanode的clusterID不一致。namenode每次格式化时,会更新clusterID,但是datanode只会在首次格式化时确定,如果尝试多次格式化集群,就会造成不一致现象。

解决方法(两种)
1、修改datanode里VERSION文件的clusterID与namenode的clusterID一致,重新执行start-dfs.sh。
2、删除生成的节点hdfs的信息,然后重新格式化

3、双standby模式

由于操作不当,重启之后namenode都变成standby模式。这种情况下
先关闭整个集群,然后再重启一下,保证操作没有错误。如果还是有问题则
需要先仔细检测下:
1、检查zookeeper是否启动,zookeeper的个数是否是奇数
2、检查namenode的zkfc进程是否启动
3、检测集群所有的进程是否都正常的启动
4、查看zkfc的日志
5、检测zookeeper的设置是否正确

如果都没有问题,那么就需要强制手动选取

1
bin/hdfs haadmin -transitionToActive —forcemanual nn1


在刷新页面后,成功将nn1变成了active模式
运行程序是出现

1
./bin/hadoop jar ~/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 10 100

如果zkfc的日志有问题,如下

需要重新格式化,关闭Hadoop集群,再次进行格式zkfc格式化,输入Y

成功之后,重启

4、拒绝连接

在分配计算任务阶段时,kill掉正在运行的datanode,会出现拒绝连接的问题。集群会自动将任务转移到其它正常的机器上,通过测试,任务仍能正常的运行。

5、心跳时间

Hadoop默认的namenode与datanode的心跳检测时间是630s,如果datanode挂掉,namenode到经过大概630s后才能感知到,会存在影响任务进度的问题,建议将心跳时间减半,使namenode能够更快的检查到dead的datanode。如果启动一个datanode,该DN会向NN发送状态信息,集群很快就会感知到。
hadoop入门之设置datanode的心跳时间的方法 - 茄子_2008 - 博客园

6、namenode(Active)挂掉

kill 四台机器之后,namenode(Active)挂了,任务运行中断
分析原因是由于zookeeper的数量必须不少于(n-1)/2,现有zookeeper的数量小于4台(原有7台),因此已经无法正常工作。导致集群任务挂掉,另一台namenode(standy)也无法转成active模式。zookeeper占用的系统资源较少,可以多布置几台zookeeper,但要保证是奇数台。