成都网站建设设计

将想法与焦点和您一起共享

怎么部署Hadoop集群

本篇内容主要讲解“怎么部署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.***的办法是把cdh5的包放到自建的yum仓库中,如何自建yum仓库请看 自建YUM仓库

2.如果不想自建yum仓库,在所有的hadoop机器执行以下操作加入cdn4的yum仓库

wget http://archive.cloudera.com/cdh5/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 (其实就是按实际修改主机名地址)

   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 

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

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-cdh5.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-cdh5.2.1-tests.jar testmapredsort -sortInput random-data \ -sortOutput sorted-data

到此,相信大家对“怎么部署Hadoop集群”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享文章:怎么部署Hadoop集群
当前地址:http://chengdu.cdxwcx.cn/article/gijhdg.html