hadoop完全分布式集群搭建

hadoop完全分布式集群搭建:

一、首先开启几台机器,修改好ip地址,主机名,网卡等

1. 一般拷贝过来的系统,启动后默认网卡不是System eth0,最好修改网卡为eth0(这一步非必需)

输入指令 vim /etc/udev/rules.d/70-persistent-net.rules后

将显示两个网卡信息,删除原来的eth0那栏,再将eth*改为eth0

2. 将获取网络的方式指定为静态

输入指令 vim /etc/sysconfig/network-scripts/ifcfg-eth0,修改为如下:

再将UUid和HWARDR可以删除

 2. 修改获取网络的主机名称

vim /etc/sysconfig/network 更改为自己的主机名

 3. 重启网络service network restart

二、在每台上都安装好jdk和hadoop,可以在一台机器上先装好配好环境变量,再直接考到datanode上。

三、使用自动化脚本启动,即start-dfs.sh,使用这个命令的前提:必须在环境变量中配好hadoop,不然需要到安装目录/sbin/下启动。

在/etc/hosts/下将所有的机子都映射好,【ip 主机名的形式】,这样为了便于直接使用主机名访问,而不再用ip地址。

配置免密登陆,因为启动时namenode需要访问datanode,不设置则每次需要输入每一台datanode的密码。

假设我的namenode是hadoop01,datanode是hadoop011和hadoop012

配置方式: 在namnode上输入命令  ssh-copy-id hadoop011开启

                                          输入命令  ssh hadoop011测试是否连通

在hadoop安装目录下的etc/hadoop/slaves文件下,添加datanode的主机名称。如下:

hadoop011

hadoop012

 

四、datanode启动遇到的问题:

可能发现某一台的datanode没有被namenode查到(进程存在,也可以连上hdfs,但在namenode的50070页面查不到),这时不能贸然格式化hadoop namenode -format,不然其他的datanode也起不来了。

报错如下:

2018-06-01 17:01:27,102 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /home/hadoop/app/tmp/dfs/data: namenode clusterID = CID-64018bcc-836c-4a42-925e-2ebdabfd73ee; datanode clusterID = CID-a568c94d-0ad8-4f96-9eac-bd39caabe932
2018-06-01 17:01:27,103 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop000/172.19.231.229:8020. Exiting. 
java.io.IOException: All specified directories are failed to load.
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1394)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1355)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
at java.lang.Thread.run(Thread.java:745)
2018-06-01 17:01:27,105 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (Datanode Uuid unassigned) service to hadoop000/172.19.231.229:8020
2018-06-01 17:01:27,111 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool <registering> (Datanode Uuid unassigned)
2018-06-01 17:01:29,111 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2018-06-01 17:01:29,113 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0

原因:

格式化后namenode的clusterID会更新一次

此时namenode的clusterID和datanode的clusterID不匹配

可以在tmp/dfs/name/current/VERSION下查看

解决方法:

  1. 可以把所有datanode的clusterID替换为跟namenode一致的ID
  2. 最简单的方法:直接删除所有datanode的tmp/dfs目录,然后再次格式化namenode,最后start-dfs.sh即可。

(因为重启时datanode发现没有clusterID会向namenode重新要一个,这样就匹配一致了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值