您的位置:首页 > Web前端 > Node.js

Hadoop (CDH4发行版)集群部署 (部署脚本,namenode高可用,hadoop管理) 推荐

2013-07-25 15:23 525 查看

前言

折腾了一段时间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仓库

二、创建用于namenode HA的NFS服务器

1.登录192.168.1.100,执行以下脚本 createNFS.sh

三、Hadoop Namenode & resourcemanager 主服务器 环境部署

1.登录192.168.1.1,创建脚本目录,把脚本从git仓库复制下来

2.修改hostname

3.修改部署脚本的配置文件

4.编辑hosts文件(此文件会同步到hadoop集群所有机器)

5.执行部署脚本CreateNamenode.sh

6.搭建saltstack master

PS:类似于puppet的服务器管理开源工具,比较轻量,在这里用于管理hadoop集群,调度datanode,关于saltstack的详细请看 SaltStack部署与使用

a.安装

b.修改配置文件`/etc/salt/master`,下面标志的是需要修改的项

c.开启服务

7.部署过程中已经把我的sample配置复制过去了,所以只需要修改部分配置文件

a. /etc/hadoop/conf/hdfs-site.xml (其实就是按实际修改主机名地址)

b. mapred-site.xml

c. yarn-site.xml

三、Hadoop Namenode & resourcemanager 备服务器 环境部署

1.登录192.168.1.2,创建脚本目录,从主服务器把脚本同步过来

2.执行部署脚本CreateNamenode.sh

3.同步hadoop配置文件

4.部署saltstack客户端

四、zookeeper服务器集群部署

zookeeper是一个开源分布式服务,在这里用于namenode 的auto fail over功能。

1.安装

2.修改配置文件/etc/zookeeper/conf/zoo.cfg

3.指定当前机器的id,并开启服务

五、datanode & nodemanager 服务器部署

1.登录datanode机器,创建脚本目录,从主服务器把脚本同步过来

2.修改hostname,执行部署脚本 CreateDatanode.sh

集群初始化

到这里,hadoop集群的环境已部署完毕,现在开始初始化集群

一、namenode的HA高可用初始化

1.在namenode主服务器(192.168.1.1)执行zookeeper的failover功能格式化

2.把zookeeper集群服务启动(192.168.1.100 192.168.1.101 )

3.把namenode主备服务器的zkfc服务起来(192.168.1.1 192.168.1.2)

4.在namenode主服务器(192.168.1.1)格式化hdfs

5.第一次搭建namenode高可用,需要把name.dir下面的数据复制到namenode备服务器(此坑花了好多时间)

a.在主服务器(192.168.1.1)执行

b.在备服务器(192.168.1.2)执行

6.主从服务都启动

7.查看hdfs的web界面

8.现在可以尝试关闭namenode主服务,看是否能主从切换

二、hdfs集群开启

到这里,所有hadoop部署已完成,现在开始把集群启动,验证效果

1.把所有datanode服务器启动

2.查看hdfs web界面,看是否都成为live nodes

3.如果没有问题,现在可以尝试hdfs操作

三、yarn集群开启

hadoop除了hdfs用于大数据的分布式存储,还有更重要的组件,分布式计算(mapreduce)。现在我们来把mapreducev2 yarn集群启动

1.在主服务器把resourcemanager服务起来(192.168.1.1)

2.把所有nodemanager服务启动

3.查看yarn 任务追踪界面(http://192.168.1.1:9081/),看是否所有nodes都已加入

4.hadoop自带有基准测试的mapreduce实例,我们利用它来测试yarn环境是否正常

Hadoop集群的管理

一、datanode & nodemanager 节点加入

1.修改hosts表,譬如有节点192.168.1.103需要加入

2.修改hostname,同步脚本目录,并执行部署

3.开启服务

二、修改hadoop配置文件

一般在一个hadoop集群中维护一份hadoop配置,这份hadoop配置需要分发到集群中各个成员。这里的做法是 salt + rsync

三、监控

比较普遍的方案是,ganglia和nagios监控,ganglia收集大量度量,以图形化程序,nagios在某度量超出阀值后报警.ganglia监控以后补充一下文档
其实,hadoop自带有接口提供我们自己写监控程序,而且这个接口还是比较简单,通过这样便可以访问http://192.168.1.1:9080/jmx,返回值是JSON格式,其中的内容也非常详细。但是每次查询都返回一大串的JSON也是浪费,其实接口还提供更新详细的查询 譬如我只想查找系统信息,可以这样调用接口 http://192.168.1.1:9080/jmx?qry=java.lang:type=OperatingSystem 。qry参考后跟的就是整个JSON的“name”这个key的值

总结

在折腾hadoop集群的部署是还是遇到了很多坑,打算下篇写自己所遭遇的问题。通过本文部署遇到问题的可以联系一下我,互相交流一下。QQ:83766787。当然也欢迎大家一起修改部署的脚本,git地址是http://git.oschina.net/snake1361222/hadoop_scripts
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息