前期准备:
1.系统基本形况:
ip | hostname | role | server | loginName |
192.168.1.101 | h1 | NameNode,ResourceManager | centos7_64 | hwd |
192.168.1.102 | h2 | DataNode, NodeManager | centos7_64 | hwd |
192.168.1.103 | h3 | DataNode, NodeManager | centos7_64 | hwd |
2.各个系统之间实现用自己的用户名ssh无密钥登陆
3.在各个机器上安装java
4.先在其中一台机器上解压hadoop
5.关闭各个机器的防火墙
6.在各个机器上配置环境变量,建议每台服务器上的java和hadoop放置位置都相同,如把java解压到:/usr/java/文件夹下,把hadoop解压到/home/hwd/文件夹下,这样可以方便操作。
注意:此时是,每台机器上都安装好了java环境,但只有一台电脑上有hadoop,但每台机器上都配置了这两个软件的环境变量,因为需要修改hadoop,修改好后再拷到其余机器上即可。
环境变量参考:
在~/.bashrc文件中添加以下配置:
export JAVA_HOME=/usr/java/jdk1.7.0_67 export HADOOP_DEV_HOME=/home/hwd/hadoop-2.4.1 export HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME} export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME} export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME} export YARN_HOME=${HADOOP_DEV_HOME} export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop export PATH=$PATH:$HADOOP_DEV_HOME/bin:$JAVA_HOME/bin:$HADOOP_DEV_HOME/sbin
#lixun64位的系统加上下面的环境变量,
#否则启动时会出现“name or service not known” Warning警告,
#请参考http://stackoverflow.com/questions/21326274/hadoop-2-2-0-name-or-service-not-known-warning
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_DEV_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_DEV_HOME}/lib"
配置完成后,执行source ~/.bashrc命令(也可以修改文件/etc/profile)
对hadoop的修改如下其中修改文件的位置在$hadoop2.4.1/etc/hadoop文件夹下:
1.修改文件$hadoop2.4.1/etc/hadoop/hadoop-env.sh文件:
export JAVA_HOME=/usr/java/jdk1.7.0_67
2.配置core-site.xml文件,设置namenode的服务器位置。
3.修改hdfs-site.xml文件,建议dfs.data.dir的路径设置成自己用户目录下的一个位置,这样可以在运行hadoop时避免修改该位置的权限。
dfs.data.dir : Determines where on the local filesystem an DFS data node should store its blocks
dfs.replication : Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.
<configuration> <property> <name>dfs.data.dir</name> <value>/home/hwd/data</value> <!--数据节点存储块的目录的列表--> </property> <property> <name>dfs.replication</name> <value>2</value> </property>
4.修改mapred-site.xml文件(该文件不存在,执行cp mapred-site.xml.template mapred-site.xml命令,从mapred-site.xml.template复制一份),修改文件内容为:
1 <configuration> 2 <property> 3 <name>mapreduce.framework.name</name> 4 <value>yarn</value> 5 </property> 6 </configuration>
5.修改文件yarn-site.xml,修改后的内容为:
1 <configuration> 3 <!-- Site specific YARN configuration properties --> 4 <property> 5 <name>yarn.resourcemanager.hostname</name> 6 <value>h1</value> 7 </property> 8 9 <property> 10 <name>yarn.nodemanager.aux-services</name> 11 <value>mapreduce_shuffle</value> 12 </property> 13 14 </configuration>
6.修改文件slaves,修改后的内容为:
7.至此,文件就修改好了,然后修改后的hadoop拷到各个服务器上。
用命令可以很方便的进行操作:
scp -r /home/hwd/hadoop-2.4.1 h2:/home/hwd
scp -r /home/hwd/hadoop-2.4.1 h3:/home/hwd
8.启动hadoop
1). 在h1服务器上运行命令:
hdfs namenode -format //格式化namenode
start-dfs.sh //启动hdfs系统
此时,用jps命令查看java运行的java进程如下(此时如果没错误的话,在namenode节点上启动的进程有:NameNode ,SecondaryNameNode):
此时,查看datanode节点上的java进程如下:
2).运行命令:start-yarn.sh
此时namenode节点的java进程为:
此时datanode节点上的java进程为:
9.至此分布式的hadoop测试环境就搭好了。
结束语:
期间可能没有这么顺利,如果启动后各个节点的进程缺少,请查看各个节点的日志信息,来排除错误。
如:我的hadoop启动日志信息位置如下图所示(在启动过程中会在控制台显示日志文件的位置):
在该信息中,如果在您的namenode节点中namenode进程没启动起来,则进入h1节点,查看对应的.log文件,来排除错误
datanode节点同理去datanode节点服务器上查看对应的.log文件。
关闭hadloop分别运行命令:
stop-dfs.sh
stop-yarn.sh
参考:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/