CDP集群搭建全过程

一. 服务器准备

我这里是本地虚拟机搭建,共四台服务器主机,cdp01是管理节点,cdp01,02和03是数据节点.mysql是数据库节点.也可以把mysql节点放在集群内部,由于我这里搭建了c5和c7两个版本的集群,为了不重复搭建mysql就单独搭了一个mysql服务器,后面准备研究以下如何用docker来搭建集群.毕竟笔记本资源有限.

服务器配置分别如下:

主节点cdp01:
192.168.127.121

这里虽然克隆之后增加了磁盘空间到100g,但是有50g空间是未分配的,在另一篇文章里进行根目录扩容说明.

CDP集群搭建全过程

从节点cdp02,cdp03:
192.168.127.122
192.168.127.123

CDP集群搭建全过程

mariaDB服务器(单节点):
192.168.127.188

CDP集群搭建全过程

二. 预配置

由于我是从初始化好的虚拟机中克隆的cdp服务器,有一些配置是提前配置好的,比如静态ip和网络配置等.以下操作在此基础之上进行记录.

本次搭建过程是可以连接外网的环境,一般公司环境没有外网需自行配置公司内部yum源仓库
我这里配置的是网易的yum仓库,可以下载网易或者阿里云的镜像文件进行配置

这里可以先准备以下后面会用到的一些脚本和安装集群需要用到的安装包.放一台机器即可,我这里是放在cdp01的/soft目录下.

cdp01主机上创建一个文件夹用于存放脚本和安装包,上传安装包和脚本.

mkdir /soft

CDP集群搭建全过程

1. 配置ip和hostname

配置ip

# 这里修改自己的网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33

CDP集群搭建全过程

CDP集群搭建全过程

修改好ip后,保存退出.重启网络服务

systemctl restart network

重启好之后可以用xshell远程连接进行后续操作.
配置主机名

hostnamectl set-hostname cdp01
hostnamectl set-hostname cdp02
hostnamectl set-hostname cdp03

然后修改hosts文件

vim /etc/hosts

CDP集群搭建全过程

分发hosts文件,在myshell文件夹下执行

./batch_scp.sh node.list /etc/hosts /etc/

CDP集群搭建全过程

2. 安装jdk(3台)

2.1 解压tar包
# 1. 创建文件夹
mkdir /usr/java

# 2. 解压tar包至1中创建的文件夹
tar -zxvf /soft/jdk-8u141-linux-x64.tar.gz -C /usr/java/

CDP集群搭建全过程

2.2 配置环境变量
# 1. 添加环境变量
vim /etc/profile

# 2. 在文件末尾添加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_141/
export PATH=$JAVA_HOME/bin:$PATH

# 3. 生效配置文件
source /etc/profile

验证结果如下:
CDP集群搭建全过程

2.3 更换jar包,避免在后面配置kerberos认证时报错(不配置kerberos可以忽略此步骤)

在/soft目录下执行

cp local_policy.jar US_export_policy.jar /usr/java/jdk1.8.0_141/jre/lib/security/

CDP集群搭建全过程

注意:安装完java之后,要替换/usr/java/jdk1.8.0_131/jre/lib/security目录下的local_policy.jar和US_export_policy.jar,主要是解决再后面安装kerberos的时候报如下的错误:

GSSException: Failure unspecified at GSS-API level (Mechanism level: Encryption type AES256 
CTS mode with HMAC SHA1-96 is not supported/enabled)
2.4 分发文件夹,并配置环境变量

cdp01上执行分发命令

scp /usr/java root@cdp02:/usr/

按照提示输入yes和root用户密码,可以看到拷贝过程如下
CDP集群搭建全过程

cdp02,cdp03配置环境变量,并生效配置

./batch_scp.sh node.list /etc/profile /etc/

# 生效配置文件
source /etc/profile

CDP集群搭建全过程

3. 关闭selinux(3台)

selinux是一种安全子系统,它能控制程序值访问特定的文件,使用selinux可能会导致安装失败,这里将所有节点的selinux关闭即可.

vim /etc/selinux/config

SELINUX=disabled

