准备工作
离线部署主要分为三块
1) MySQL离线部署
2) CM离线部署
3) Parcel文件离线源部署
集群规划
节点 | MySQL部署组件 | Parcel文件离线源 | CM服务进程 | 大数据组件 |
---|---|---|---|---|
master | MySQL | Parcel | Activity Monitor | NN RM DN NM |
slave1 | Alert Publisher ,Event Server | DN NM | ||
slave2 | Host Monitor ,Service Monitor | DN NM |
下载源
本文提供优快云免费下载,但是由于文件过大,所以附带网盘地址
https://download.youkuaiyun.com/download/qq_42147602/87852272
https://download.youkuaiyun.com/download/qq_42147602/87852279
网盘链接
链接:https://pan.baidu.com/s/1sMSERY2PpEjHVFSl99nrSQ?pwd=1234
提取码:1234
–来自百度网盘超级会员V5的分享
集群节点初始化
设置所有节点的hosts文件
换成自己的ip地址,如果使用云服务器,请使用内网地址。
192.168.28.140 master
192.168.28.141 slave1
192.168.28.142 slave2
关闭所有节点的防火墙及清空规则
systemctl stop firewalld
systemctl disable firewalld
iptables -F
关闭所有节点的selinux
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
设置后需要重启才能生效
设置所有节点的时区一致及时钟同步
时区
我觉得吧,如果是个人电脑虚拟机搭建,这步骤可以直接跳过,大家都会克隆镜像,用的是上海时区,不存在同步这回事,但是公司级别需要时钟同步,不然各节点会出问题。
[root@master ~]# date
Wed Oct 23 13:51:31 CST 2019
[root@master ~]# timedatectl
Local time: Wed 2019-10-23 13:51:49 CST
Universal time: Wed 2019-10-23 05:51:49 UTC
RTC time: Wed 2019-10-23 13:51:49
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: n/a
#查看命令帮助,学习至关重要
[root@master ~]# timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
-h --help Show this help message
--version Show package version
--no-pager Do not pipe output into a pager
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--adjust-system-clock Adjust system clock when changing local RTC mode
Commands:
status Show current time settings
set-time TIME Set system time
set-timezone ZONE Set system time zone
list-timezones Show known time zones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Control whether NTP is enabled
#查看哪些时区
[root@master ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
#所有节点设置亚洲上海时区
[root@master ~]# timedatectl set-timezone Asia/Shanghai
[root@slave1 ~]# timedatectl set-timezone Asia/Shanghai
[root@slave2 ~]# timedatectl set-timezone Asia/Shanghai
时间
#所有节点安装ntp
[root@master ~]# yum install -y ntp
#选取master为ntp的主节点
[root@master ~]# vi /etc/ntp.conf
#time
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
#当外部时间不可用时,可使用本地硬件时间
server 127.127.1.0 iburst local clock
#允许哪些网段的机器来同步时间
restrict 172.21.230.0 mask 255.255.255.0 nomodify notrap
#开启ntpd及查看状态
[root@master ~]# systemctl start ntpd
[root@master ~]# systemctl status ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: d
isabled)
Active: active (running) since Sat 2019-05-11 10:15:00 CST; 11min ago
Main PID: 18518 (ntpd)
CGroup: /system.slice/ntpd.service
¹—18518 /usr/sbin/ntpd -u ntp:ntp -g
May 11 10:15:00 master systemd[1]: Starting Network Time Service...
May 11 10:15:00 master ntpd[18518]: proto: precision = 0.088 usec
May 11 10:15:00 master ntpd[18518]: 0.0.0.0 c01d 0d kern kernel time sync en
abled
May 11 10:15:00 master systemd[1]: Started Network Time Service.
#验证
[root@master ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) .LOCL. 10 l 726 64 0 0.000 0.000 0.000
#其他从节点停止禁用ntpd服务
[root@slave1 ~]# systemctl stop ntpd
[root@slave1 ~]# systemctl disable ntpd
Removed symlink /etc/systemd/system/multi-user.target.wants/ntpd.service.
[root@slave1 ~]# /usr/sbin/ntpdate master
11 May 10:29:22 ntpdate[9370]: adjust time server 172.19.7.96 offset 0.000867 sec
#每天凌晨同步master节点时间
[root@slave1 ~]# crontab -e
00 00 * * * /usr/sbin/ntpdate master
[root@slave2 ~]# systemctl stop ntpd
[root@slave2 ~]# systemctl disable ntpd
Removed symlink /etc/systemd/system/multi-user.target.wants/ntpd.service.
#每天凌晨同步master节点时间
[root@slave2 ~]# crontab -e
00 00 * * * /usr/sbin/ntpdate master
每个节点部署JDK
这部分按照我提供的路径配置,不会出错,如果是多台节点配置,一定一定要每台JDK都要配置。
mkdir /usr/java
tar -xzvf jdk-8u181-linux-x64.gz -C /usr/java/
#切记必须修正所属用户及用户组
chown -R root:root /usr/java/jdk1.8.0_181
#在/etc/profile目录下面配置环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# 刷新环境变量
source /etc/profile
which java
master主节点部署JDBC JAR
这里要特别声明一下,一定一定要按照我给的路径配置,并且要把版本号去掉!
master节点创建java目录
mkdir -p /usr/share/java/
重命名不能带版本号
去掉版本号!!!
去掉版本号!!!
去掉版本号!!!
不要踩坑!!!
cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
离线部署MySQL5.7
CDH搭建采用MySQL5.7的方式,可以自行准备,或者使用我下方提供的安装教程安装。
下方链接本文原创MySQL5.7,免费提供.
https://blog.youkuaiyun.com/qq_42147602/article/details/130855738?spm=1001.2014.3001.5501
创建CDH的元数据库和用户、amon服务的数据库及用户
上Mysql安装好之后需要创建两个库 cmf amon
数据库密码修改成自己。
create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
flush privileges;
CDH部署
下面就是进入紧张又刺激的核心部分了。
离线部署cm server及agent
所有节点创建目录及解压
上面有提供安装包,可以自行下载然后上传到Linux目录下。
首先创建目录
mkdir /opt/cloudera-manager
解压压缩包到指定目录
tar -xzvf cm6.3.1-redhat7.tar.gz -C /opt/cloudera-manager/
选择master为cm server,不下载依赖包直接部署
进入上面解压过后的目录
cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64
开始为主节点安装daemons 和 server,一定一定要看好是daemons 和 server rpm包,如果一旦安装错误对小白来说是致命打击。
只为主节点安装server !!!
只为主节点安装server !!!
只为主节点安装server !!!
不要踩坑!!!
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
所有节点(包含master)为cm agent,不下载依赖包直接部署
下面是安装daemons 和agent 包,上面已经为master主节点安装过daemons,就不需要再安装,但是agent一定要所有节点都要安装。
cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
所有节点修改agent的配置,指向server的节点master
三台节点需改server_host,默认是localhost,修改成master主节点主机名。
vim /etc/cloudera-scm-agent/config.ini
主节点修改server的配置
在主节点进入db.properties 目录修改配置文件,如果上面rpm你安装失败,就不会显示这个目录。
vim /etc/cloudera-scm-server/db.properties
修改文件如下,下面有两个坑需要注意
- 如果采用默认Mysql 3306端口,没问题,可以按照下面配置,如果不是默认,把hosts改成 主机名:对于端口号(master:xxx)
- com.cloudera.cmf.db.setupType一定一定要改成下面这种,不然就要报错喽。
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=master
com.cloudera.cmf.db.name=cmf com.cloudera.cmf.db.user=cmf com.cloudera.cmf.db.password=www.ruozedata.com
com.cloudera.cmf.db.setupType=EXTERNAL
master主节点部署离线parcel源
安装httpd服务
这里没啥可说的,只要yum源没问题就可以安装。
yum install -y httpd
部署离线parcel源
创建文件
mkdir -p /var/www/html/cdh6_parcel
把对应文件复制或者移动到刚才创建的目录中,因为目前官网不提供下载地址,所以需要完成离线安装组件。
第二个DH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1,在移动过程中去掉1,一定一定要移动中修改,sha1名称文件时,重命名去掉1,不然在部署过程CM认为如上文件下载未完整,会持续下载
[root@master CDH6.3.1]# cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/ www/html/cdh6_parcel/
[root@master CDH6.3.1]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 / var/www/html/cdh6_parcel/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
[root@ruozedata001 CDH6.3.1]# mv manifest.json /var/www/html/cdh6_parcel/
启动httpd,window查看
在浏览器输入 xxx.xxx.xxx.xxx/cdh6_parcel/ x改成自己的ip地址
如果出现下列这种,说明你的parcel源是正确的。
master节点启动Server
启动server
systemctl start cloudera-scm-server
查看日志,一定要查看日志,不然怎么错误都不知道,没法排查
cd /var/log/cloudera-scm-server/
$ ll total 20
-rw-r----- 1 cloudera-scm cloudera-scm 18265 Oct 23 15:37 cloudera-scm-server.log
-rw-r----- 1 cloudera-scm cloudera-scm 0 Oct 23 15:37 cmf-server-nio.log
-rw-r----- 1 cloudera-scm cloudera-scm 0 Oct 23 15:37 cmf-server-perf.log
tail -F cloudera-scm-server.log
有错误就根据错误解决,没有错误,等待1min,出现7180端口,表明是成功的。
如果是阿里云web界面,设置该master节点防火墙放开7180端口
等待1min-5min,打开 http://master:7180 账号密码:admin/admin
假如打不开,去看server的log,根据错误仔细排查错误
Web界面操作
如果能打开,恭喜你,你得CDH已经启动成功了
到这里就结束了,我是一名大数据开发和运维程序员,我喜欢开源大家一起共享成果,本文章我已经毫无保留的贡献出来,如果你觉得满意,请为动动手指为我点赞,如果文章不完美的地方,还请留言,我会及时修改。
如果是公司或者个人需要我远程帮助或辅导,可以加下方V并备注出处,我来提供解决方案,当然了,也是有偿的,我花时间和精力,你出¥。