睡不着觉,拉着狗陪我写博客
开始搭建分布式hdfs环境
参考文章 http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/ClusterSetup.html
建议:为了快速学习,建议同一个网址打开两个窗口,一种一个使用谷歌翻译整个页面,另一个作为对照使用,提高自己的学习效率
电脑性能有限,本打算用mac自身做namenode,启动3台虚拟机做datanode,无奈mac下需要重新编译hadoop,于是又copy了一份虚拟机,mac做伪分布式和代码编写的时候用。
在使用mac做完全分布式的时候,会发现如下情况
在执行format的时候会发现节点的HADOOP_HOME路径不对,默认在节点上使用了mac的环境变量地址
感谢王小雷-多面手
同学对我指导https://my.csdn.net/dream_an
ok,于是乎,节点分布如下
虚拟机名称 | NN(NameNode) | DN(DataNode) | SN(Secondary NameNode) |
---|---|---|---|
hadoop004 | Y | N | N |
hadoop001 | N | Y | Y |
hadoop002 | N | Y | N |
hadoop003 | N | Y | N |
解释一下为什么hadoop004放在第一个,因为最初是用mac做namenode的,结果跑步起来,所以用hadoop004充当mac,所以放在第一个
注意:
SN并不能完全替代NN,SN仅仅是帮助NN整合edits 和 images
请保证,各个服务器互相加入免密登录,以下配置文件路径均在HAOOP_HOME
中的相对路径,以上环境搭建均为未涉及yarn,所以不要问为什么MapReduce写不了。
ok,开始造配置文件(真的是一直在弄配置文件)
1. core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop004:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop</value>
</property>
注意:
fs.defaultFS
配置的是你的namenode
hadoop.tmp.dir
默认文件是在tmp目录下,这意味着文件可能会丢失,确保/opt/hadoop
文件不存在,或为空,并且你的执行用户对opt有写权限。
2. hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop001:50090</value>
</property>
此为SN配置项,需要做SSL,请加入以下配置
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop001:50091</value>
</property>
3. 编辑etc/hadoop/slaves
hadoop001
hadoop002
hadoop003
这里是配置datanode的节点
4. 编辑etc/hadoop/masters
没有则创建
hadoop001
这里是指定SN的服务器
5. scp以上配置文件到各个服务器中
6. format
hdfs.sh namenode -format