需要的前期准备:
- 离线包
CDH-5.11.1-1.cdh5.11.1.p0.4-el6.parcel
CDH-5.11.1-1.cdh5.11.1.p0.4-el6.parcel.sha1
manifest.json
地址:https://pan.baidu.com/s/11OhAYZnPDog_LNGsANcw0A 密码:hjdq
- JDBC驱动包:
mysql-connector-java-5.1.38-bin.jar
地址:https://pan.baidu.com/s/1RGL5_HBvGoqk3nZHK1UJ1Q 密码:tloj
这里用的jdbc驱动版本是:mysql-connector-java-5.1.38-bin.jar
一,环境搭建
- 硬件软件要求:
我这3台机器node1,node2,node3,node4,node5 作为主节点 node5。配置:16g内存,8核,如果是自己虚拟机的话master至少8g,因为装完集群(装了8个应用组件)node5的内存已用了7g多。(CDH是比较吃内存和硬盘的) - centos6.5 地址:https://pan.baidu.com/s/1OTAPpvni_JtTfKFiPTueQQ 密码:dlsd
- 网络配置(所有节点)
1.vi /etc/sysconfig/network修改hostname :NETWORKING=yesHOSTNAME=node5通过service network restart重启网络服务生效2. vi /etc/hosts,修改ip与主机名的对应关系192.168.0.179 node1192.168.0.178 node2192.168.0.177 node3192.168.0.176 node4192.168.0.175 node5
4.设置SSH无密码访问(所有节点)
我这边写了一个脚本,执行起来省去了很多问题,连接发给大家
链接:https://pan.baidu.com/s/1Gmxs3oY01zyAXB-U32c9pg 密码:iwn6
文件包括
1ssh_auth.sh 建立互信的脚本
3scp.sh 传输文件的脚本
all.sh 传输文件的脚本
hostname 配置文件(通信的各个主机名)
hostnames 配置文件 (通信的各个主机名)
大家可以打开文件自己看一下上面的操作
建立互信后可以进行测试 ssh + 主机名 看是否进行免密登录
5.安装Oracle Java(所有节点)
Centos6.5可能自带OpenJDK,但运行CDH5需要使用Oracle的JDK,我这边用的是 jdk-8u111-linux-x64.tar.gz
链接:https://pan.baidu.com/s/12Ez6CVjn_gG2DYRx_qLOXw 密码:eoca
卸载自带的OpenJDK** 使用下述命令查询相关的java包rpm -qa | grep java
使用-e选项填入包名卸载
rpm -e --nodeps packageName
安装oracle jdk 配置环境变量/etc/profile.再source使起生效这里不在这边详细说明
6.安装配置MySQL(主节点)
7.关闭防火墙和SELinux(所有节点)
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
service iptables stop (临时关闭) chkconfig iptables off (重启后生效)
关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):
setenforce 0 (临时生效) 修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
- 配置NTP服务(所有节点)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题,例如主机运行状态不良等。 具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:yum install ntp。完成后,配置开机启动:chkconfig ntpd on,检查是否设置成功:chkconfig --list ntpd其中2-5为on状态就代表成功。
主节点配置
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用103.226.213.30作为对时中心,ntpdate -u 103.226.213.30。
下面是国内最活跃的时间服务器地址:
server 0.cn.pool.ntp.org
server 0.asia.pool.ntp.org
server 3.asia.pool.ntp.org
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburstntp服务只有一个配置文件,配置好了就OK。 这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server 103.226.213.30 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start
检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
配置ntp客户端(所有子节点)
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#这里是主节点的主机名或者ip
server node5
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u node5 (主节点ntp服务器)
这里可能出现同步失败的情况,请不要着急,一般是本地的ntp服务器还没有正常启动,一般需要等待5-10分钟才可以正常同步。启动服务:service ntpd start
因为是连接内网,这次启动等待的时间会比master节点快一些,但是也需要耐心等待一会儿
二,Cloudera Manager安装与集群配置
在上节已将环境配置完成。下面开始安装CM和搭建集群。
1,主节点安装CM
解压:tar xzvf cloudera-manager*.tar.gz将解压后的cm-5.9和cloudera目录放到/opt目录下。
建立数据库:将下载好的mysql-connector-java-5.1.17.jar放到/opt/cm-5.11.0/share/cmf/lib/
初始化数据库: /opt/cm-5.11.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode5 -uroot -p123456 --scm-host node5 scm scm scm
参数分别是:数据库类型 数据库名称 -h数据库主机名 -u数据库用户名 -p数据库密码--scm-host cmserver主机名 scm scm scm
2.agent配置
修改/opt/cm-5.9/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
同步Agent到其他所有节点: scp -r /opt/cm-5.11.0 root@node2:/opt/
在所有节点创建cloudera-scm用户
useradd --system --home=/opt/cm-5.11.0/run/cloudera-scm-server/ --no-create-home -- shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3.准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
- CDH-5.11.1-1.cdh5.11.1.p0.34-el6.parcel
-CDH-5.11.1-1.cdh5.11.1.p0.34-el6.parcel.sha1
-manifest.json
最后将CDH-5.11.1-1.cdh5.11.1.p0.34-el6.parcel.sha1,重命名为CDH-5.11.1-1.cdh5.11.1.p0.34-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.11.1-1.cdh5.11.1.p0.34-el6.parcel文件。
相关启动脚本
主节点:通过/opt/cm-5.11.1/etc/init.d/cloudera-scm-server start启动服务端。
所有节点(包括主节点):通过/opt/cm-5.11.1/etc/init.d/cloudera-scm-agent start启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
4,CDH5安装配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。
这时可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin:
可以看到,免费版本的CM5已经没有原来50个节点数量的限制了。下面这图我安装好了就没剪切,用别人的图
各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续
继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,这个过程的速度就取决于节点之间的传输速度。
当前受管:假如在安装的时候出现问题,如网络连接中断,机器死机,继续安装的时候可能会出现查询不到机器,并且根据ip搜索机器的时候,出现“当前受管”的状态为“是”,安装失败的机器不能再选择了。
至此,所有节点部署完成
下一步主机检查,遇到以下问题:
第一个警告:
Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。
echo 10 > /proc/sys/vm/swappiness
这样操作重启机器还是还原,要永久改变
第二个警告,提示执行命令:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
执行完毕,重启后,警告依然,暂时不处理
安装服务
注意:这里开始,所有的服务,既可以通过下述自助来安装一系列服务;也可以手动在CM管理页面一个一个添加
之前安装时选择一次性安装一系列服务,由于没有新建hue数据库导致hue服务安装不上,所以后面选择一个一个安装,在前期搭建环境时这样更好,起码出现问题可以锁定是哪个服务。
分步安装服务步骤为:
点击页面上Cloudera MANAGER,回到主节点页面
出现cluster1群集1,点击下拉,选择“添加服务”
HDFS,Hive, HUE,Oozie, YARN, ZOOKEEPER是核心Hadoop的几个服务,分别安装,由于这些节点存在依赖关系,需注意先后顺序(当然,安装时CM会警告),顺序是:
Zookeeper, hdfs, yarn, hive, oozie, hue
注意:在安装hive, hue和oozie时,要将MySQL驱动jar拷贝到相应位置
cp /home/hadoop/mysql-connector-java-5.1.38.jar /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.34/lib/hive/lib
查看日志
CM虽然配置麻烦,但日志齐全,每个操作,都能找到相应的运行日志,日志对于配合、调试和查看任务进度都有很大的帮助
Q&A
参考:
https://blog.csdn.net/lichangzai/article/details/51564701
https://www.cnblogs.com/codedevelop/p/6762555.html
https://blog.csdn.net/yizheyouye/article/details/53173912
https://blog.csdn.net/qq_37667074/article/details/78731529