基于CentOS7的CDH6.3.2完全分布式集群搭建[商业版]
写在前面
距离上一次写 CDH集群搭建的文档已经一年多了,今年2月份开始Cloudera全面下架了免费的安装包下载渠道,很多朋友在集群搭建的过程中按照之前的老文档遇到了一些问题。今天重新整理一次文档。
-
Cloudera官网公告
![file]()
-
未订阅授权的用户无法使用 CDH6.3.3和之后的版本
![file]()
-
所以我们继续使用 CDH6.3.2版本进行集群搭建
-
需要使用的朋友可以先浏览 CDH6.3.2对应的组件版本,是否符合需求
| 组件 | 版本 | 发行版 | CDH 版本 |
|---|---|---|---|
| Flume NG | 1.9.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Hadoop | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| HDFS | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| HttpFS | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| hadoop-kms | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| MapReduce 2 | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| YARN | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| HBase | 2.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Lily HBase Indexer | 1.5+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Hive | 2.1.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| HCatalog | 2.1.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Hue | 4.2.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Impala | 3.2.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Kafka | 2.2.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| kudu | 1.10.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Oozie | 5.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Parquet | 1.9.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Pig | 0.17.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| sentry | 2.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Solr | 7.4.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| spark | 2.4.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| Sqoop | 1.4.7+cdh6.3.2 | 1605554 | CDH 6.3.2 |
| ZooKeeper | 3.4.5+cdh6.3.2 | 1605554 | CDH 6.3.2 |
一、外环境准备
1.1、文件准备
-
将所需要的包下载到本地(10个文件包)
| 文件名称 | 文件大小(字节) |
|---|---|
| allkeys.asc | 14,041 |
| CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | 2,082,186,246 |
| cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm | 10,483,568 |
| cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm | 1,203,832,464 |
| cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm | 11,488 |
| cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm | 10,996 |
| enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm | 14,209,868 |
| mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz | 503,854,832 |
| mysql-connector-java-8.0.18.jar | 2,330,539 |
| oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm | 184,988,341 |
1.2、服务器准备
1.2.1 集群规划
-
CDH 集群相较于 Apache开源版本,最大优势在于 Cloudera Manager强大便捷的集群管理服务,所以CM几乎是必装的,换句话说不装CM就没必要用 CDH版本的Hadoop了
-
但在实测中,即使只启动 CM的必要服务,集群的整体资源占用就已经达到了8GB
-
集群架构方案
-
方案一:3台或以上,8G内存或以上,将cm的集群监控服务分散到多个节点
主机名 服务 node01 cm-agent、cm-server、hadoop and other node02 cm-agent、Host Monitor、Service Monitor、hadoop and other node03 cm-agent、Alert Publisher、Event Server、hadoop and other -
方案二:4台或以上,8G内存或以上,将cm的集群监控服务全部安装在一台节点
主机名 服务 node01 cm-agent、cm-server、Host Monitor、Service Monitor、Alert Publisher、Event Server node02 cm-agent、hadoop and other node03 cm-agent、hadoop and other node04 cm-agent、hadoop and other -
-
本例使用上述架构二
| 主机名 | CPU核心 | 物理内存 | 操作系统 | 服务 |
|---|---|---|---|---|
| node00 | 4 | 8GB | CentOS 7 | cm-server、cm-agent、其他cm监控服务 |
| node01 | 4 | 8GB | CentOS 7 | cm-agent、hadoop生态组件 |
| node02 | 4 | 8GB | CentOS 7 | cm-agent、hadoop生态组件 |
| node03 | 4 | 8GB | CentOS 7 | cm-agent、hadoop生态组件 |
1.2.2 服务器准备
-
学习测试
-
VMWare、VirtualBox等虚拟机
-
AWS、阿里云、华为云、腾讯云等云服务器
-
-
生产环境
-
物理服务器(购买)
-
AWS、阿里云、华为云、腾讯云等云服务器(租用)
-
按量计费:启动服务器时开始扣费,用完挂起,会以极低的费用保管数据,需要使用再次开机计费
-
-
二、内环境准备
2.1 配置主机名和映射
-
⚠ CDH需要使用IPv4地址,暂不支持IPv6
-
⚠ CDH建议使用FQDN,即完全限定域名
# 普通hostname
node00
# FQDN(Fully Qualified Domain Name---)
node00.cdh6.amoscloud.com
2.1.1 配置主机名
-
为每个机器单独配置自己的主机名
# 第一台机器执行
hostnamectl set-hostname node00.cdh6.amoscloud.com
# 第二台机器执行
hostnamectl set-hostname node01.cdh6.amoscloud.com
# 第三台机器执行
hostnamectl set-hostname node02.cdh6.amoscloud.com
# 第四台机器执行
hostnamectl set-hostname node03.cdh6.amoscloud.com
2.1.2 配置FQDN
-
为每个机器单独配置自己的FQDN
▲此处开启多屏操作
1、将主机名赋给变量
HOST=`hostname`
2、检查变量
echo $HOST
3、将变量名写入对应文件
echo $HOST > /etc/sysconfig/network
2.1.3 配置本地DNS映射
-
为每个机器配置 /etc/hosts文件
echo -e "
172.16.6.121 node00.cdh6.amoscloud.com node00
172.16.6.122 node01.cdh6.amoscloud.com node01
172.16.6.123 node02.cdh6.amoscloud.com node02
172.16.6.124 node03.cdh6.amoscloud.com node03
" >> /etc/hosts
# -e 表示识别转义字符(例:/n)
注:CDH 集群中为提高其安全性,不配置免密登录,其主从节点中的 cm-server与 cm-agent实现免密功能,即调用机制
2.1.4 顺便配置 Windows映射
1、打开编辑 win系统中的 hosts文件,路径如下
C:\Windows\System32\drivers\etc\hosts
2、在文件中写入内容
172.16.6.121 node00.cdh6.amoscloud.com node00
172.16.6.122 node01.cdh6.amoscloud.com node01
172.16.6.123 node02.cdh6.amoscloud.com node02
172.16.6.124 node03.cdh6.amoscloud.com node03
2.2 关闭防火墙
▲ 每个节点都要完成以下操作
▲ 此处开启多屏操作
2.2.1 关闭防火墙服务
# 临时
systemctl stop firewalld
# 永久
systemctl disable firewalld
# 执行结果
[root@node00 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
# 双管齐下,无需重启
2.2.2 查看防火墙状态
systemctl status firewalld
#执行结果
确认 Active: inactive (dead)
关闭OK
2.3 暂时关闭 SELinux
▲ 每个节点都要完成以下操作
▲此处开启多屏操作
2.3.1 查看 SELinux状态
# 查看 SELinux状态命令
getenforce
-
执行结果
[root@node00 ~]# getenforce
Enforcing
-
如果执行结果打印 Permissive 或者 Disabled ,可以直接跳过 2.3 步骤,如果是 Enforcing继续操作
2.3.2 修改 SELinux状态
# 临时修改(无需重启)
setenforce 0
# 永久修改
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
-
执行结果
[root@node00 ~]# getenforce
Permissive
2.4 时间同步
-
CentOS 7 已经启用chronyd服务保证时间同步,不需要再安装ntpd
2.4.1 查看 chronyd状态
▲ 每个节点都要完成以下操作
▲此处开启多屏操作
systemctl status chronyd #执行结果 确认 Active: active (running) 状态OK 开启时间同步 systemctl start chronyd
2.5 搭建本地 yum源
-
我这里选择把yum源配置在 node00节点上
2.5.1 安装并启动Apache http
▲ 在node00节点完成以下操作
-
安装 Apache http
yum install -y httpd -
启动 Apache http
systemctl start httpd -
设置自启动 Apache http
systemctl enable httpd
2.5.2 上传安装文件
▲ 在 node00节点完成以下操作
-
创建安装文件 http根目录
mkdir -p /var/www/html/cm6 -
上传安装文件(1.1准备的10个文件)到http根目录(刚创建的目录 /cm6)
此处上传10个文件到 /cm6目录下
2.5.3 创建 yum仓库
▲ 在node00节点完成以下操作
1、
cd /var/www/html/cm6
2、
yum install -y createrepo
3、
createrepo .
2.5.4 配置 yum仓库文件
▲ 在所有节点完成以下操作
▲ 此处开启多屏操作
1、创建文件
vim /etc/yum.repos.d/cloudera-manager.repo
2、在文件内写入下面内容
[cloudera-manager]
name=Cloudera Manager 6.3.1
baseurl=http://node00/cm6
gpgcheck=0
enabled=1
autorefresh=0
type=rpm-md
# node00/cm6 为2.5.2中创建的目录
2.5.5 更新仓库信息,确认本地 yum源已被添加
# 清理缓存 yum clean all # 重新建立缓存 yum makecache
-
执行结果
[root@node02 ~]# yum makecache
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
base | 3.6 kB 00:00
cloudera-manager | 2.9 kB 00:00
extras | 2.9 kB 00:00
updates | 2.9 kB 00:00
(1/13): base/7/x86_64/group_gz | 153 kB 00:01
(2/13): cloudera-manager/filelists_db | 118 kB 00:01
(3/13): cloudera-manager/other_db | 1.0 kB 00:00
(4/13): cloudera-manager/primary_db | 8.6 kB 00:01
(5/13): extras/7/x86_64/filelists_db | 227 kB 00:01
(6/13): extras/7/x86_64/other_db | 136 kB 00:01
(7/13): extras/7/x86_64/primary_db | 227 kB 00:06
(8/13): updates/7/x86_64/filelists_db | 3.9 MB 00:06
(9/13): base/7/x86_64/primary_db | 6.1 MB 00:16
(10/13): updates/7/x86_64/other_db | 516 kB 00:08
(11/13): base/7/x86_64/other_db | 2.6 MB 00:24
(12/13): base/7/x86_64/filelists_db | 7.2 MB 00:27
(13/13): updates/7/x86_64/primary_db | 6.5 MB 00:56
元数据缓存已建立
2.6 安装 Mysql
-
我这里选择把 mysql安装在 node00节点上
2.6.1 上传 mysql安装包并使用脚本自动安装
▲在 node00节点完成以下操作
-
2.5.2 已上传
-
在包目录创建脚本文件
vim anzhuangmysql.sh
-
在文件中写入
-
执行脚本
0、执行前列出包名列表,方便2指定安装包
ll
1、执行
bash anzhuangmysql.sh
2、输入mysql8的zx压缩包文件所在路径(复制粘贴)
mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
3、输入想要安装的目录
/usr/local/mysql
4、等待安装完成
2.6.2 设置 mysql的连接用户和密码
# 安装完成后,直接使用如下命令修改初始密码 ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
2.6.3 建立后续需要的数据库
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
CREATE DATABASE cmserver CHARACTER SET 'UTF8';
CREATE USER 'cms'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON cmserver.* TO 'cms'@'%';
CREATE DATABASE metastore CHARACTER SET 'UTF8';
CREATE USER 'hive'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON metastore.* TO 'hive'@'%';
CREATE DATABASE oozie CHARACTER SET 'UTF8';
CREATE USER 'oozie'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON oozie.* TO 'oozie'@'%';
CREATE DATABASE hue CHARACTER SET 'UTF8';
CREATE USER 'hue'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON hue.* TO 'hue'@'%';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
2.6.4 上传mysql的jdbc驱动包
▲ 在 node00节点完成以下操作
-
重命名驱动包,并移动到httpd目录下,方便其他机器下载
mv /var/www/html/cm6/mysql-connector-java-8.0.18.jar /var/www/html/cm6/mysql-connector-java.jar
▲ 在所有节点完成以下操作
▲ 此处开启多屏操作
-
由于集群中多个服务都需要使用 mysql进行元数据管理,所以这里提前将 mysql的 jdbc依赖为每一个节点准备好
# 递归创建目标目录
mkdir -p /usr/share/java
# 进入目录
cd /usr/share/java
# wget从node00上下载jar
wget http://node00/cm6/mysql-connector-java.jar
2.7 安装服务
2.7.1 所有节点安装 JDK和 cm-agent
▲ 在所有节点完成以下操作
▲ 此处开启多屏操作
# 执行安装命令
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64
yum install -y cloudera-manager-agent
此处安装等待几分钟
2.7.2 管理节点安装 cm-server
▲ 在 node00节点完成以下操作
1、安装执行
# 执行安装命令 yum install -y cloudera-manager-server
此处安装等待一秒钟
2、上传 CDH安装包
1、进入目标目录
cd /opt/cloudera/parcel-repo
2、将 CDH安装包移动到此目录下
mv /var/www/html/cm6/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel .
3、校验
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
完成后结束安装
2.8 初始化 cloudera-manager-server
2.8.1 执行CM初始化脚本
▲ 在 node00节点完成以下操作
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver cms 123456
# mysql 数据库类型
# cmserver 数据库名称
# cms 对应数据库有登陆权限的用户名
# 123456 密码
2.8.2 启动cm-server服务
▲ 在 node00节点完成以下操作
-
启动cm-server服务
systemctl start cloudera-scm-server.service
-
查看服务运行状态
systemctl status cloudera-scm-server.service
# 确认 Active: active (running)
# 代表正常
-
通过端口监听检查服务启动情况
-
cm-server默认使用 7180端口进行访问
netstat -anp| grep 7180
▲ 此时若 2. 状态正常,反复执行 3. ,直到出现 4. ,则继续 5. 操作,此处需要等待几分钟
-
执行结果
[root@node00 parcel-repo]# netstat -anp| grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* LISTEN 92238/java
-
打开浏览器进入 node00:7180 (需要配置主机名映射,或者使用ip访问)
-
出现以下界面代表 Linus部分安装 OK
- 接下来是图形化界面安装,按照提示安装即可

-
默认账号:admin 密码:admin
-
如果一切顺利,那么恭喜你已经进入上图的页面,别着急,CDH的 Hadoop生态集群搭建才刚刚开始...
-
感谢您的阅读



浙公网安备 33010602011771号