zoukankan      html  css  js  c++  java
  • 十分钟搭建自己的hadoop2/CDH4集群

    版本及准备

    我部署的是hadoop-2.0.0-cdh4.2.0.tar.gz,下载地址为http://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.2.0.tar.gz。在http://archive.cloudera.com/cdh4/cdh/4/下还可以下载到CDH hadoop生态圈内相关的包。再准备一个jdk1.6+的java环境,设置好JAVA_HOME。

    需要注意的是,window下直接点击链接下载到的包可能无法解压成功,原因是包是放在linux ftp上的,直接下载会有问题。建议在linux机器上用wget命令下载就可以了,如果你的机器不能联网的话,也可以联系我把包发给你。

    基础配置

    给集群配好 SSH;在hosts里可以准备好自己机器的名字。比如我的机器1作为namenode(namenode01),机器2作为secondary namenode(snamenode01),其他机器作为datanode。以下配置文件里就用该名称代替。

    配置文件

    tar包的部署方式只要具备CDH4的包就可以了,其余步骤不需联网,只要配置好几个配置文件即可。我提供一份自己的配置,可以完全拷贝下来使用。进入到目录hadoop-2.0.0-cdh4.2.0/etc/hadoop下面,修改这几个文件:

    core-site.xml

    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode01</value>
      </property>
      <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
      </property>
      <property>
        <name>fs.trash.checkpoint.interval</name>
        <value>10080</value>
      </property>
    </configuration>

    hdfs-site.xml

    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>3</value>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/mywork/work/data/hadoop-${user.name}</value>
      </property>
      <property>
        <name>dfs.namenode.http-address</name>
        <value>namenode01:50070</value>
      </property>
      <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>ssnamenode01:50090</value>
      </property>
      <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
      </property>
    </configuration>

    yarn-site.xml

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>namenode01:8031</value>
      </property>
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>namenode01:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>namenode01:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>namenode01:8033</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>namenode01:8088</value>
      </property>
      <property>
        <description>Classpath for typical applications.</description>
        <name>yarn.application.classpath</name>
        <value>$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,
        $HADOOP_COMMON_HOME/share/hadoop/common/lib/*,
        $HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,
        $YARN_HOME/share/hadoop/yarn/*,$YARN_HOME/share/hadoop/yarn/lib/*,
        $YARN_HOME/share/hadoop/mapreduce/*,$YARN_HOME/share/hadoop/mapreduce/lib/*</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce.shuffle</value>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
      <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/home/mywork/work/data/yarn/local</value>
      </property>
      <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/home/mywork/work/data/yarn/logs</value>
      </property>
      <property>
        <description>Where to aggregate logs</description>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/home/mywork/work/data/yarn/logs</value>
      </property>
      <property>
        <name>yarn.app.mapreduce.am.staging-dir</name>
        <value>/home/mywork/work</value>
    </property>
    
    
    </configuration>

    mapred-site.xml

    <configuration>
      <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>namenode01:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>namenode01:19888</value>
      </property>
    </configuration>

    masters

    namenode01
    ssnamenode01

    slaves

    datanode01
    datanode02
    datanode03
    datanode04

    最后修改.bashrc里的一些环境,添加如下配置

    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=./:$JAVA_HOME/lib:$JRE_HOME/lib:$JRE_HOME/lib/tools.jar
    export HADOOP_HOME=/home/mywork/work/hadoop-2.0.0-cdh4.2.0
    export HADOOP_MAPRED_HOME=${HADOOP_HOME}
    export HADOOP_COMMON_HOME=${HADOOP_HOME}
    export HADOOP_HDFS_HOME=${HADOOP_HOME}
    export YARN_HOME=${HADOOP_HOME}
    export HADOOP_YARN_HOME=${HADOOP_HOME}
    export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
    export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/sbin

    source之使之生效。然后把这台机器上的hadoop scp到其他各台机器上


    启动集群
    HADOOP_HOME/bin下,第一次格式化namenode

    hadoop namenode -format

    然后在namenode机器上逐个启动

    start-dfs.sh
    start-yarn.sh

    可以使用jps命令在各台机器上查看已经起来的进程和端口,在 namenode01:8088/cluster 可以看集群情况。 datanode01:8042/node 可以看到节点情况。

    问题排查

    如果某几个节点没有起来,很可能是因为端口占用的问题,比如yarn启动的时候会使用8080端口,如果被占用,该datanode就起不了了,可以使用

    netstat -anp | grep 8080

    找到id,然后kill -9 xxx 掉。

    一般可以在指定的HADOOP_HOME/logs下查看各个机器的日志情况,找到问题原因。


    (全文完)



  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341803.html
Copyright © 2011-2022 走看看