h版本控制
1. @Title CDH5 Hadoop集群完全离线安装步骤总结
2. @Version v1.0
3. @Timestamp 2015-12-14 14:25
4. @Author Nicholas
5. @Mail redskirt@outlook.com
1. 硬件准备
一个4节点的集群,Host对应关系如下:
1. 192.168.53.230 master
2. 192.168.53.231 slave01
3. 192.168.53.232 slave02
4. 192.168.53.233 slave03
服务器配置建议单节点CPU>双核,内存>8G。
2. 软件准备
- 系统环境CentOS6.5
- cloudera-manager-el6-cm5.3.8_x86_64.tar.gz(Cloudera Manager安装包)
- CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha1
- CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel(CDH离线资源包)
- manifest.json
- mysql-connector-java-5.1.33-bin.jar
- Jdk 1.7
CDH相关包的下载地址: - http://archive.cloudera.com/cm5/cm/5/
- http://archive.cloudera.com/cdh5/parcels/latest/
注意: 由于官方版本众多,一定要注意根据系统选择对应版本,本文使用的CentOS6.5系列系统要使用cloudera-manager-el6-.tar.gz安装包及CDH-5.3.8-1.cdh5.3.8.p0.5-.parcel离线资源。若版本选择有误安装过程中也会出现错误。
与CDH4的不同,原来安装CDH4的时候还需要下载IMPALA、Cloudera Search(SOLR),CDH5中将他们包含在一起了,所以只需要下载一个CDH5的包就可以了。
准备好以上环境就可以正式进行部署了。
一、准备环境
以下操作均使用root用户。
- 网络配置(所有节点)
分别修改各节点/etc/sysconfic/network文件,设置主机名为master,slave[01~03]。
1. [root@master ~]# cat /etc/sysconfig/network
2. NETWORKING=yes
3. NETWORKING_IPV6=no
4. HOSTNAME=master
重启网络服务生效
修改/etc/hosts文件,配置主机与IP对应关系(所有节点),让所有节点都保持如下对应关系:
1. [root@master ~]# service network restart
2. Shutting down loopback interface: [ OK ]
3. Bringing up loopback interface: [ OK ]
4. Bringing up interface Auto_eth1: Active connection state: activated
5. Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/2
6. [ OK ]
1. [root@master ~]# cat /etc/hosts
2. 127.0.0.1 localhost.localdomain localhost
3. ::1 localhost6.localdomain6 localhost6
4.
5. 192.168.53.230 master
6. 192.168.53.231 slave01
7. 192.168.53.232 slave02
8. 192.168.53.233 slave03
- 打通master至slave[01~03]节点的SSH免密登陆
在主节点上执行 ssh-keygen -t rsa三次回车,生成无密码的密钥对,root用户下默认在~/.ssh/目录中,如没有.ssh目录则使用mkdir ~/.ssh新建一个即可。
1. [root@master ~]# ssh-keygen -t rsa
2. Generating public/private rsa key pair.
3. Enter file in which to save the key (/root/.ssh/id_rsa):
4. Enter passphrase (empty for no passphrase):
5. Enter same passphrase again:
6. Your identification has been saved in /root/.ssh/id_rsa.
7. Your public key has been saved in /root/.ssh/id_rsa.pub.
8. The key fingerprint is:
9. f4:9a:be:43:e7:0b:e4:99:aa:61:e6:c6:61:1e:fb:e4 root@master
10. The key's randomart image is:
11. +--[ RSA 2048]----+
12. | |
13. | |
14. | . |
15. | . . |
16. | S . |
17. | + o.=. |
18. | +++..Bo |
19. | +=+ o... |
20. | .ooE oo.. |
21. +-----------------+
将公钥添加到认证文件中:
1. [root@master ~]# cat ~/.ssh/id_rsa.pub >> authorized_keys
2. [root@master ~]# ls ~/.ssh #authorized_keys即需要的认证文件
3. authorized_keys id_rsa id_rsa.pub known_hosts
设置authorized_keys的访问权限: chmod 600 ~/.ssh/authorized_keys。
scp文件到所有slave[01~03]节点:
1. [root@master ~]# scp ~/.ssh/authorized_keys root@slave01:~/.ssh/
测试: 在主节点上ssh slave[01~03],若不需要密码就能直接登陆进去了表示配置成功。
- 在所有节点安装jdk1.7(略)
- 安装Mysql(master节点)(略)
JDK与Mysql安装可参考基础环境配置汇总篇进入mysql并创建以下数据库:
1. [root@master ~]# mysql -h localhost -u root -p
2. mysql> show databases;
3. +---------------------------+
4. | Database |
5. +---------------------------+
6. | information_schema |
7. | cm |
8. | cm_ |
9. | hive |
10. | mysql |
11. | navigator_audit_server |
12. | navigator_metadata_server |
13. | reports_manager |
14. | test |
15. +---------------------------+
16. 9 rows in set (0.19 sec)
17.
18. #hive
19.
20. create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
此处数据库暂未创建也没关系,可在部署上Cloudera Manager已经配置好需要的服务之后再创建所需数据库即可。
- 关闭防火墙和SELinux(所有节点)
注意:需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
1. service iptables stop #临时关闭
2. chkconfig iptables off #重启后生效
关闭SELINUX:
1. setenforce 0 #临时生效
2. 或
3. 修改/etc/selinux/config 文件的 SELINUX=disabled #重启生效
- 配置NTP服务(所有节点)(略)
ntp服务的配置可参考基础环境配置汇总篇
二、安装Cloudera Manager Server和Agent
- 在master节点解压安装包至/opt默认目录
1. [root@master ~]# cd /usr/application/tmp/
2. [root@master tmp]# tar -zxvf cloudera-manager-el6-cm5.3.8_x86_64.tar.gz -C /opt
- 为Cloudera Manager 5建立数据库
将准备好的mysql-connector-java-5.3.5-bin.jar文件放到/opt/cm-5.3.5/share/cmf/lib/中。
1. [root@master tmp]# cp mysql-connector-java-5.1.35.jar /opt/cm-5.3.8/share/cmf/lib/
在master节点初始化CM5的数据库
1. [root@master tmp]# /opt/cm-5.3.5/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
- 配置Agent
修改/opt/cm-5.3.8/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名master。
1. [root@master ~]# vim /opt/cm-5.3.8/etc/cloudera-scm-agent/config.ini
2.
3. [General]
4.
5. # Hostname of the CM server.
6.
7. server_host=master
同步Agent到slave[01~03]节点
1. [root@master ~]# scp /opt/cm-5.3.8/ root@slave01:/opt/
- 在所有节点创建cloudera-scm用户
1. useradd --system --home=/opt/cm-5.3.8/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
- CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha1
- CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel
- manifest.json
最后将CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha1,重命名为CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha1,这点必须注意,否则,系统会重新下载CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha文件。
- 执行启动脚本
在master节点启动服务端:
[root@master ~]# /opt/cm-5.3.8/etc/init.d/cloudera-scm-server start
在所有节点启动Agent:
[root@slave01 ~]#/opt/cm-5.3.8/etc/init.d/cloudera-scm-agent start
以上脚本是启动命令,相关停止或重启命令仅需将start变成stop或restart即可。
二、配置CDH集群
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
在浏览器打开http://master:7180进入CDH管理界面,由于CM Server的启动需要花点时间,这里可能要等待一会才能访问,默认的用户名和密码均为admin。
选择安装的集群,这里注意只有已启动cloudera-scm-agent的主机才能被CM管理。
选择我们安装需要的Parcel包,这里可以看到我们已准备好的CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel包,若没有,就检查相关文件是否正确放入/parcel-repos中,且CDH-5.3.8-1.cdh5.3.8.p0.5-el6.parcel.sha1是否正确重命名。
继续,如果上一步检查配置没问题,这里的第一个进度条应该瞬间完成,CM不需要再向用品下载Parcel,然后等待CM将Parcel分发到各slave节点上并激活。
CM会检测集群很多环境项,
此处如果出现以下警告,是一个默认环境变量的问题,Cloudera建议将/proc/sys/vm/swappiness设置为0,当前设置为 60。在所有节点执行以下命令:
[root@master ~] #echo 0 > /proc/sys/vm/swappiness # 将该环境变量临时设置为0
选择需要在集群中部署的Hadoop服务,这里可以选择推荐的内核,当然也可以选择自定义服务。为了保险起见我先仅安装需要的HDFS、YARN、MapReduce、Hive等组件,安装太多不需要的服务在运行过程中会占用较多资源,且选择服务过多到下一步初始化和启动各节点角色的时候会花费大量时间。
这里不必担心没安装的服务以后有需要怎么办,在CM管理控制台中还可以随时对各节点的服务进行添加和变更。
分配各节点的角色,如无特殊需求这里保持默认即可。
所安装的角色有些需要用到数据库,则在mysql中新建相应数据库即可。进行下一步之前必须测试数据库的连通性。
[root@master ~]# mysql -h localhost -u root -p
# 新建hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
设置服务所需的目录结构,若无特殊需求这里也可以保持默认目录结构。
接下来就等待初始化和启动服务,这里可能会遇到Hive报错的问题,因为我们选择了Mysql作为hive的元数据存储,查看日志知道是Hive初始化Mysql的时候找不到jar文件,将mysql-connector-java-5.1.33-bin.jar拷贝到hive存放jar文件的目录重试即可。
[root@master ~]# cp /opt/cm-5.3.8/share/cmf/lib/mysql-connector-java-5.1.33-bin.jar /opt/cloudera/parcels/CDH-5.3.8-1.cdh5.3.8.p0.12/lib/hive/lib/
如果服务都启动成功,这个集群已安装上所需要的Hadoop服务,整个部署过程结束。
在浏览器中输入master地址访问Cloudera Manager,端口7180。
发现有些报红的服务,也可能会出现“无法发出查询:对Service Monitor的请求超时”的错误提示,如果各个组件安装没有问题,一般是因为服务器较卡导致,CM监控集群会耗费较多资源,等待一段时间后会正常。
访问http://master:50070查看HDFS控制台。
访问http://master:8088查看YARN控制台。
1: https://www.zybuluo.com/sasaki/note/242394