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

2. 准备

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

还需要设置系统的/etc/hosts文件,将集群中各个节点的ip和主机名加入文件中:
172.16.0.198 h1-1
172.16.0.199 h1-2
172.16.0.200 h1-3
172.16.0.201 h1-4
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设置:

  
    fs.defaultFS
    hdfs://h1-1:9000
  

hdfs-site.xml设置:

  
    dfs.namenode.name.dir
    /home/xc/dfs/name
  
  
    dfs.datanode.data.dir
    /home/xc/dfs/data
  
  
    dfs.replication
    3
  

mapred-site.xml文件需要自己创建,配置如下:

  
    mapreduce.framework.name
    yarn
  
  
    mapreduce.jobhistory.address
    h1-2:10020
  
  
    mapreduce.jobhistory.webapp.address
    h1-2:19888
  
  
    mapreduce.jobhistory.intermediate-done-dir
    /mr-history/tmp
  
  
    mapreduce.jobhistory.done-dir
    /mr-history/done
  

虽然这里配置了jobhistory的web端口,但启动hadoop后,访问这个端口没有响应。telnet上面那两个端口也木有响应,暂时不知道为毛,但是不影响hdfs和跑mapreduce。

yarn-site.xml配置:

  
    yarn.nodemanager.aux-services
    mapreduce.shuffle
  
   
    The address of the applications manager interface in the RM. 
    yarn.resourcemanager.address 
    h1-2:18040 
   
   
    The address of the scheduler interface. 
    yarn.resourcemanager.scheduler.address 
    h1-2:18030 
   

   
    The address of the RM web application. 
    yarn.resourcemanager.webapp.address 
    h1-2:18088 
   
  
   
    The address of the resource tracker interface. 
    yarn.resourcemanager.resource-tracker.address 
    h1-2:8025 
   

slaves配置:
h1-3
h1-4
h1-5

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

4. 启动

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

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

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

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

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

5. mapreduce

传一个文本文件到hdfs上,运行wordcount:
$ cd hadoop_home_dir
$ ./bin/hdfs dfs -put  
$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.1.0-beta.jar wordcount  

疑问:

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

作者:bhq2010 发表于2013-9-23 22:23:29 原文链接
阅读:68 评论:0 查看评论

你可能感兴趣的:(hadoop2,分布,集群)