CDP集群搭建全过程
保存退出

改完后分发配置文件
CDP集群搭建全过程

4. 关闭防火墙(3台)

先检查以下防火墙状态

systemctl status firewalld

CDP集群搭建全过程

关闭防火墙

systemctl stop firewalld

# 并关闭防火墙开机自启
systemctl disable firewalld

CDP集群搭建全过程

5. 调整linux系统参数

5.1 关闭交换空间

这里设置swappiness=1,最大限度的使用物理内存,尽量不使用交换空间

echo 1 > /proc/sys/vm/swappiness

echo "vm.swappiness=1" >> /etc/sysctl.conf

echo "echo 1 > /proc/sys/vm/swappiness" >> /etc/rc.d/rc.local

cat /proc/sys/vm/swappiness

如果是现有集群需要关闭交换空间,则按以下步骤操作:

  1. echo 0 > /proc/sys/vm/swappiness

  2. 查看交换分区信息swapon -s

  3. 关闭交换空间swapoff 第二步中查询的交换分区

注意:在centos6中swappiness=0表示尽量不使用交换分区,centos7中swappiness=0表示禁用交换分区,如果完全禁用交换分区,可能会引起内存溢出的问题,在centos7中可以将该值设置为1

5.2 禁用透明大页面

透明大页面可能会带来cpu占用率过高的问题。将这个参数设置为never,为了保证重启生效,要把命令写到/etc/rc.d/rc.local中。

echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local

echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag
5.3 修改LINUX最大文件数句柄(LINUX默认是1024)
echo "* soft nofile 65535" >> /etc/security/limits.conf

echo "* hard nofile 65535" >> /etc/security/limits.conf

6. 配置时间同步

在所有安装CDH集群的设备中需要统一设置时间同步服务,这里选择将三台主机中的其中一台主机作为NTP时间同步服务器,对nta001进行ntp服务器配置,其他服务器来同步这台服务器的时钟

6.1 安装ntp服务
yum install ntp -y
6.2 配置主服务器(cdp01)
vim /etc/ntp.conf

#删除默认配置并添加以下内容:
server 127.127.1.0
fudge 127.127.1.0 stratum 10

CDP集群搭建全过程

6.3 配置从服务器(cdp02,cdp03)
vim /etc/ntp.conf

# 删除默认配置并添加以下内容
server cdp01 iburst
6.4 开启时间同步服务,设置开机启动(3台)
service ntpd start或者systemctl start ntpd.service

chkconfig ntpd on或者systemctl enable ntpd.service

# 查看服务状态
systemctl status ntpd.service
6.5 验证时间同步(3台)
查看时间同步状态
ntpq -p

cdp01:
CDP集群搭建全过程
cdp02:
CDP集群搭建全过程
cdp03:
CDP集群搭建全过程

7. 安装http服务(3台)

安装httpd服务

yum install httpd -y

开启httpd服务

systemctl start httpd.service

开机自动启动httpd服务

chkconfig httpd on

CDP集群搭建全过程

三. mysql安装和建库

1. 安装mysql

rpm安装包方式安装

tar -zxvf MySQL-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /opt/software/mysql/

cd /opt/software/mysql/

chmod u+x *.rpm

# 安装Mysql-shared-compat替换系统自带的mysql-libs
rpm -qa | grep -I mysql

rpm -ivh MySQL-shared-compat-5.7.23-1.el7.x86_64.rpm

yum remove mysql-libs

rpm -ivh MySQL-server-compat-5.7.23-1.el7.x86_64.rpm

rpm -ivh MySQL-client-compat-5.7.23-1.el7.x86_64.rpm

安装完要进行基础配置,改密码,设置远程登陆等等...

我这里是在192.168.127.188服务器上提前安装好了mariadb, 这里就不作详细说明了, 安装教程网上很多, 另外一般企业中配置mysql主主同步, 提升MySQL可用性

2. 拷贝驱动

# 创建文件夹:(3台)
mkdir -p /usr/share/java 

# 拷贝驱动jar包(cdp01)
cp /soft/mysql-connector-java-5.1.38.jar /usr/share/java/
cd /soft/myshell
./batch_scp.sh node.list /usr/share/java /usr/share/

