设为首页 收藏本站
查看: 1608|回复: 0

[经验分享] Hadoop (CDH4发行版)集群部署 (部署脚本,namenode高可用,hadoop管理)

[复制链接]

尚未签到

发表于 2015-11-26 12:19:18 | 显示全部楼层 |阅读模式
前言
  部署的脚本网址:(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仓库
12wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpmsudo yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm
二、创建用于namenode HA的NFS服务器

1.登录192.168.1.100,执行以下脚本 createNFS.sh
12345678#!/bin/bashyum -y installrpc-bind nfs-utilsmkdir -p /data/nn_ha/echo "/data/nn_ha  *(rw,root_squash,all_squash,sync)" >> /etc/exports/etc/init.d/rpcbindstart/etc/init.d/nfs startchkconfig  --level 234 rpcbind   onchkconfig  -level 234 nfs  on
三、Hadoop Namenode & resourcemanager 主服务器 环境部署
1.登录192.168.1.1,创建脚本目录,把脚本从git仓库复制下来
  

12345yum –y installgitmkdir –p /opt/cd /opt/git clone http://git.oschina.net/snake1361222/hadoop_scripts.git/etc/init.d/iptablesstop
2.修改hostname
1sh /opt/hadoop_scripts/deploy/AddHostname.sh
3.修改部署脚本的配置文件
12345vim /opt/kingsoft/hadoop_scripts/deploy/config#添加master服务器的地址,也就是namenode主服务器master="192.168.1.1"#添加nfs服务器地址nfsserver="192.168.1.100"
4.编辑hosts文件(此文件会同步到hadoop集群所有机器)
12345678vim /opt/hadoop_scripts/share_data/resolv_host127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.1 nn.dg.hadoop.cn192.168.1.2 nn2.dg.hadoop.cn192.168.1.100 dn100.dg.hadoop.cn192.168.1.101 dn101.dg.hadoop.cn192.168.1.102 dn102.dg.hadoop.cn
5.执行部署脚本CreateNamenode.sh
1sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
6.搭建saltstack master
  PS:类似于puppet的服务器管理开源工具,比较轻量,在这里用于管理hadoop集群,调度datanode,关于saltstack的详细请看 SaltStack部署与使用
a.安装
1yum -y installsalt salt-master
b.修改配置文件`/etc/salt/master`,下面标志的是需要修改的项
12345678修改监听IP:interface: 0.0.0.0多线程池:worker_threads: 5开启任务缓存:(官方描叙开启缓存能承载5000minion)job_cache开启自动认证:auto_accept: True
  c.开启服务
12/etc/init.d/salt-masterstartchkconfig  salt-master on
7.部署过程中已经把我的sample配置复制过去了,所以只需要修改部分配置文件
a. /etc/hadoop/conf/hdfs-site.xml (其实就是按实际修改主机名地址)
123456789101112131415<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
12345678<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
12345678910111213141516<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,创建脚本目录,从主服务器把脚本同步过来
123/etc/init.d/iptablesstopmkdir –p /opt/hadoop_scriptsrsync –avz 192.168.1.1::hadoop_s   /opt/hadoop_scripts
2.执行部署脚本CreateNamenode.sh
1sh /opt/hadoop_scripts/deploy/CreateNamenode.sh
3.同步hadoop配置文件
1rsync –avz 192.168.1.1::hadoop_conf  /etc/hadoop/conf
4.部署saltstack客户端
1sh /opt/hadoop_scripts/deploy/salt_minion.sh
四、zookeeper服务器集群部署
  zookeeper是一个开源分布式服务,在这里用于namenode 的auto fail over功能。
1.安装
1yum installzookeeper zookeeper-server
2.修改配置文件/etc/zookeeper/conf/zoo.cfg
12345678910111213141516maxClientCnxns=50# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.dataDir=/var/lib/zookeeper# the port at which the clients will connectclientPort=2181#这里指定zookeeper集群内的所有机器,此配置集群内机器都是一样的server.1=dn100.dg.hadoop.cn :2888:3888server.2=dn101.dg.hadoop.cn:2888:3888
3.指定当前机器的id,并开启服务
1234567#譬如当前机器是192.168.1.100(dn100.dg.hadoop.cn),它是server.1,id是1,SO:echo &quot;1&quot; >  /var/lib/zookeeper/myidchown -R zookeeper.zookeeper /var/lib/zookeeper/service zookeeper-server init/etc/init.d/zookeeper-serverstartchkconfig zookeeper-server on#如此类推,部署192.168.1.101
五、datanode & nodemanager 服务器部署
1.登录datanode机器,创建脚本目录,从主服务器把脚本同步过来
123/etc/init.d/iptablesstopmkdir –p /opt/hadoop_scriptsrsync –avz 192.168.1.1::hadoop_s   /opt/hadoop_scripts
2.修改hostname,执行部署脚本 CreateDatanode.sh
12sh /opt/hadoop_scripts/deploy/AddHostname.shsh /opt/hadoop_scripts/deploy/CreateDatanode.sh
集群初始化
  到这里,hadoop集群的环境已部署完毕,现在开始初始化集群
一、namenode的HA高可用初始化
1.在namenode主服务器(192.168.1.1)执行zookeeper的failover功能&#26684;式化
1sudo –u hdfs hdfs zkfc –formatZK
2.把zookeeper集群服务启动(192.168.1.100  192.168.1.101 )
1/etc/init.d/zookeeper-serverstart
3.把namenode主备服务器的zkfc服务起来(192.168.1.1  192.168.1.2)
1/etc/init.d/hadoop-hdfs-zkfcstart
4.在namenode主服务器(192.168.1.1)&#26684;式化hdfs
12#确保是用hdfs用户&#26684;式化sudo -u hdfs hadoop namenode –format
5.第一次搭建namenode高可用,需要把name.dir下面的数据复制到namenode备服务器(此坑花了好多时间)
a.在主服务器(192.168.1.1)执行
12tar -zcvPf /tmp/namedir.tar.gz/data/hadoop/dfs/name/nc -l 9999 < /tmp/namedir.tar.gz
b.在备服务器(192.168.1.2)执行
12wget 192.168.1.1:9999 -O/tmp/namedir.tar.gztar -zxvPf /tmp/namedir.tar.gz
6.主从服务都启动
12/etc/init.d/hadoop-hdfs-namenodestart/etc/init.d/hadoop-yarn-resourcemanagerstart
7.查看hdfs的web界面
  
12345http://192.168.1.1:9080http://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服务器启动
12#还记得之前搭建的saltstack管理工具不,现在开始发挥它的作用,登录saltstack master(192.168.1.1)执行salt -v&quot;dn*&quot; cmd.run &quot;/etc/init.d/hadoop-hdfs-datanode start&quot;
2.查看hdfs web界面,看是否都成为live nodes
3.如果没有问题,现在可以尝试hdfs操作
12345678910#创建一个tmp目录sudo -u hdfs hdfs dfs -mkdir /tmp#创建一个10G大小的空文件,计算它的MD5&#20540;,并放入hdfsdd if=/dev/zeroof=/data/test_10G_filebs=1G count=10md5sum /data/test_10G_filesudo -u hdfs hdfs dfs -put /data/test_10G_file /tmpsudo -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)
1/etc/init.d/hadoop-yarn-resourcemanagerstart
2.把所有nodemanager服务启动
12#还是登陆saltstack master,执行salt -v&quot;dn*&quot; cmd.run &quot;/etc/init.d/hadoop-yarn-nodemanager start&quot;
3.查看yarn 任务追踪界面(http://192.168.1.1:9081/),看是否所有nodes都已加入
4.hadoop自带有基准测试的mapreduce实例,我们利用它来测试yarn环境是否正常
1234567891011#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.jarsort 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集群的管理
一、datanode & nodemanager 节点加入
1.修改hosts表,譬如有节点192.168.1.103需要加入
123456789vim /opt/hadoop_scripts/share_data/resolv_host127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.1 nn.dg.hadoop.cn192.168.1.2 nn2.dg.hadoop.cn192.168.1.100 dn100.dg.hadoop.cn192.168.1.101 dn101.dg.hadoop.cn192.168.1.102 dn102.dg.hadoop.cn192.168.1.103 dn103.dg.hadoop.cn
2.修改hostname,同步脚本目录,并执行部署
1234mkdir –p /opt/hadoop_scriptsrsync –avz 192.168.1.1::hadoop_s   /opt/hadoop_scriptssh /opt/hadoop_scripts/deploy/CreateDatanode.shsh /opt/hadoop_scripts/deploy/AddHostname.sh  

3.开启服务
12/etc/init.d/hadoop-hdfs-datanodestart/etc/init.d/hadoop-yarn-nodemanagerstart
二、修改hadoop配置文件
  一般在一个hadoop集群中维护一份hadoop配置,这份hadoop配置需要分发到集群中各个成员。这里的做法是 salt &#43; rsync
12345#修改namenode主服务器的hadoop配置文件  /etc/hadoop/conf/,然后执行以下命令同步到集群中所有成员sync_h_conf#脚本目录也是需要维护的,譬如hosts文件/opt/hadoop_scripts/share_data/resolv_host,修改后执行以下命令同步到集群中所有成员sync_h_script#其实这两个命令是我自己定义的salt命令的别名,查看这里/opt/hadoop_scripts/profile.d/hadoop.sh
三、监控
  比较普遍的方案是,ganglia和nagios监控,ganglia收集大量度量,以图形化程序,nagios在某度量超出阀&#20540;后报警.ganglia监控以后补充一下文档
  其实,hadoop自带有接口提供我们自己写监控程序,而且这个接口还是比较简单,通过这样便可以访问http://192.168.1.1:9080/jmx,返回&#20540;是JSON&#26684;式,其中的内容也非常详细。但是每次查询都返回一大串的JSON也是浪费,其实接口还提供更新详细的查询  譬如我只想查找系统信息,可以这样调用接口http://192.168.1.1:9080/jmx?qry=java.lang:type=OperatingSystem 。qry参考后跟的就是整个JSON的“name”这个key的&#20540;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143872-1-1.html 上篇帖子: 系统自动化配置和管理工具:SaltStack 下篇帖子: 用Saltstack部署ganglia的客户端gmond
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表