首页 > 代码库 > 搭建hadoop2.4.1

搭建hadoop2.4.1

前期准备:

  1.系统基本形况:

iphostnameroleserverloginName
192.168.1.101h1NameNode,ResourceManagercentos7_64hwd
192.168.1.102h2DataNode, NodeManagercentos7_64hwd
192.168.1.103h3DataNode, NodeManagercentos7_64hwd

 

 

 

  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_67export HADOOP_DEV_HOME=/home/hwd/hadoop-2.4.1export 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/hadoopexport HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoopexport YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoopexport 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拷到各个服务器上。

用命令可以很方便的进行操作:

src -r /home/hwd/hadoop-2.4.1 h2:/home/hwd

src -r /home/hwd/hadoop-2.4.1 h3:/home/hwd

8.启动hadoop

      1).  在h1服务器上运行命令:

hdfs namenode -format     //格式化namenodestart-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/

 

搭建hadoop2.4.1