CDH6.3.2 搭建流程
操作系统要求
在安装CDH之前,我们来看看平台对系统有什么样的要求。通过官方文档,我们可以看到有5个方面的要求:
- 软件依赖
- CDH和CM支持的依赖
- 文件系统要求
- nproc配置
- Kudu所要求的nscd
软件依赖
Python
操作系统带的Python是支持的(Hue和Spark会有一点问题),但Python 3.0或者更高版本是不兼容的。CDH 6要求OS需要Python 2.7或者更高的版本,而Spark 2需要Python 2.7或者更高版本的支持,但Spark 3只支持Python 3。
Perl
Cloudera Manager是要求Perl的。
python-psycopg2
CM6是依赖python-psycopg2的,Hue依赖更高的python-psycopg2版本。
iproute
CM6需要依赖iproute包。所有运行CM agent的节点都需要这个软件包。而不同的操作系统,对iproute依赖的版本也是不一样的。

CDH和CM支持的操作系统
注意:
- 所有的CDH节点都需要在同一个OS的major版本。例如:都是CentOS 7.8或者都是CentOS 7.7。Cloudera建议我们都使用相同的操作系统版本,避免额外的风险。
- Cloudera是不能把CDH集群部署在Docker上的

文件系统要求
CDH支持的文件系统有:ext3、ext4、xfs(CentOS7的默认版本)、s3。Kudu要求使用:ext4或者xfs。Linux文件系统默认会保存每个文件的访问时间元数据,所以读文件也会写元数据,Cloudera建议 /etc/fstab 禁用noattime。
/dev/sdb1 /data1 ext4 defaults,noatime 0
mount -o remount /data1
nproc配置
应该确保nproc限制设置大一点,例如:65536或者262144
为Kudu配置nscd
建立使用nscd为Kudu配置DNS域名解析缓存
数据库要求
CM和CDH都嵌入了PostgreSQL数据库,在非生产环境可以用。但生产环境不可以使用它,必须要为它配置外部的数据库。要使用与操作系统匹配的数据库版本,MySQL必须要使用UTF-8编码方式。MySQL 5.7必须安装MySQL-shared-compact或者MySQL-shared软件包。CM Agent必须要安装。

Java版本要求
使用64位的Java版本


下载链接
链接: https://pan.baidu.com/s/1yS1B6yk2Ski2m9MoPGBnXg?pwd=7vut
提取码: 7vut
准备工作
配置域名映射
所有节点上配置域名映射
vim /etc/hosts10.255.57.161 cm110.255.57.162 cm210.255.57.163 cm310.255.57.164 cm410.255.57.165 cm510.255.57.166 cm610.255.57.167 cm7
配置SSH免密登录
配置master到其他slave节点配置免密登录
# 生成ssh key,一路回车生成
ssh-keygen
ssh-copy-id cm1
ssh-copy-id cm2
ssh-copy-id cm3
ssh-copy-id cm4
ssh-copy-id cm5
ssh-copy-id cm6
ssh-copy-id cm7
安装同步工具
下载 myshell 并上传到 cm1上
# 安装解压 zip软件
yum install -y unzip
unzip myshell.zip
cd myshell
vi node.list
vi node.text
chmod -R 777 ../myshell
yum install -y expect
node.list
cm1
cm2
cm3
cm4
cm5
cm6
cm7
node.text
10.255.57.161 cm1
10.255.57.162 cm2
10.255.57.163 cm3
10.255.57.164 cm4
10.255.57.165 cm5
10.255.57.166 cm6
10.255.57.167 cm7
编辑batch_rename_cmd.sh,batch_cmd.sh,batch_scp.sh,修改账号密码(密码根
据服务器确定),内容如下

