Hadoop学习笔记【12】-Hadoop2.1全分布式集群安装

1. 环境

5个节点,配置如下:

dual core x86_64, 4GB RAM, 10GB Disk

Centos 6.4_x64

OpenJDK 1.7.0_9

hadoop-2.1.0-beta

互相之间千兆网连接。

每台机器上用于安装和启动hadoop的用户名都是xc

节点的hostname、安装的服务和ip如下:

hostname 安装服务 ip
h1-1 NN 172.16.0.198
h1-2 RM + SNN 172.16.0.199
h1-3 NM + DN 172.16.0.200
h1-4 NM + DN 172.16.0.201
h1-5 NM + DN 172.16.0.202
【引用请注明出处: http://blog.csdn.net/bhq2010/article/details/11949927

2. 准备

每个节点上的jdk已经装好了。
还需要设置ssh无密钥登录。我设置了h1-1和h1-2到所有节点的ssh无密钥登录,必须使得h1-1和h1-2这两个master都能够无密钥ssh登陆其他所有节点,包括自己。

还需要设置系统的/etc/hosts文件,将集群中各个节点的ip和主机名加入文件中:
[html]  view plain copy
  1. 172.16.0.198 h1-1  
  2. 172.16.0.199 h1-2  
  3. 172.16.0.200 h1-3  
  4. 172.16.0.201 h1-4  
  5. 172.16.0.202 h1-5  

3. 配置

下载hadoop-2.1.0-beta,解压。
配置文件在etc/hadoop/下,启动脚本在sbin/下,功能脚本在bin/下
需要修改的配置文件有:
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
具体如下:
在hadoop-env.sh中设置JAVA_HOME。

core-site.xml设置:
[html]  view plain copy
  1. <configuration>  
  2.   <property>  
  3.     <name>fs.defaultFS</name>  
  4.     <value>hdfs://h1-1:9000</value>  
  5.   </property>  
  6. </configuration>  

hdfs-site.xml设置:
[html]  view plain copy
  1. <configuration>  
  2.   <property>  
  3.     <name>dfs.namenode.name.dir</name>  
  4.     <value>/home/xc/dfs/name</value>  
  5.   </property>  
  6.   <property>  
  7.     <name>dfs.datanode.data.dir</name>  
  8.     <value>/home/xc/dfs/data</value>  
  9.   </property>  
  10.   <property>  
  11.     <name>dfs.replication</name>  
  12.     <value>3</value>  
  13.   </property>  
  14. </configuration>  

mapred-site.xml文件需要自己创建,配置如下:
[html]  view plain copy
  1. <configuration>  
  2.   <property>  
  3.     <name>mapreduce.framework.name</name>  
  4.     <value>yarn</value>  
  5.   </property>  
  6.   <property>  
  7.     <name>mapreduce.jobhistory.address</name>  
  8.     <value>h1-2:10020</value>  
  9.   </property>  
  10.   <property>  
  11.     <name>mapreduce.jobhistory.webapp.address</name>  
  12.     <value>h1-2:19888</value>  
  13.   </property>  
  14.   <property>  
  15.     <name>mapreduce.jobhistory.intermediate-done-dir</name>  
  16.     <value>/mr-history/tmp</value>  
  17.   </property>  
  18.   <property>  
  19.     <name>mapreduce.jobhistory.done-dir</name>  
  20.     <value>/mr-history/done</value>  
  21.   </property>  
  22. </configuration>  
虽然这里配置了jobhistory的web端口,但启动hadoop后,访问这个端口没有响应。telnet上面那两个端口也木有响应,暂时不知道为毛,但是不影响hdfs和跑mapreduce。

yarn-site.xml配置:
[html]  view plain copy
  1. <configuration>  
  2.   <property>  
  3.     <name>yarn.nodemanager.aux-services</name>  
  4.     <value>mapreduce.shuffle</value>  
  5.   </property>  
  6.   <property>   
  7.     <description>The address of the applications manager interface in the RM.</description>   
  8.     <name>yarn.resourcemanager.address</name>   
  9.     <value>h1-2:18040</value>   
  10.   </property>   
  11.   <property>   
  12.     <description>The address of the scheduler interface.</description>   
  13.     <name>yarn.resourcemanager.scheduler.address</name>   
  14.     <value>h1-2:18030</value>   
  15.   </property>   
  16.   
  17.   <property>   
  18.     <description>The address of the RM web application.</description>   
  19.     <name>yarn.resourcemanager.webapp.address</name>   
  20.     <value>h1-2:18088</value>   
  21.   </property>   
  22.     
  23.   <property>   
  24.     <description>The address of the resource tracker interface.</description>   
  25.     <name>yarn.resourcemanager.resource-tracker.address</name>   
  26.     <value>h1-2:8025</value>   
  27.   </property>   
  28. </configuration>  

slaves配置:
[html]  view plain copy
  1. h1-3  
  2. h1-4  
  3. h1-5  

将配置好的文件分发到所有的节点。

4. 启动

启动前检查一下ssh是不是设置好了。在h1-1和h1-2上执行一边:
ssh 0.0.0.0
ssh h1-1/2/3/4/5
都能无密钥登录即可。
然后,在h1-1,即namenode所在的节点上执行:
[plain]  view plain copy
  1. $ cd hadoop_home_dir  
  2. $ ./bin/hdfs namenode -format  
格式化hdfs。格式化后会在namenode节点和slaves节点上建立对应的目录(/home/xc/dfs)

PS: 我在h1-2节点上执行format后没有能够成功启动hdfs。

在h1-2,即resourcemanager所在的节点上执行:
[plain]  view plain copy
  1. $ cd hadoop_home_dir  
  2. $ ./sbin/start-all.sh  

PS:我在h1-1上执行启动脚本,没有能够成功启动resourcemanager

启动完成后,在http://h1-1:50030能查看hdfs的状态,在http://h1-2:18088可以查看resourcemanager的状态

5. mapreduce

传一个文本文件到hdfs上,运行wordcount:
[plain]  view plain copy
  1. $ cd hadoop_home_dir  
  2. $ ./bin/hdfs dfs -put <src> <dst>  
  3. $ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.1.0-beta.jar wordcount    

参考资料

http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/
http://hadoop.apache.org/docs/r2.1.0-beta/hadoop-project-dist/hadoop-common/ClusterSetup.html

疑问:

1、为啥jobhistory看不到?
2、貌似hadoop2.1的hdfs没法和hadoop1.x的hdfs之间拷贝文件,不知到为啥?
3、明明我的3个nodemanager节点都是4G的内存,resourcemanager的web ui中却显示了3*8=24GB的内存,不知为啥?我装了一个伪分布的倒是显示了正确的内存容量。

PS:
疑问3答案:
每个节点的内存大小是在配置文件中配置的,不是hadoop自动识别的,默认的就是8GB

你可能感兴趣的:(Hadoop学习笔记【12】-Hadoop2.1全分布式集群安装)