主要步骤:
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、@hadoopm 修改hadoopm里的/etc/hadoop/slaves 添加hadoop1、hadoop2(伪分布式的区别就是在这里,slaves文件里面是localhost,表示本机即使namenode,也是datanode。)
5、@hadoopm 格式化namenode,启动hadoopm
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.hadoop.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文件中