CDP集群搭建全过程

# 创建软连接(3台)
cd /usr/share/java

ln -s mysql-connector-java-5.1.38.jar mysql-connector-java.jar

CDP集群搭建全过程

注意:如果不是创建软连接,用mv命令改名去掉版本号的方式要记得给驱动包添加可执行权限。

3. 创建搭建集群需要的用户和数据库

create database cdp7metastore default character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive@2021';
GRANT ALL PRIVILEGES ON cdp7metastore.* TO 'hive'@'%';

create database cdp7cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'cm@2021';
GRANT ALL PRIVILEGES ON cdp7cm.* TO 'cm'@'%';

create database cdp7am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'am@2021';
GRANT ALL PRIVILEGES ON cdp7am.* TO 'am'@'%';

create database cdp7rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'rm@2021';
GRANT ALL PRIVILEGES ON cdp7rm.* TO 'rm'@'%';

create database cdp7hue default character set utf8;
CREATE USER 'hue'@'%' IDENTIFIED BY 'hue@2021';
GRANT ALL PRIVILEGES ON cdp7hue.* TO 'hue'@'%';

create database cdp7oozie default character set utf8;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie@2021';
GRANT ALL PRIVILEGES ON cdp7oozie.* TO 'oozie'@'%';

create database cdp7sentry default character set utf8;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'sentry@2021';
GRANT ALL PRIVILEGES ON cdp7sentry.* TO 'sentry'@'%';

create database cdp7nas default character set utf8;
CREATE USER 'nas'@'%' IDENTIFIED BY 'nas@2021';
GRANT ALL PRIVILEGES ON cdp7nas.* TO 'nas'@'%';

create database cdp7nms default character set utf8;
CREATE USER 'nms'@'%' IDENTIFIED BY 'nms@2021';
GRANT ALL PRIVILEGES ON cdp7nms.* TO 'nms'@'%';

flush privileges;

CDP集群搭建全过程

创建好数据库后,赋完权限要记得刷新权限

CDP集群搭建全过程

四. 安装CM

1. 配置本地yum源(cdp01)

下载所需的安装包,配置本地的yum源,这样在后面安装集群时就不用去互联网下载,可以节省很多时间,步骤如下:

1.1 下载所需的软件包

CDP集群搭建全过程

1.2 将下载的安装包移动到/var/www/html/cm7.1.4/
mkdir -p /var/www/html/cm7.1.4

cp /soft/cloudera-* /soft/allkeys.asc /var/www/html/cm7.1.4/

CDP集群搭建全过程

1.3 安装createrepo
yum install createrepo
1.4 创建repo
cd /var/www/html/cm7.1.4
createrepo .

CDP集群搭建全过程

1.5 配置本地yum源
cd /etc/yum.repos.d
vim cm.repo

输入以下内容:

[cm]
name=cm,Version 7.1.4
baseurl=http://192.168.127.121/cm7.1.4/
enable=1
gpgcheck=0

然后保存退出。
执行以下命令:

yum clean all

yum makecache

yum list |grep cloudera

可以看到以下内容:
CDP集群搭建全过程

1.5 验证配置结果

浏览器访问 http://192.168.127.121/cm7.1.4 , 可以看到以下界面

CDP集群搭建全过程

1.6 相同的方式配置cdh的本地yum源

浏览器访问 http://192.168.127.121/cdh7.1.4 , 可以看到以下界面

CDP集群搭建全过程

1.7 分发到其他节点

在cdp01上配置好本地yum仓库之后,将repo文件分发到其他节点

# 1. 切换到分发脚本的目录
cd /soft/myshell/

# 2. 分发cm.repo
./batch_scp.sh node.list /etc/yum.repos.d/cm.repo /etc/yum.repos.d/

# 3. 分发cdh.repo
./batch_scp.sh node.list /etc/yum.repos.d/cdh.repo /etc/yum.repos.d/

CDP集群搭建全过程

分发后看其他节点能否访问,看到以下界面说明们问题了:

CDP集群搭建全过程

