前言
折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。
为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署完了。部署的脚本我放在了开源中国的git仓库里(http://git.oschina.net/snake1361222/hadoop_scripts)。
本文的所有部署都基于cloudera公司的CDH4,CDH4是cloudera公司包装好的hadoop生态圈一系列yum包,把CDH4放到自己的yum仓库中,能极大的提高hadoop环境部署的简易性。
本文的部署过程中涵盖了namenode的HA实现,hadoop管理的解决方案hadoop配置文件的同步,快速部署脚本等)。
环境准备
一共用5台机器作为硬件环境,全都是centos 6.4
namenode & resourcemanager 主服务器: 192.168.1.1
namenode & resourcemanager 备服务器: 192.168.1.2
datanode & nodemanager 服务器: 192.168.1.100 192.168.1.101 192.168.1.102
zookeeper 服务器集群(用于namenode 高可用的自动切换): 192.168.1.100 192.168.1.101
jobhistory 服务器(用于记录mapreduce的日志): 192.168.1.1
用于namenode HA的NFS: 192.168.1.100
环境部署
一、加入CDH4的YUM仓库
1.最好的办法是把cdh4的包放到自建的yum仓库中,如何自建yum仓库请看 自建YUM仓库
2.如果不想自建yum仓库,在所有的hadoop机器执行以下操作加入cdn4的yum仓库
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm sudo yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm
二、创建用于namenode HA的NFS服务器
1.登录192.168.1.100,执行以下脚本 createNFS.sh
#!/bin/bash yum -y install rpc-bind nfs-utils mkdir -p /data/nn_ha/ echo "/data/nn_ha *(rw,root_squash,all_squash,sync)" >> /etc/exports /etc/init.d/rpcbind start /etc/init.d/nfs start chkconfig --level 234 rpcbind on chkconfig -level 234 nfs on
三、Hadoop Namenode & resourcemanager 主服务器 环境部署
1.登录192.168.1.1,创建脚本目录,把脚本从git仓库复制下来
yum –y install git mkdir –p /opt/ cd /opt/ git clone http://git.oschina.net/snake1361222/hadoop_scripts.git /etc/init.d/iptables stop
2.修改hostname
sh /opt/hadoop_scripts/deploy/AddHostname.sh
3.修改部署脚本的配置文件
vim /opt/kingsoft/hadoop_scripts/deploy/config #添加master服务器的地址,也就是namenode主服务器 master="192.168.1.1" #添加nfs服务器地址 nfsserver="192.168.1.100"
4.编辑hosts文件(此文件会同步到hadoop集群所有机器)
vim /opt/hadoop_scripts/share_data/resolv_host 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.1 nn.dg.hadoop.cn 192.168.1.2 nn2.dg.hadoop.cn 192.168.1.100 dn100.dg.hadoop.cn 192.168.1.101 dn101.dg.hadoop.cn 192.168.1.102 dn102.dg.hadoop.cn
5.执行部署脚本CreateNamenode.sh
sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
6.搭建saltstack master
PS:类似于puppet的服务器管理开源工具,比较轻量,在这里用于管理hadoop集群,调度datanode,关于saltstack的详细请看 SaltStack部署与使用
a.安装
yum -y install salt salt-master
b.修改配置文件`/etc/salt/master`,下面标志的是需要修改的项
修改监听IP: interface: 0.0.0.0 多线程池: worker_threads: 5 开启任务缓存:官方描叙开启缓存能承载5000minion) job_cache 开启自动认证: auto_accept: True
c.开启服务
/etc/init.d/salt-master start chkconfig salt-master on
7.部署过程中已经把我的sample配置复制过去了,所以只需要修改部分配置文件
a. /etc/hadoop/conf/hdfs-site.xml (其实就是按实际修改主机名地址)
<property>
<name>dfs.namenode.rpc-address.mycluster.ns1</name>
<value>nn.dg.hadoop.cn:8020</value>
<description>定义ns1的rpc地址</description>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.ns2</name>
<value>nn2.dg.hadoop.cn:8020</value>
<description>定义ns2的rpc地址</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>dn100.dg.hadoop.cn:2181,dn101.dg.hadoop.cn:2181,dn102.dg.hadoop.cn:2181,</value>
<description>指定用于HA的ZooKeeper集群机器列表</description>
</property>b. mapred-site.xml
<property> <name>mapreduce.jobhistory.address</name> <value>nn.dg.hadoop.cn:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>nn.dg.hadoop.cn:19888</value> </property>
c. yarn-site.xml
<property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>nn.dg.hadoop.cn:8031</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>nn.dg.hadoop.cn:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>nn.dg.hadoop.cn:8030</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>nn.dg.hadoop.cn:8033</value> </property>
三、Hadoop Namenode & resourcemanager 备服务器 环境部署
1.登录192.168.1.2,创建脚本目录,从主服务器把脚本同步过来
/etc/init.d/iptables stop mkdir –p /opt/hadoop_scripts rsync –avz 192.168.1.1::hadoop_s /opt/hadoop_scripts
2.执行部署脚本CreateNamenode.sh
sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
3.同步hadoop配置文件
rsync –avz 192.168.1.1::hadoop_conf /etc/hadoop/conf
4.部署saltstack客户端
sh /opt/hadoop_scripts/deploy/salt_minion.sh
四、zookeeper服务器集群部署
zookeeper是一个开源分布式服务,在这里用于namenode 的auto fail over功能。
1.安装
yum install zookeeper zookeeper-server
2.修改配置文件/etc/zookeeper/conf/zoo.cfg
maxClientCnxns=50 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/var/lib/zookeeper # the port at which the clients will connect clientPort=2181 #这里指定zookeeper集群内的所有机器,此配置集群内机器都是一样的 server.1=dn100.dg.hadoop.cn :2888:3888 server.2=dn101.dg.hadoop.cn:2888:3888
3.指定当前机器的id,并开启服务
#

