• 搭建hadoop2.4.1


    前期准备:

      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/

  • 相关阅读:
    tech
    自定义类与NSCopying协议
    @autoreleasepool与循环
    可变类型属性与copy
    [HDOJ]_2005_第几天?
    不可变实例、可变实例、copy与mutableCopy
    CGRectIntersection函数与CGRectIsNull函数
    使用dispatch_benchmark函数进行基准测试
    [HDOJ]_2035_人见人爱A^B
    使用for、forin和block遍历NSArray的效率的比较
  • 原文地址:https://www.cnblogs.com/hwd-cnblogs/p/4006384.html
Copyright © 2020-2023  润新知