贫农的大数据之五(Hadoop集群部署)

Hadoop部署的文章和介绍网上资料很丰富,涉及各个方面,所以笔者不是要详细介绍如何部署Hadoop,而是以反思为主,记录我们曾经走过的弯路和一些体会。

Hadoop部署

  1. 环境
    机器配置 Centos6.3,CPU: E5507  2.27GHz  4Core,内存:16G,硬盘:8*500G NORAID SCSI,文件系统:XFS
    IP分别为:192.168.0.120/121/122/123/124/125/126/26/27/28
    无DNS服务器
    NameNode/JobTracker:192.168.0.120
    DataNode/TaskTracker:192.168.0.121/122/123/124/125/126/26/27/28
    Apache Hadoop1.0.4(后来升级到了1.2.1)
    SUN JDK 1.6
    Tips:对于只为hadoop使用的磁盘分区使用noatime挂载,提高性能,使用如下命令
    mount -o noatime -o nodiratime -o remount /data

  2. 目录规划
    为了简化以后升级,将Hadoop解压到一个特定的目录中,如hadoop-versions。然后通过软链接的方式将在用的hadoop版本链接到一个常用的位置,例如:
    ll /usr/local/hadoop-versions/
    total 8
    drwxr-xr-x 15 root root 4096 Mar 26 15:25 hadoop-1.0.4
    drwxr-xr-x 15 root root 4096 Mar 26 16:38 hadoop-1.2.1
    
    ll /opt/ |grep hadoop
    lrwxrwxrwx   1 root root        34 Apr 11 09:30 hadoop -> /letv/hadoop-versions/hadoop-1.2.1
    

  3. 配置主机名
    主机名使用FQDN的形式,确保反向DNS查找可靠准确;但是为了方便管理也需加上缩略域名,例如我的/etc/hosts
    192.168.0.120	mn.dm.com	mn
    192.168.0.121	dn121.dm.com	dn121
    192.168.0.122	dn122.dm.com	dn122
    192.168.0.123	dn123.dm.com	dn123
    192.168.0.124	dn124.dm.com	dn124
    192.168.0.126	dn125.dm.com	dn125
    192.168.0.126	dn126.dm.com	dn126
    192.168.0.26	dn26.dm.com	dn26
    192.168.0.27 	dn27.dm.com	dn27
    192.168.0.28 	dn28.dm.com	dn28
    按照规划的内容来编辑所有节点的/etc/hosts。然后修改每个节点的主机名,首先使用hostname命令让主机名立即生效,如
    hostname mn.dm.com
    然后为了确保服务器重启后主机名仍然有效,编辑/etc/sysconfig/network文件,修改HOSTNAME属性为对应值。
    Tips:
    (a)千万别忘记修改这个文件放在机器重启域名丢失;
    (b)对于hadoop集群的配置管理、文件分发来说,例如修改/etc/hosts,可以使用pssh、pdsh或者mussh这些工具,如果有条件就使用Puppet这样的重器。我们目前用的是pssh,对于我们这个小集群来说已经觉得生活很惬意了。

  4. 配置SSH无密码登陆
    在NameNode节点运行
    ssh-keygen -t dsa -f ~/.ssh/id_dsa
    这个命令会生成两个文件到~/.ssh/目录中:id_dsa和id_dsa.pub。把 id_dsa.pub 追加到本机授权 key 里面 
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    至此,就可以实现本机的无密码登陆,运行ssh localhost试试看吧。类似的操作,将NameNode上的这个id_dsa.pub分发到所有其它节点上,然后追加到每个节点的
    authorized_keys里,就可以实现从NameNode到任何DateNode的ssh无密码登陆了

  5. 安装配置hadoop
    登陆NameNode进行以下操作
    安装没有什么,按照之前的目录规划解压hadoop即可。
    配置hadoop不要单纯拷贝缺省配置到conf目录下,然后更改需要的属性,这样以后维护起来太麻烦了。
    作为小团队来说,我们的原则是不要一上来就拷贝别人的配置文件,因为应用场景不同,环境不同,许多参数配置并不是万能的,而是只修改必要的属性。在以后的使用中很可能会由于某些属性未正确设置,造成集群出现这样或那样的问题,但是我觉得让问题暴漏出来不是什么坏事情,发现问题之后再查找相关资料进行正确的调整优化,不但保证了配置的简单性,还能让你真正的一步一步的了解hadoop。
    配置的文件主要涉及conf下的hadoop-env.sh、masters、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties。
    配置完成后使用pssh分发到其它节点,例如:
    #分发hadoop安装(如果hadoop-versions已经存在,只拷贝hadoop特定版本目录即可)
    #hosts.txt是DataNode节点的主机名列表,详见pssh手册
    pscp.pssh -h hosts.txt -r /usr/local/hadoop-versions/ /usr/local/hadoop-versions/
    #创建软链接
    pssh -h hosts.txt -i "ln -s /letv/hadoop-versions/hadoop-1.2.1 /opt/hadoop"

  6. 配置环境变量
    在/etc/profile中配置必要的环境变量。如下:
    JAVA_HOME=/usr/java/jdk1.6.0_43
    HADOOP_HOME=/opt/hadoop
    HBASE_HOME=/opt/hbase-0.94.7
    PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATH
    CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    export HADOOP_HOME
    export HBASE_HOME
    export PATH
    export CLASSPATH

  7. 使用Hadoop
    启动集群。
    HDFS的web界面:http://mn.dm.com:50070/dfshealth.jsp
    MapReduce的web界面:http://mn.dm.com:50030/jobtracker.jsp

