井老师的博客:Hadoop集群 (高可用) 搭建过程:
namenode和datanode的比较:
相同点:
1.
每台机器都放置相同的程序 (五个
.xml
文件)
2.
每台机器都配置相同环境变量
不相同:
3.
第一台机器能够无密码登录到
2345
的机器上
4.
第二台机器能够无密码登录到
1345
的机器上
5.345
的机器上配置
zookeeper
的配置文件
zoo.cfj
,并创建对应的
myid
文件
这里我将 在搭建过程中因操作不当所出现的错误以及解决方案做一下分享:
1.zkServer.sh start 在
从机上分别进行执行
,启动zookeeper服务,jps查看会出现仲裁节点 即:QuorumPeerMain
2.hadoop-daemon.sh start journalnode 在
从机上分别进行执行,
启动journalnode 日志节点 ,jps查看会有journalnode
(ps:
注意只有第一次需要这么启动,之后启动hdfs会包含journalnode
)
3.hdfs namenode -format 在
hadoop-node1上进行格式化HDFS
,会生成tmp文件夹,然后将tmp文件夹拷贝给hadoop-node2,否则hadoop-node2上的namenode启动不了。
(ps:如果退出时状态为1,则格式化hdfs失败,
解决方案:
将所有namenode和DataNode机子上的tmp文件夹全部删掉:rm -r tmp
删掉后再进行一次格式化即可。)
也有另一种情况:
可能是因为缓存的问题,如果第一次格式化,退出状态是1,在执行一次格
式化就好,但是如果第二次格式化,退出状态仍然是1,那就只能停掉所有
服务(stop-all.sh)任何切换到root用户下,reboot重新启动机子,从新操作。
拷贝:
scp -r tmp hadoop@hadoop-node2:~/hadoop-2.7.3/
4.hdfs zkfc -formatZK 在
hadoop-node1进行格式化zkfc 即zookeeper错误覆盖控制器,
5.start-dfs.sh 在
hadoop-node1上进行启动HDFS,
jps查看:
hadoop-node1:NameNode,DFSZKFailoverController
hadoop-node2:NameNode,DFSZKFailoverController
hadoop-node3:增加 DataNode
hadoop-node4:增加 DataNode
hadoop-node5:增加 DataNode
6.start-yarn.sh 在hadoop-node1上进行启动resourcemanager
yarn-daemon.sh start resourcemanager 在hadoop-node2上单独开
启resourcemanager
jps查看:
hadoop-node1:增加 ResourceManager
hadoop-node2:增加 ResourceManager
hadoop-node3:增加 NodeManager
hadoop-node4:增加 NodeManager
hadoop-node5:增加 NodeManeger
以上一系列不出差错全部启动成功,证明hadoop集群(高可用)搭建完成
7.关闭dfs和yarn
严肃注意:
如果不按流程关闭服务,下次启动就会出现各种bugge
当然也有解决方案:
删掉所有机子上的tmp文件夹,重新进行一次格式化即可。
关闭服务:
第一步:stop-dfs.sh
正常关闭:
出现小bugge的关闭:但不影响关闭
第二步:stop-yarn.sh
第三步:在hadoop-node2上:yarn-daemon.sh stop resourcemanager
操作完以上关闭命令,就可以关闭机子啦!
悠久关闭防火墙
systemctl disable firewalld
setenforce 0 (ps:
临时关闭
)
悠久关闭防护进程
cd /etc/selinux/
vi config
更改:
SELINUX=enforcing
为
disable
以下为在idea中因操作失误造成的错误 以及 解决方案:
1.
错误信息:
input路径出现错误
错误原因:
user写成啦usr
解决方案:
即:
hadoop fs -mkdir -p /user/hadoop
hadoop fs -mkdir /user/hadoop/input2
hadoop fs -put 文件名 user/hadoop/input2
2.
如果使用
windows
系统中的
idea
进行
hadoop
集群操作
MapReduce
时,出现
job.waitForCompletion(
true
)
此句执行时出现
false
解决方案:在
mapred-site.xml
中添加一下代码即可:
3.
在
linux
系统中进行
idea
开发
如果报此错误:
需要在
idea
所在的用户中
vi /etc/hosts
把
Master
主机的
ip
地址进行配置。
4.
出现此异常:
解决方案:
5.
报这个错,说明slaves文件被污染了
出错原因:在windows 系统下建立slaves文件,然后传到Linux系统中,slaves很容易被污染
解决方案:在Linux系统下,touch 或 vi 创建slaves文件即可