閱讀743 返回首頁    go 阿裏雲 go 技術社區[雲棲]


十分鍾搭建自己的hadoop2/CDH4集群

版本及準備

我部署的是hadoop-2.0.0-cdh4.2.0.tar.gz,下載地址為https://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.2.0.tar.gz。在https://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下查看各個機器的日誌情況,找到問題原因。


(全文完)



最後更新:2017-04-03 15:21:56

  上一篇:go 實戰DeviceIoControl 之四:獲取硬盤的詳細信息
  下一篇:go 數字時鍾 (JavaScript ,JQuery)