Hadoop版本历史

下图给出了Hadoop2之前的各个版本发展历史



Hadoop当前配置

这些配置仅做参考
  1. hadoop-env.sh
    export JAVA_HOME=/usr/java/jdk1.6.0_43
    export HADOOP_LOG_DIR=/mycom/logs/hadoop
    export HADOOP_PID_DIR=/var/hadoop/pids

  2. core-site.sh
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/data/slot1/hadoop-${user.name}</value>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://mn:9000</value>
    </property>
    
    <property>
      <name>hadoop.proxyuser.xxx.groups</name>
      <value>xxx</value>
    </property>
    
    <property>
      <name>hadoop.proxyuser.xxx.hosts</name>
      <value>dn124,dn126</value>
    </property>
    
    <property>
      <name>fs.trash.interval</name>
      <value>1440</value>
    </property>


  3. hdfs-site.xml
    <property>
      <name>dfs.data.dir</name>
      <value>${hadoop.tmp.dir}/dfs/data,/data/slot2/hadoop-${user.name}/dfs/data,/data/slot3/hadoop-${user.name}/dfs/data,/data/slot4/hadoop-${user.name}/dfs/data,/data/slot5/hadoop-${user.name}/dfs/data,/data/slot6/hadoop-${user.name}/dfs/data</value>
    </property>
    
    <property>
     <name>dfs.datanode.max.xcievers</name>
     <value>4096</value>
    </property>

  4. mapred-site.xml
    <property>
      <name>mapred.job.tracker</name>
      <value>mn:9001</value>
    </property>
    
    <property>
      <name>mapred.local.dir</name>
      <value>${hadoop.tmp.dir}/mapred/local,/data/slot2/hadoop-${user.name}/mapred/local,/data/slot3/hadoop-${user.name}/mapred/local,/data/slot4/hadoop-${user.name}/mapred/local,/data/slot5/hadoop-${user.name}/mapred/local,/data/slot6/hadoop-${user.name}/mapred/local</value>
    </property>
    
    <property>
      <name>mapred.tasktracker.map.tasks.maximum</name>
      <value>4</value>
    </property>
    
    <property>
      <name>mapred.tasktracker.reduce.tasks.maximum</name>
      <value>4</value>
    </property>
    
    <property>
      <name>mapred.child.java.opts</name>
      <value>-Xmx1024m</value>
    </property>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值