前言

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元涡阳做网站,已为上家服务,为涡阳各地企业和个人服务,联系电话:18980820575
折腾了一段时间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
环境部署
一、加入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
 
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 (其实就是按实际修改主机名地址)
dfs.namenode.rpc-address.mycluster.ns1 nn.dg.hadoop.cn:8020 定义ns1的rpc地址 dfs.namenode.rpc-address.mycluster.ns2 nn2.dg.hadoop.cn:8020 定义ns2的rpc地址 ha.zookeeper.quorum dn100.dg.hadoop.cn:2181,dn101.dg.hadoop.cn:2181,dn102.dg.hadoop.cn:2181, 指定用于HA的ZooKeeper集群机器列表 
b. mapred-site.xml
mapreduce.jobhistory.address nn.dg.hadoop.cn:10020 mapreduce.jobhistory.webapp.address nn.dg.hadoop.cn:19888 
#p#
c. yarn-site.xml
- property>
 yarn.resourcemanager.resource-tracker.address nn.dg.hadoop.cn:8031 yarn.resourcemanager.address nn.dg.hadoop.cn:8032 yarn.resourcemanager.scheduler.address nn.dg.hadoop.cn:8030 yarn.resourcemanager.admin.address nn.dg.hadoop.cn:8033 
三、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,并开启服务
- #譬如当前机器是192.168.1.100(dn100.dg.hadoop.cn),它是server.1,id是1,SO:
 - echo "1" > /var/lib/zookeeper/myid
 - chown -R zookeeper.zookeeper /var/lib/zookeeper/
 - service zookeeper-server init
 - /etc/init.d/zookeeper-server start
 - chkconfig zookeeper-server on
 - #如此类推,部署192.168.1.101
 
五、datanode & nodemanager 服务器部署
1.登录datanode机器,创建脚本目录,从主服务器把脚本同步过来
- /etc/init.d/iptables stop
 - mkdir –p /opt/hadoop_scripts
 - rsync –avz 192.168.1.1::hadoop_s /opt/hadoop_scripts
 
2.修改hostname,执行部署脚本 CreateDatanode.sh
- sh /opt/hadoop_scripts/deploy/AddHostname.sh
 - sh /opt/hadoop_scripts/deploy/CreateDatanode.sh
 
集群初始化
到这里,hadoop集群的环境已部署完毕,现在开始初始化集群
一、namenode的HA高可用初始化
1.在namenode主服务器(192.168.1.1)执行zookeeper的failover功能格式化
- sudo –u hdfs hdfs zkfc –formatZK
 
2.把zookeeper集群服务启动(192.168.1.100 192.168.1.101 )
- /etc/init.d/zookeeper-server start
 
3.把namenode主备服务器的zkfc服务起来(192.168.1.1 192.168.1.2)
- /etc/init.d/hadoop-hdfs-zkfc start
 
4.在namenode主服务器(192.168.1.1)格式化hdfs
- #确保是用hdfs用户格式化
 - sudo -u hdfs hadoop namenode –format
 
5.***次搭建namenode高可用,需要把name.dir下面的数据复制到namenode备服务器(此坑花了好多时间)
a.在主服务器(192.168.1.1)执行
- tar -zcvPf /tmp/namedir.tar.gz /data/hadoop/dfs/name/
 - nc -l 9999 < /tmp/namedir.tar.gz
 
b.在备服务器(192.168.1.2)执行
- wget 192.168.1.1:9999 -O /tmp/namedir.tar.gz
 - tar -zxvPf /tmp/namedir.tar.gz
 
#p#
6.主从服务都启动
- /etc/init.d/hadoop-hdfs-namenode start
 - /etc/init.d/hadoop-yarn-resourcemanager start
 
7.查看hdfs的web界面
- http://192.168.1.1:9080
 - http://192.168.1.2:9080
 - #如果在web界面看到两个namenode都是backup状态,那就是auto fail over配置不成功
 - #查看zkfc日志(/var/log/hadoop-hdfs/hadoop-hdfs-zkfc-nn.dg.s.kingsoft.net.log)
 - #查看zookeeper集群的日志(/var/log/zookeeper/zookeeper.log)
 
8.现在可以尝试关闭namenode主服务,看是否能主从切换
二、hdfs集群开启
到这里,所有hadoop部署已完成,现在开始把集群启动,验证效果
1.把所有datanode服务器启动
- #还记得之前搭建的saltstack管理工具不,现在开始发挥它的作用,登录saltstack master(192.168.1.1)执行
 - salt -v "dn*" cmd.run "/etc/init.d/hadoop-hdfs-datanode start"
 
2.查看hdfs web界面,看是否都成为live nodes
3.如果没有问题,现在可以尝试hdfs操作
- #创建一个tmp目录
 - sudo -u hdfs hdfs dfs -mkdir /tmp
 - #创建一个10G大小的空文件,计算它的MD5值,并放入hdfs
 - dd if=/dev/zero of=/data/test_10G_file bs=1G count=10
 - md5sum /data/test_10G_file
 - sudo -u hdfs hdfs dfs -put /data/test_10G_file /tmp
 - sudo -u hdfs hdfs dfs -ls /tmp
 - #现在可以尝试关闭一台datanode,然后把刚才的测试文件拉取出来,再算一次MD5看是否一样
 - sudo -u hdfs hdfs dfs -get /tmp/test_10G_file /tmp/
 - md5sum /tmp/test_10G_file
 
三、yarn集群开启
hadoop除了hdfs用于大数据的分布式存储,还有更重要的组件,分布式计算(mapreduce)。现在我们来把mapreducev2 yarn集群启动
1.在主服务器把resourcemanager服务起来(192.168.1.1)
- /etc/init.d/hadoop-yarn-resourcemanager start
 
2.把所有nodemanager服务启动
- #还是登陆saltstack master,执行
 - salt -v "dn*" cmd.run "/etc/init.d/hadoop-yarn-nodemanager start"
 
3.查看yarn 任务追踪界面(http://192.168.1.1:9081/),看是否所有nodes都已加入
4.hadoop自带有基准测试的mapreduce实例,我们利用它来测试yarn环境是否正常
- #TestDFSIO测试HDFS的读写性能,写10个文件,每个文件1G.
 - su hdfs -
 - hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.0.0-cdh4.2.1-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
 - #Sort测试MapReduce
 - ##向random-data目录输出数据
 - hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar randomwriter random-data
 - ##运行sort程序
 - hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar sort random-data sorted-data
 - ##验证sorted-data 文件是否排好序
 - hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-2.0.0-cdh4.2.1-tests.jar testmapredsort -sortInput random-data \
 - -sortOutput sorted-data
 
总结
在折腾hadoop集群的部署是还是遇到了很多坑,打算下篇写自己所遭遇的问题。通过本文部署遇到问题的可以联系一下我,互相交流一下。QQ:83766787。当然也欢迎大家一起修改部署的脚本,git地址是:http://git.oschina.net/snake1361222/hadoop_scripts
原文链接:http://lxcong.blog.51cto.com/7485244/1241004
                新闻标题:Hadoop集群部署(部署脚本,namenode高可用)
                
                本文路径:http://www.csdahua.cn/qtweb/news23/48023.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网