安装xsync
# 首先批量安装 rsync
sh batch_cmd.sh node.list "yum install -y rsync"
vi /usr/bin/xsync
# 同步hosts文件
xsync /etc/hosts
xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=root
#5 循环
for((host=1; host<8;host++)); do
echo -------------------cm $host --------------
rsync -rvl $pdir/$fname $user@cm$host:$pdir
done
安装相关组件(批量安装)
# 安装网络工具:
yum install -y net-tools.x86_64 wget vim
当前系统默认的Python版本为2.7.5
下载包以及规划
1、下载CM 6.3.1
2、下载CDH 6.3.2
3、环境配置
| IP | 内存 | 磁盘 | |
|---|---|---|---|
| 10.255.57.161 | 24G | 500G | |
| 10.255.57.162 | 24G | 500G | |
| 10.255.57.163 | 24G | 500G | |
| 10.255.57.164 | 24G | 500G | |
| 10.255.57.165 | 24G | 500G | |
| 10.255.57.166 | 24G | 500G | |
| 10.255.57.167 | 24G | 500G |
关闭防火墙(批量)
所有节点关闭防火墙
# 查看防火墙状态
sudo firewall-cmd --state
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
关闭SELINUX(批量)
sudo setenforce 0
sh batch_cmd.sh node.list "sed -i s/^SELINUX=.*/SELINUX=disabled/ /etc/selinux/config"
查看是否设置正确

安装依赖
所有节点安装以下依赖
yum install -y bind-utils psmisc libxslt cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs httpd mod_ssl openssl-devel python-psycopg2 createrepo nfs-utils
安装NTP
所有机器安装NTP服务
sh batch_cmd.sh node.list "yum -y install ntp"
master(主)节点修改/etc/ntp.conf 文件如下:

其他节点配置与 Master 节点时间同步,添加内容 如下:

启动 ntp 服务(所有节点)
sh batch_cmd.sh node.list "systemctl start ntpd"
查看 ntp 服务的状态
sh batch_cmd.sh node.list "systemctl status ntpd" | grep Active

设置 ntp 服务开机自启(所有节点)
sh batch_cmd.sh node.list "systemctl enable ntpd"
安装 http 服务
在 Master 节点安装 http 服务
yum -y install httpd
启动 http 服务,并查看服务状态
systemctl start httpd
systemctl status httpd

设置 http 服务开机自启
systemctl enable httpd

安装配置 MySQL 主备
- 将 MySQL 的安装包上传至 cm1 和 cm2 的/root/目录下,分别使用命令解压
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
- 使用以下命令按顺序安装
mysql组件服务及依赖(分别在cm1,cm2节点执行)
执行以下命令之前,需要先执行批量脚本移除 mariadb
yum -y remove mariadb*
- 移动
mysql到/opt/mysql目录下
mv mysql-5.7.24-linux-glibc2.12-x86_64/ /opt/mysql
- 创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
- 创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限
6.配置my.cnf
vim /etc/my.cnf
Master节点
[mysqld]
datadir=/data/mysql/data
socket=/tmp/mysql.sock
user=mysql
max_allowed_packet = 32M
# Disabling symbolic-links is recommended to preventassorted security risks
symbolic-links=0
binlog_format = mixed
expire_logs_days = 7
#自动删除 7 天前的日志。默认值为 0,表示从不删除。
log-bin=/data/mysql/binlog/mysql-bin
relay-log=/data/mysql/relay-mysql
server-id=1
character-set-server=utf8
collation-server=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/data/mysql/mysql.pid
Slave节点
[mysqld]
datadir=/data/mysql/data
socket=/tmp/mysql.sock
user=mysql
max_allowed_packet = 32M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
binlog_format = mixed
expire_logs_days = 7
#自动删除 7 天前的日志。默认值为 0,表示从不删除。
log-bin=/data/mysql/binlog/mysql-bin
relay-log=/data/mysql/relay-mysql
server-id=2
character-set-server=utf8
collation-server=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/data/mysql/mysql.pid
进入mysql的bin目录
cd /opt/mysql/bin/
初始化
./mysqld —defaults-file=/etc/my.cnf —basedir=/opt/mysql/ —datadir=/data/mysql/data —user=mysql —initialize
<br />记住初始化的密码
<br />
8.
**启动mysql,并更改root 密码**
<br />**先将mysql.server放置到/etc/init.d/mysql中**
```sh
cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql
修改 /etc/init.d/mysql 的 basedir 和 datadir
启动!!!
service mysql start
service mysql status
- 修改mysql的密码
./mysql -u root -p #bin目录下

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
- 进入 MySQL Master 主节点(cm1)创建用于复制的账号
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'mysync'@'10.255.57.%' IDENTIFIED BY '123456'; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; UNLOCK TABLES;
不断执行命令 SHOW MASTER STATUS;查看 Position 偏移量变化情况,知道偏移量不发生变化,记录偏移量。
- 在Slave节点下执行
在从节点配置复制的主节点,需注意红色标记部分分别对应 Master 节点的 File 和Position 值CHANGE MASTER TO MASTER_HOST='cm1',MASTER_USER='mysync',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1044; start slave; show slave status;
如下图,Slave_IO_Running 和 Slave_SQL_Running 都为 yes:

MySQL Master 库,创建CDH组件服务需要的数据库
-- hive
create database metastore default character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%';
FLUSH PRIVILEGES;
-- cm
create database cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cm. * TO 'cm'@'%';
FLUSH PRIVILEGES;
-- am
create database am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON am. * TO 'am'@'%';
FLUSH PRIVILEGES;
-- rm
create database rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%';
FLUSH PRIVILEGES;
-- hue
create database hue default character set utf8;
CREATE USER 'hue'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%';
FLUSH PRIVILEGES;
-- oozie
create database oozie default character set utf8;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%';
FLUSH PRIVILEGES;
-- sentry
create database sentry default character set utf8;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';
FLUSH PRIVILEGES;
-- nas
create database nas default character set utf8;
CREATE USER 'nas'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nas. * TO 'nas'@'%';
FLUSH PRIVILEGES;
-- nms
create database nms default character set utf8;
CREATE USER 'nms'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nms. * TO 'nms'@'%';
FLUSH PRIVILEGES;
-- spark
CREATE USER 'spark'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'spark'@'%';
FLUSH PRIVILEGES;
show databases;查看数据库情况

进入从库执行 show databases; 查看复制情况

配置 CM 的 repo 源
在 CM 节点,创建 /var/www/html/cm6.3.1 目录,然后将下载的 cm 的 rpm 包上传到该目录。

在/var/www/html/cm6.3.1 的目录中执行createrepo .`命令来创建包的索引

此时可以使用浏览器查看

在/etc/yum.repos.d 的目录下创建 CM 的 repo 源如下
vim /etc/yum.repos.d/cm.repo
cm.repo
[cmrepo]
name=cm_repo
baseurl=http://cm1/cm6.3.1
enable=true
gpgcheck=false
使用yum repolist 命令来确保 repo 源工作正常

同步到所有机器上面
xsync /etc/yum.repos.d/cm.repo
添加 CDH 的 Parcel 包
在 CM 节点,创建/var/www/html/cdh6.3.2 目录,然后将下载的 CDH 的 parcel 包上
传到该目录


安装JAVA
yum -y install oracle-j2sdk1.8.x86_64
上传mysql-connector的jar包
mkdir -p /usr/share/java/
mv mysql-connector-java-5.1.28.jar /usr/share/java/
cd /usr/share/java
ln -s mysql-connector-java-5.1.28.jar mysql-connector-java.jar
安装 CM
- 在 CM 节点使用命令安装 cloudera-manager-server 服务
yum -y install cloudera-manager-server
- 初始化数据库
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password -h cm1
注意:此处的 IP 地址为 MySQL Master 节点的 IP 地址
- 启动 cm 服务
systemctl start cloudera-scm-server
打开 web 浏览器,输入地址 http:// cm1:7180 登陆到 CM 界面

输入账号密码 admin/admin 进入 CM 安装向导界面
点击继续
勾选同意条款
选择试用60天
开始安装CDH
取个集群名称
搜索我们需要管理的主机
配置cdh包

配置cdh以及flink的parcel包



输入ssh的密码