2. 安装cm server(cdp01)

在cdp01上安装cloudera-scm-server.service

yum install cloudera-manager-server -y

# 安装完后可以查看服务状态
systemctl status cloudera-scm-server

CDP集群搭建全过程

3. 初始化mysql

配置好cm之后,进行初始化cm元数据库

cd /opt/cloudera/cm/schema/

# 我这里直接用root用户进行数据库初始化,也可以用前面创建的cm用户
./scm_prepare_database.sh mysql -h 192.168.127.188 cdp7cm root root

注意:

在c7中,不需要提前创建cm数据库,我这里提前创建之后在初始化时报错了,说数据库已存在,根据提示删掉对应数据库后初始化成功.

CDP集群搭建全过程

初始化数据库时需要注意,本次mysql不在集群主机内部,如果是在本机的mysql,则可以不用指定-h参数,默认就是localhost,后面的--scm-host参数是指定cmserver所在的主机

执行上面命令后,如果出现以下内容,即说明初始化成功
CDP集群搭建全过程

进行到这一步之后,我这里拍了快照,因为c7没有免费版本,只有60天试用版的,为了以后试用过期后能迅速搭建cdp集群,所以拍摄了快照,重新搭建时,恢复快照,删除数据库,并重新初始化cm数据库即可

五. 安装CDH

1. 启动cmserver,查看日志

启动cm server

systemctl start cloudera-scm-server

systemctl status cloudera-scm-server

CDP集群搭建全过程

查看cm server日志

tail -100f /var/log/cloudera-scm-server/cloudera-scm-server.log

看到以下内容说明cm server启动成功:

CDP集群搭建全过程

2. 登陆cm界面

cm server启动成功后就可以访问cm界面了,地址是 http://cdp01:7180

CDP集群搭建全过程

输入初始账号密码 admin/admin 即可登陆.

登陆后选择试用版

CDP集群搭建全过程

3. 安装agent

进入集群安装欢迎界面,提示安装kerberos,我们后面自己进行手动搭建,所以这里直接下一步

CDP集群搭建全过程

设置集群名称,执行下一步

CDP集群搭建全过程

搜索主机,选中主机,执行下一步

CDP集群搭建全过程

选择自定义存储库和parcel版本

CDP集群搭建全过程

在选择parcel存储库时,可将默认的库删掉,并填上我们自己的库,保存退出后,执行下一步

CDP集群搭建全过程

选择手动管理jdk,执行下一步

CDP集群搭建全过程

输入root用户密码,这里需要注意集群中的所有主机必须保证root用户密码都是一样的,填好后,执行下一步

CDP集群搭建全过程

自动安装 cm agent服务,安装完成后执行下一步

CDP集群搭建全过程

可以点击详细信息查看agent安装过程

CDP集群搭建全过程

agent安装完成

CDP集群搭建全过程

4. 分发激活parcel安装包

下面是下载,分发和激活parcel的过程,时间会有点长,可以去日志中看看是不是用的本地的仓库进行下载的.

在cm server日志中可以看到是在我们配置的仓库下载parcel包
CDP集群搭建全过程

完成激活后如下如所示:

CDP集群搭建全过程

检查主机状况

CDP集群搭建全过程

5. 安装服务

选择自定义安装

CDP集群搭建全过程

我这里选择了以下这些组件
CDP集群搭建全过程

CDP集群搭建全过程

设置数据库

CDP集群搭建全过程

我这里就安装一些常用组件以供自己在后面进行开发学习使用.

安装过程在界面点一点就好了不做详细说明,下面是我安装好服务之后的集群状态.
组件服务如下图:

CDP集群搭建全过程

角色分配如下图:

CDP集群搭建全过程

组件版本如下图:
CDP集群搭建全过程
CDP集群搭建全过程
CDP集群搭建全过程

搭建完之后发现50g磁盘有点不够用,建议可以分100g给/root目录.至此集群安装就以完成,后面再补充集群高可用配置,和集成kerberos认证的过程.

上一篇:[灾备]备份类型


下一篇:Veeam v11 重量级功能 CDP 持续数据保护(一)