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依赖的版本也是不一样的。

CDH6.3.2 搭建流程 - 图1

CDH和CM支持的操作系统

注意:

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

CDH6.3.2 搭建流程 - 图2

文件系统要求

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必须要安装。

CDH6.3.2 搭建流程 - 图3

Java版本要求

使用64位的Java版本

CDH6.3.2 搭建流程 - 图4

CDH6.3.2 搭建流程 - 图5

下载链接

链接: https://pan.baidu.com/s/1yS1B6yk2Ski2m9MoPGBnXg?pwd=7vut

提取码: 7vut

准备工作

配置域名映射

所有节点上配置域名映射

  1. vim /etc/hosts
  2. 10.255.57.161 cm1
  3. 10.255.57.162 cm2
  4. 10.255.57.163 cm3
  5. 10.255.57.164 cm4
  6. 10.255.57.165 cm5
  7. 10.255.57.166 cm6
  8. 10.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,修改账号密码(密码根

据服务器确定),内容如下

CDH6.3.2 搭建流程 - 图6

安装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"

查看是否设置正确

CDH6.3.2 搭建流程 - 图7

安装依赖

所有节点安装以下依赖

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 文件如下:

CDH6.3.2 搭建流程 - 图8

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

CDH6.3.2 搭建流程 - 图9

启动 ntp 服务(所有节点)

sh batch_cmd.sh node.list "systemctl start ntpd"

查看 ntp 服务的状态

sh batch_cmd.sh node.list "systemctl status ntpd" | grep Active

CDH6.3.2 搭建流程 - 图10

设置 ntp 服务开机自启(所有节点)

sh batch_cmd.sh node.list "systemctl enable ntpd"

安装 http 服务

在 Master 节点安装 http 服务

yum -y install httpd

启动 http 服务,并查看服务状态

systemctl start httpd
systemctl status httpd

CDH6.3.2 搭建流程 - 图11

设置 http 服务开机自启

systemctl enable httpd

CDH6.3.2 搭建流程 - 图12

安装配置 MySQL 主备

  1. 将 MySQL 的安装包上传至 cm1 和 cm2 的/root/目录下,分别使用命令解压
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
  1. 使用以下命令按顺序安装 mysql组件服务及依赖(分别在 cm1,cm2节点执行)

执行以下命令之前,需要先执行批量脚本移除 mariadb

yum -y remove mariadb*
  1. 移动mysql/opt/mysql目录下
mv mysql-5.7.24-linux-glibc2.12-x86_64/ /opt/mysql
  1. 创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
  1. 创建数据目录并赋予权限
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
  1. 初始化数据库 ```sh

    创建binlog目录

    mkdir /data/mysql/binlog chmod -R 777 /data/mysql/binlog/

进入mysql的bin目录

cd /opt/mysql/bin/

初始化

./mysqld —defaults-file=/etc/my.cnf —basedir=/opt/mysql/ —datadir=/data/mysql/data —user=mysql —initialize


<br />记住初始化的密码
<br />![](https://gitee.com/zackyoung/drawing-bed/raw/master/img/image-20220309134049971.png#alt=image-20220309134049971)

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/mysqlbasedirdatadir
CDH6.3.2 搭建流程 - 图13
启动!!!

service mysql start

service mysql status
  1. 修改mysql的密码
    ./mysql -u root -p   #bin目录下
    


CDH6.3.2 搭建流程 - 图14

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
  1. 进入 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 偏移量变化情况,知道偏移量不发生变化,记录偏移量。CDH6.3.2 搭建流程 - 图15

  1. 在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:
CDH6.3.2 搭建流程 - 图16

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;查看数据库情况

CDH6.3.2 搭建流程 - 图17

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

CDH6.3.2 搭建流程 - 图18

配置 CM repo

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

CDH6.3.2 搭建流程 - 图19

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

CDH6.3.2 搭建流程 - 图20

此时可以使用浏览器查看

CDH6.3.2 搭建流程 - 图21

在/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 源工作正常

CDH6.3.2 搭建流程 - 图22

同步到所有机器上面

xsync /etc/yum.repos.d/cm.repo

添加 CDH Parcel

在 CM 节点,创建/var/www/html/cdh6.3.2 目录,然后将下载的 CDH 的 parcel 包上

传到该目录

CDH6.3.2 搭建流程 - 图23

CDH6.3.2 搭建流程 - 图24

安装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

  1. 在 CM 节点使用命令安装 cloudera-manager-server 服务
    yum -y install cloudera-manager-server
    
  1. 初始化数据库
    /opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password -h cm1
    


注意:此处的 IP 地址为 MySQL Master 节点的 IP 地址CDH6.3.2 搭建流程 - 图25

  1. 启动 cm 服务
    systemctl start cloudera-scm-server
    
  1. 打开 web 浏览器,输入地址 http:// cm1:7180 登陆到 CM 界面CDH6.3.2 搭建流程 - 图26

  2. 输入账号密码 admin/admin 进入 CM 安装向导界面
    点击继续
    CDH6.3.2 搭建流程 - 图27
    勾选同意条款
    CDH6.3.2 搭建流程 - 图28
    选择试用60天
    CDH6.3.2 搭建流程 - 图29

  3. 开始安装CDH
    CDH6.3.2 搭建流程 - 图30
    取个集群名称
    CDH6.3.2 搭建流程 - 图31
    搜索我们需要管理的主机
    CDH6.3.2 搭建流程 - 图32CDH6.3.2 搭建流程 - 图33
    配置cdh包

CDH6.3.2 搭建流程 - 图34

配置cdh以及flink的parcel包

CDH6.3.2 搭建流程 - 图35

CDH6.3.2 搭建流程 - 图36

CDH6.3.2 搭建流程 - 图37

输入ssh的密码

CDH6.3.2 搭建流程 - 图38

CDH6.3.2 搭建流程 - 图39