您的位置:首页 > 运维架构

搭建hadoop完全分布式(hadoop2.2)

2017-01-18 14:47 288 查看
主要步骤:

1、以搭建好的伪分布式环境为基础,克隆两个相同的虚拟机作为slaves hadoop1,hadoop2

本来想克隆3个,但是虚拟机同时开4个直接卡死,于是就到了1个master+2个slaves

2、修改克隆的两台虚拟机主机名 hadoop1、hadoop2 

3、保证hadoopm与hadoop1、hadoop2建立ssh无加密连接 

我的环境不知道为什么不需要向各自的.ssh里添加相应公钥就能保证相互通信。

如果小伙伴不可以直接通信的话,一般都要进行公钥的拷贝,详细参考链接http://www.aboutyun.com/thread-7703-1-1.html

4、[b]@hadoopm 修改hadoopm里的/etc/hadoop/slaves 添加hadoop1、hadoop2(伪分布式的区别就是在这里,slaves文件里面是localhost,表示本机即使namenode,也是datanode。)[/b]

5、@[b]hadoopm 格式化namenode,启动hadoopm[/b]

6、在hadoop1和hadoop2中输入jps,检测是否建立node

可能遇到的问题

1、datanode retry connect to server

删除/etc/hosts 里的127.0.0.1 hadoopm ,否则slave节点无法通过ip 192.168.44.131 解析发送datanode给master节点

2、datanode incompatible clusterid in namenode and datanode

在hdfs-site.xml里面配置了namenode和datanode的dir,查看/hdfs/namenode 和datanode下面的version文件,其中clusterid不同。将slave节点的datanode-clusterid

改成与master节点的-namenode-clusterid相同

3、点击hdfs首页的browse the filesystem,发现无法访问

是因为所要访问的slave节点IP地址是hadoop集群里面的局域网地址,所以外网无法访问。可直接在局域网内访问,或需要在客户端的hosts文件里加入hadoop集群的ip地址与对应的主机名,这样就能解决问题了。

4、启动Hadoop集群测,发现三台DataNode只启动成功了两台,未启动成功的那一台日志中出现了下列异常:org.apache.hado
4000
op.ipc.RemoteException:
org.apache.hadoop.hdfs.protocol.UnregisteredD
atanodeException: Data node 192.168.56.102:50010 is attempting to report storage ID DS-834248845-192.168.56.102-50010-1415256060466. Node 192.168.56.103:50010 is expected to serve
this storage.

此异常是因为,两台DataNode的storageID出现了冲突,应该是因为我直接备份安装的原因吧。
解决方法:直接将出现异常的那台slaves机器的data目录删除!

PS:默认的数据存放目录如下:hdfs-site.xml文件中

dfs.name.dir             /hdfs/namenode

dfs.data.dir             /hdfs/datanode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: