【CDH实战01】基于CentOS7的CDH6.3.2完全分布式集群搭建【上】
写在前面
距离上一次写cdh集群搭建的文档已经一年多,今年2月份开始Cloudera全面下架了免费的安装包下载渠道,很多朋友在集群搭建的过程中按照之前的老文档遇到了一些问题。今天重新整理一次文档。
-
Cloudera官网公告
-
未订阅授权的用户无法使用CDH6.3.3和之后的版本
-
所以我们继续使用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 文件准备
-
因为使用离线安装的方式,请提前下载好需要用到的安装包
-
Cloudera官网下载需要访问带授权的链接,而国内访问Cloudera官网速度不稳定,所以我把安装文件上传到了百度网盘和天翼云盘(百度没有会员的朋友,如果有电信手机可以通过积分免费兑换天翼云盘会员)
-
百度网盘 链接:百度网盘-链接不存在 (提取码:amos)
-
天翼云盘 链接:天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 (访问码:shy7)
-
文件列表如下,共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的集群监控服务分散到多个节点
-
架构二:4台或以上,8G内存或以上。将cm的集群监控服务全部安装在一台节点
-
-
本例使用上述架构二
主机名 | CPU核心 | 物理内存 | 操作系统 | 服务 |
---|---|---|---|---|
node00 | 4 | 8 | CentOS 7 | cm-server、cm-agent、其他cm监控服务 |
node01 | 8 | 8 | CentOS 7 | cm-agent、hadoop生态组件 |
node02 | 8 | 8 | CentOS 7 | cm-agent、hadoop生态组件 |
node03 | 8 | 8 | CentOS 7 | cm-agent、hadoop生态组件 |
1.2.2 服务器准备
-
学习和测试:
- VMWare、VirtualBox等虚拟机
- AWS、阿里云、华为云、腾讯云等乱七八糟的云服务器
-
生产环境:
- 物理服务器
- AWS、阿里云、华为云、腾讯云等乱七八糟的云服务器
-
生产环境不用考虑CM消耗的内存资源(不然你们公司玩个X的大数据,每月云服务开支上千万的公司不在少数),当然生产环境通常也会直接购买阿里云的EMR或华为云的MRS作为商用Hadoop集群,但毕竟国内大数据服务起步晚、技术差、服务渣,所以除非不差钱又懒省事,通常还是会选择对Apache版本做二次开发或者选用CDH、HDP这类既免费又用起来还可以的商用Hadoop平台。
-
学习环境如果自己电脑实在内存捉襟见肘,可以考虑阿里云或华为云的按量计费服务器,下图来自阿里云(就别说贵了,比你去网吧消磨时间划算多了)
-
按量计费:启动服务器时开始扣费,用完挂起,会以极低的费用保管数据,需要使用再次开机计费。
二、安装前的准备工作
2.1 配置主机名和映射
- ⚠ CDH需要使用IPv4地址,暂不支持IPv6
- ⚠ CDH建议使用FQDN,即带有全域名的主机名
- 例如:
# 普通hostname node00 # FQDN(Fully Qualified Domain Name) node00.cdh6.amoscloud.com
2.2.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.2.2 配置FQDN
- 为每个机器单独配置自己的FQDN
# 第一台机器执行 echo 'node00.cdh6.amoscloud.com' > /etc/sysconfig/network # 第二台机器执行 echo 'node01.cdh6.amoscloud.com' > /etc/sysconfig/network # 第三台机器执行 echo 'node02.cdh6.amoscloud.com' > /etc/sysconfig/network # 第四台机器执行 echo 'node03.cdh6.amoscloud.com' > /etc/sysconfig/network
2.2.3 配置本地DNS映射
- 为每个机器配置/etc/hosts文件
# 每行格式为 ip FQDN hostname
echo -e "
192.168.222.100 node00.cdh6.amoscloud.com node00
192.168.222.101 node01.cdh6.amoscloud.com node01
192.168.222.102 node02.cdh6.amoscloud.com node02
192.168.222.103 node03.cdh6.amoscloud.com node03
" >> /etc/hosts
2.2 关闭防火墙
- ⚠ 每个节点都要完成以下操作
2.2.1 关闭防火墙服务
systemctl stop firewalld
2.2.2 禁用防火墙服务的开机启动
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.3 检查防火墙服务状态
systemctl status firewalld
- 执行结果 确认 Active: inactive (dead)
[root@node00 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) 3月 21 17:01:35 node00 systemd[1]: Starting firewalld - dynamic firewall daemon... 3月 21 17:01:36 node00 systemd[1]: Started firewalld - dynamic firewall daemon. 3月 21 17:01:37 node00 firewalld[795]: WARNING: AllowZoneDrifting is enabled. This is conside...now. 3月 21 20:37:33 node00 systemd[1]: Stopping firewalld - dynamic firewall daemon... 3月 21 20:37:35 node00 systemd[1]: Stopped firewalld - dynamic firewall daemon. Hint: Some lines were ellipsized, use -l to show in full.
2.3 暂时关闭SELinux
-
SELinux是Security-Enhanced Linux的简称,是Linux的安全增强模式,CDH安装过程中需要关闭SELinux,Cloudera官网给出的说明是,理论上兼容SELinux,所以在集群搭建完毕后可以重新开启SELinux,如果出现不兼容现象,Cloudera不提供技术支持,需要联系操作系统发行商解决。
-
⚠ 每个节点都要完成以下操作
2.3.1 查看SELinux状态
getenforce
- 执行结果
[root@node00 ~]# getenforce Enforcing
- 如果执行结果打印 Permissive 或者 Disabled ,可以直接跳过 2.3 步骤,如果和我一样是Enforcing继续操作
2.3.2 修改SELinux状态
-
将/etc/selinux/config中的SELINUX=enforcing 改为 SELINUX=permissive
-
使用sed直接替换
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
-
上面的设置需要重启服务器后永久生效
2.3.3 临时修改SELinux状态
- 嫌重启麻烦也可以先临时关闭
setenforce 0
2.3.4 查看SELinux状态
getenforce
- 执行结果
[root@node00 ~]# getenforce Permissive
2.4 时间同步
- CentOS 7 已经启用chronyd服务保证时间同步,不需要再安装ntpd
2.4.1 查看chronyd状态
systemctl status chronyd
- 执行结果 确认 Active: active (running)
[root@node00 ~]# systemctl status chronyd ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled) Active: active (running) since 日 2021-03-21 17:01:35 CST; 4h 9min ago Docs: man:chronyd(8) man:chrony.conf(5) Main PID: 745 (chronyd) CGroup: /system.slice/chronyd.service └─745 /usr/sbin/chronyd 3月 21 17:01:35 node00 systemd[1]: Starting NTP client/server... 3月 21 17:01:35 node00 chronyd[745]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG) 3月 21 17:01:35 node00 chronyd[745]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift 3月 21 17:01:35 node00 systemd[1]: Started NTP client/server. 3月 21 17:01:44 node00 chronyd[745]: Selected source 193.182.111.14 3月 21 17:01:51 node00 chronyd[745]: Can't synchronise: no selectable sources 3月 21 17:06:13 node00 chronyd[745]: Selected source 162.159.200.1 3月 21 17:07:19 node00 chronyd[745]: Selected source 193.182.111.14
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)