Hadoop2.5.0完全分布式配置(1主3从)
1、开发配置环境:
具体的就不介绍了,请参考另外一篇文章http://www.open-open.com/lib/view/open1409640189307.html
2、Hadoop节点配置
在讲解之前,先声明一点,这篇文章的所有环境都是基于上一篇伪分布的配置文章的基础上再做配置的,如果你没有看过我之前的那篇文章,建议你先去阅读一下。
现在网上比较少新版本的配置教程,那么下面我就来分享一下我自己的实战经验,如有不正确的地欢迎指正 :)
首先,我们的节点信息如下:
master 192.168.8.184 slave1 192.168.8.183 slave2 192.168.8.178 slave3 192.168.8.190
我是用虚拟机做的,主节点(Master)配置好后作为模板,其他3个从节点(slave1、slave2、slave3)直接做虚拟机拷贝,其中slave1还兼任了第二namenode节点。因为主节点的配置跟从节点的配置是完全一样的,拷贝完后只需要做两件事:修改hostname、重新生成SSH无口令登陆的KEY。拷贝完成后启动如果网络有问题,直接百度谷歌就行了。关于修改hostname对应上面的IP修改成相应的名称就可以了,如192.168.8.184修改成master。而用户名、密码完全可以不需要修改,当然你要改也是没有问题的,节点多了不好记哦。首先,我们先来讲一下配置,一共要配置6个文件,分别是core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、masters、slaves,其中masters文件可能会在配置目录下不存在,自己新建一个就可以了,详细配置如下:
core-site.xml:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.8.184:9000</value> <description>same as fs.default.name</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/mywind/tmp</value> <description>A base for other temporary directories.</description> </property> </configuration>
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>/usr/mywind/name</value> <description>same as dfs.name.dir</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/usr/mywind/data</value> <description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices.</description> </property> <property> <name>dfs.blocksize</name> <value>268435456</value> <description>HDFS blocksize of 256MB for large file-systems.</description> </property> <property> <name>dfs.namenode.http-address</name> <value>master:50070</value> <description>The address and the base port where the dfs namenode web ui will listen on.</description> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> <description>The secondary namenode http server address and port.</description> </property> <property> <name>dfs.replication</name> <value>3</value> <description>same as old frame,recommend set the value as the cluster DataNode host numbers!</description> </property> </configuration>
mapred-site.xml:
<configuration> <!--Configurations for MapReduce Applications --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>Execution framework set to Hadoop YARN.</description> </property> <!--Configurations for MapReduce JobHistory Server --> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> <description>MapReduce JobHistory Server host:port.Default port is 10020.</description> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> <description>MapReduce JobHistory Server Web UI host:port.Default port is 19888.</description> </property> </configuration>
yarn-site.xml:
<configuration> <!-- Configurations for ResourceManager --> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <!-- Configurations for NodeManager --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>Configuration to enable or disable log aggregation.Shuffle service that needs to be set for Map Reduce applications.</description> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
masters:
master
slave1 slave2 slave3
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
从节点(slave1、slave2、slave3)执行上面的命令重新生成完KEY之后,主节点需要与从节点建立无密码登陆,那么,就需要把主节点的KEY添加到从节点的授权列表中,这样主节点才能不需要输入密码的情况下连接访问从节点。步骤如下:
1. 把主节点的公钥复制到从节点中。
2. 从节点把主节点的公钥写入授权列表。
首先,在主节点中切换到/home/a01513目录下(注意:a01513是我的操作系统用户名,实际名称根据你系统的用户名改成相应的名称就可以了):
cd /home/a01513
然后复制,这里我以slave1节点为例:
scp ~/.ssh/id_rsa.pub a01513@192.168.8.183:/home/a01513/
这里可能要你输入slave1(192.168.8.183)的主机密码,输入就可以了,输入完成后到slave1节点终端输入以下命令把主节点的公钥复制到授权列表:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
回到主节点终端中输入:
ssh slave1
如果不需要输入密码就连接成功的话,证明你配置对了,恭喜!
如果上面的步骤完成了,那么下面进行格式化文件系统:
hdfs namenode -format
然后启动HDFS、YARN、JobHistory进程:
start-dfs.sh start-yarn.sh
注意旧版本的start-all.sh已经被上面两个脚本替代了,不过好像这命令还可能用,建议还是用上面两个吧。
mr-jobhistory-daemon.sh start historyserver
stop-dfs.sh stop-yarn.sh mr-jobhistory-daemon.sh stop historyserver
至此,我们的完全分布式配置已经大功告成!
来自:http://my.oschina.net/lanzp/blog/347437