Bootstrap

CDH集群6.3.2 + CM6.3.1离线安装部署实操保姆级详细教程

目录

一、序

CDH简介

CM简介

为什么选择CDH而不是Apache Hadoop

CDH安装说明

二、准备工作

前置条件

测试服务器准备

软件环境准备

CDH安装包准备

查看CDH6.3.2安装包

查看CM6.3.1安装包

查看JDK1.8安装包

环境配置

配置静态网络IP

 修改主机名

修改hosts配置

配置SSH免密登录

创建密钥对

查看密钥对

验证免密登录

远程批量操作pssh工具

关闭防火墙

 禁用SELinux

配置swap

 关闭透明大页

 配置最大进程数和最大文件句柄数

禁用atime

集群时钟同步

安装JDK

安装MySQL

部署MySQL

MySQL配置

初始化数据库及用户

安装JDBC驱动程序

搭建私有Yum源

安装httpd服务

配置web服务

制作本地repo源

三、CM6.3.1安装步骤

集群角色

安装CM6.3.1

安装cloudera manager server

初始化scm数据库

 启动cloudera manager server

四、CDH集群6.3.2安装步骤

集群安装向导

集群安装设置


一、序

官方文档:Cloudera Enterprise 6.3 Documentation

CDH简介

CDH是一个基于Apache Hadoop的开源软件分发版本,由Cloudera公司开发和维护。CDH提供了统一批处理、交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案,组件包括Hadoop分布式文件系统(HDFS)、分布式计算框架(MapReduce)及其他相关开源组件,如Hive、HBase、Impala等。CDH的目标是简化大数据处理和分析的过程,使企业能够更好地利用大数据来获取洞察力和价值。

CM简介

CM是Cloudera提供的一个集中式管理工具,用于管理和监控CDH集群。CM提供了直观的Web界面,管理员可以使用该界面配置、部署和监控CDH集群。CM还提供了一些高级功能,如自动化部署、故障诊断和报警通知,来帮助管理员更好地管理和维护CDH集群。通过CM管理员可以轻松管理集群的配置、监控集群的健康状况,并执行集群维护任务和性能调优等操作。

为什么选择CDH而不是Apache Hadoop

CDH和Apache Hadoop比较
特点CDHApache Hadoop
功能全面性提供了广泛的组件和工具,如Hive、HBase、Impala等,支持不同的大数据处理和分析需求。提供核心的分布式存储(HDFS)和计算(MapReduce)功能,需要使用其他组件或工具进行更高级的数据处理和分析。
管理工具包含Cloudera Manager(CM),提供集中式的管理和监控功能,支持自动化部署、故障诊断和报警通知等。Apache Hadoop原生没有提供类似的集中式管理工具,通常需要使用其他第三方工具进行管理和监控。
商业支持Cloudera提供商业支持和服务,包括技术支持、培训和咨询等。Apache Hadoop是一个开源项目,没有官方提供的商业支持,但有许多第三方公司提供相关支持和服务。
发展速度CDH的发展速度相对较快,并且每个版本都经过Cloudera的测试和验证。Apache Hadoop作为一个开源项目,有更多社区贡献者,因此发展速度更快,有更频繁的更新和新特性引入。

综上所述,CDH提供了更全面和更好用的功能及配套管理工具,使大数据处理和分析更简化和集中化。一般来说集群规模越大对集群的管理和运维能力要求越高,此时CDH能够发挥的价值就会越大。

CDH安装说明

Cloudera企业版收费,不差钱又缺技术支持的可以考虑购买,Cloudera社区版开源免费,社区文档和资源也比较丰富,适合小规模集群部署,不过根据Cloudera官方发布的公告,自2021年7月起,Cloudera社区版已经停止更新和发布,CDH 6.3.2将是Cloudera社区版的最后一个免费版本。而且从2021年2月1日开始,所有的CDH和Cloudera Manager包括历史版本下载都需要用户名和密码,就是用户需要订阅 Cloudera 产品,获取到对应的授权才能下载。所以我们将使用离线包进行安装部署,本文以CDH6.3.2+CM6.3.1为例详细介绍大数据集群的安装部署过程供大家参考,文中离线安装包也会无偿分享给大家下载使用,老铁们,码字不易记得点赞收藏,关注咱不迷路!

二、准备工作

前置条件

测试服务器准备

本文以3台测试服务器为例,以root用户身份登录,节点配置如下:

测试服务器配置信息
序号主机IPCPU内存磁盘hdfs角色
1node1192.168.5.1016C40G512G系统盘(xfs)+1T数据盘(ext4)

namenode1/

datanode

2node2192.168.5.1116C40G512G系统盘(xfs)+1T数据盘(ext4)

namenode2/

datanode

3node3192.168.5.1216C40G512G系统盘(xfs)+1T数据盘(ext4)datanode

软件环境准备

基础软件环境信息
序号软件名称版本信息备注
1Centos操作系统发行版CentOS Linux release 7.9.2009 x86_64CDH要求7.2或更高
2MySQL数据库5.7.43 x86_64CDH6推荐5.7或更高,务必使用utf8编码而非utf8mb4编码
3JDK1.8.0_181 x86_64CDH6将不再支持JDK1.7,推荐1.8u181
4python2.7.5
5CDH6.3.2
6CM6.3.1

CDH安装包准备

CDH、CM和JDK安装包需要提前下载,目前官方不提供免费下载,我已经上传到百度网盘方便大家使用,链接地址: CDH全部安装包,如果链接失效了请留言或私信我,下载网盘里的cdh文件夹并保存到本地。

查看CDH6.3.2安装包
[root@node1 cdh]# tree CDH6.3.2/
CDH6.3.2/
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
└── manifest.json

0 directories, 4 files
查看CM6.3.1安装包
[root@node1 cdh]# tree CM6.3.1
CM6.3.1
├── allkeys.asc
├── cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
├── cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
└── enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm

0 directories, 6 files
查看JDK1.8安装包
[root@node1 cdh]# tree JDK
JDK
└── oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

0 directories, 1 file

环境配置

配置静态网络IP

Centos7静态网络配置文件是/etc/sysconfig/network-scripts/ifcfg-<interface>,我本机网络接口名称为p2p1,修改所有节点网络配置,具体参数如下:

[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-p2p1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="p2p1" # 网络接口名称
UUID="31b15de1-225f-4540-b135-b80d5da6f335"
DEVICE="p2p1"
ONBOOT="yes" # 设置开机启动,确保网络配置有效,否则无法建立网络连接
IPADDR="192.168.5.10" # 静态IP地址
PREFIX="24" # 子网掩码,相当于255.255.255.0
GATEWAY="192.168.5.1" # 默认网关IP地址
DNS1="192.168.1.1" # 首选DNS服务器IP地址,上网必备
IPV6_PRIVACY="no" # 禁用IPV6

重启网络可立即生效

systemctl restart network
 修改主机名

修改所有节点的hostname,重启节点立即生效

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
修改hosts配置

配置所有节点的IP和域名映射关系

# vim /etc/hosts
192.168.5.10 node1
192.168.5.11 node2
192.168.5.12 node3
配置SSH免密登录

ssh-keygen 用于生成和管理 SSH 密钥对,SSH 密钥对由公钥和私钥组成,公钥用于在 SSH 认证过程中提供给远程服务器进行安全认证,通常会添加到远程服务器的 authorized_keys 文件中,而私钥则默认保存在本地,root用户默认将私钥对保存在/root/.ssh目录下。

创建密钥对

node1和node2节点上生成ssh密钥对,执行ssh-keygen命令,过程如下:

# 一路回车,生成密钥对
[root@node1 ~]# ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AJWzRl9kwU3kbQ7C518oIKCmQdpvKNeQxiIvxo4ly/w root@node1
The key's randomart image is:
+---[RSA 2048]----+
|  . ..o. o+=o    |
| = . o+. oo...   |
|+ B o..+..+ + o  |
|o+ O  o... = + . |
|+o* +.  S   o o .|
|*B .         o . |
|o+            .  |
|  .              |
|   E             |
+----[SHA256]-----+
查看密钥对
[root@node1 ~]# ll .ssh
total 8
-rw-------. 1 root root 1675 Aug 22 09:06 id_rsa
-rw-r--r--. 1 root root  392 Aug 22 09:06 id_rsa.pub

copy公钥到各个节点,以本机为例,执行过程如下:

[root@node1 ~]# ssh-copy-id node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node1 (192.168.5.10)' can't be established.
ECDSA key fingerprint is SHA256:WoqiUZLXfc+dFxBBkVaC/hJybMxqwqwvuHCR1seMkLE.
ECDSA key fingerprint is MD5:f5:9e:e3:ba:f4:15:4d:aa:96:16:bc:df:4c:05:98:ac.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password: 
Permission denied, please try again.
root@node1's password: # 首次需要输入密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node1'"
and check to make sure that only the key(s) you wanted were added.
验证免密登录
[root@node1 ~]# ssh node2
Last login: Sun Aug 20 21:22:36 2023 from 192.168.5.117
远程批量操作pssh工具

开源工具pssh工具可用于在多台服务器上执行远程批量操作命令,大大简化了集群管理,提升了效率和准确性。

node1节点安装pssh工具包

# 下载
https://pypi.python.org/packages/source/p/pssh/pssh-2.3.1.tar.gz
# 解压
tar xvf pssh-2.3.1.tar.gz
# 安装
python setup.py install
# 验证
pssh --version

执行命令前务必提前配置好ssh免密登录,验证如下:

[root@node1 ~]# pssh -H root@node2 date
[1] 10:43:30 [SUCCESS] root@node2

创建nodes文件,配置好所有节点

[root@node1 ~]# vim nodes
root@node1
root@node2
root@node3
关闭防火墙

pssh批量禁用和关闭所有节点防火墙

[root@node1 ~]# pssh -h ./nodes -i 'systemctl disable firewalld'
[1] 10:50:18 [SUCCESS] root@node1
[2] 10:50:18 [SUCCESS] root@node2
[3] 10:50:18 [SUCCESS] root@node3
[root@node1 ~]# pssh -h ./nodes -i 'systemctl stop firewalld'
[1] 10:49:59 [SUCCESS] root@node1
[2] 10:49:59 [SUCCESS] root@node2
[3] 10:49:59 [SUCCESS] root@node3
 禁用SELinux

pssh批量修改所有节点的/etc/sysconfig/selinux,永久禁用

pssh -h ./nodes -i "sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux"

pssh批量验证修改是否成功

[root@node1 ~]# pssh -h ./nodes -i "cat /etc/sysconfig/selinux | grep SELINUX="
[1] 11:05:38 [SUCCESS] root@node1
# SELINUX= can take one of these three values:
SELINUX=disabled
[2] 11:05:38 [SUCCESS] root@node2
# SELINUX= can take one of these three values:
SELINUX=disabled
[3] 11:05:38 [SUCCESS] root@node3
# SELINUX= can take one of these three values:
SELINUX=disabled
配置swap

内核参数swappiness用于控制系统在内存紧张时将内存中的数据交换到硬盘交换空间(swap)中 ,一般而言,swappiness值可以设置在 0 到 100 之间。内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上推荐设置一个比较小的值,而不要禁用交换。

pssh批量给所有节点添加vm.swappiness=1,重启机器永久生效

pssh -h ./nodes -i 'echo vm.swappiness = 1 >> /etc/sysctl.conf' # 永久生效配置
pssh -h ./nodes -i 'sysctl -p' # 动态加载使当前会话生效

 验证是否添加成功

[root@node1 ~]# pssh -h ./nodes -i "cat /etc/sysctl.conf | grep vm.swappiness"
[1] 11:26:41 [SUCCESS] root@node1
vm.swappiness = 1
[2] 11:26:41 [SUCCESS] root@node2
vm.swappiness = 1
[3] 11:26:41 [SUCCESS] root@node3
vm.swappiness = 1
 关闭透明大页
[root@node1 log]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

RAC环境下透明大页(Transparent HugePages )会导致异常节点重启和性能问题,即使单机环境也可能有性能问题,总之不建议启用透明大页。

注意:如果不关闭透明大页,CM Server安装过程中检查主机项还会显示黄色告警。

临时有效解决方法:pssh批量关闭透明大页

[root@node1 ~]# pssh -h ./nodes -i "echo never > /sys/kernel/mm/transparent_hugepage/defrag"
[1] 11:38:37 [SUCCESS] root@node1
[2] 11:38:37 [SUCCESS] root@node2
[3] 11:38:37 [SUCCESS] root@node3
[root@node1 ~]# pssh -h ./nodes -i "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
[1] 11:38:39 [SUCCESS] root@node1
[2] 11:38:39 [SUCCESS] root@node3
[3] 11:38:39 [SUCCESS] root@node2

永久有效解决方法

[root@node1 log]# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
[root@node1 log]# chmod +x /etc/rc.d/rc.local

验证是否关闭成功

[root@node1 ~]# pssh -h ./nodes -i "cat /sys/kernel/mm/transparent_hugepage/defrag;cat /sys/kernel/mm/transparent_hugepage/enabled"
[1] 10:14:28 [SUCCESS] root@node2
always madvise [never]
always madvise [never]
[2] 10:14:28 [SUCCESS] root@node3
always madvise [never]
always madvise [never]
[3] 10:14:28 [SUCCESS] root@node1
always madvise [never]
always madvise [never]
 配置最大进程数和最大文件句柄数

用户的进程和文件句柄数配置文件是/etc/security/limits.conf,类型包括硬限制(hard)和软限制(soft),*表示所有用户,nproc表示打开最大进程数,nofile表示最大文件句柄数。Cloudera推荐最大进程数nproc为65536或26214。

pssh批量修改所有用户的进程和文件句柄最大限制

pssh -h ./nodes -i "echo '* soft nproc 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* hard nproc 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* soft nofile 65535' >> /etc/security/limits.conf"
pssh -h ./nodes -i "echo '* hard nofile 65535' >> /etc/security/limits.conf"
禁用atime

Linux文件系统会保留记录每个文件访问时间的元数据,这可能会导致即使是读取操作也会导致磁盘写入。为了提高文件读取性能,Cloudera建议在/etc/fstab配置文件中使用noatime挂载选项来禁用atime选项。 

pssh批量禁用文件最后访问时间,本机的挂载数据目录是/data,修改如下:

# 数据目录添加noatime
pssh -h ./nodes -i "sed -i 's/\/data                   ext4    defaults/\/data                   ext4    defaults,noatime/' /etc/fstab"
# 重新挂载不需要重启节点
mount -o remount /data
集群时钟同步

Centos7默认使用Chrony工具而非NTP进行时间同步,Chrony和NTP两者有冲突只能选其一,CDH6推荐使用Chrony,安装和启动命令如下:

# 安装
yum -y install chrony
# 启动
systemctl start chronyd

如果已安装可跳过,修改硬件时钟为UTC,时区为本地时区

# 硬件时钟设置为UTC
pssh -h ./nodes -i "timedatectl set-local-rtc 0"
# 设置本地时区,显示本地时间
pssh -h ./nodes -i "timedatectl set-timezone Asia/Shanghai"
# 手动加载RTC设置
pssh -h ./nodes -i "hwclock --systohc"

通过timedatectl查看时间

[root@node1 ~]# timedatectl
      Local time: Tue 2023-08-22 15:14:57 CST
  Universal time: Tue 2023-08-22 07:14:57 UTC
        RTC time: Tue 2023-08-22 07:14:57
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
安装JDK

Cloudera推荐安装JDK1.8u181版本,打开CDH安装包,oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm包已经放在了JDK目录中,在所有节点上安装该版本JDK,安装配置比较简单,请移步我的另一篇文章:Centos7安装64位JDK1.8,参考”使用rpm安装“内容执行安装。Centos7安装64位JDK1.8

安装MySQL
部署MySQL

node1节点安装部署MySQL5.7服务器,具体安装步骤请移步我的另一篇文章:Linux安装和卸载MySQL5.7详细教程

MySQL配置

MySQL的配置文件是/etc/my.cnf, Cloudera的推荐配置如下:

注意此处有坑:对于MySQL5.7高版本,启动CM Server连接MySQL时可能会报com.mysql.jdbc.exceptions.jdbc4.CommunicationsException异常,原因是默认开启了SSL认证,相当于useSSL=true,解决方法就是在配置中添加skip-ssl重启MySQL服务,另外[mysqld_safe]配置项已废弃不用,以下的配置均已经过验证。

[mysqld]
# 务必禁用掉ssl,相当于useSSL=false
skip-ssl 

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0

key_buffer_size = 32M
max_allowed_packet = 16M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

# 设置数据库错误日志时间显示为系统时间
log_timestamps=system

# 设置安全策略
validate_password_policy=LOW
validate_password_length=4
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

# [mysqld_safe] 5.7已废弃该配置
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

重启MySQL服务器使配置生效

systemctl restart mysqld 
初始化数据库及用户

Cloudera官网要求初始化的数据库及用户如下:

 创建以上所有组件数据库,执行以下脚本:

[root@node1 ~]# mysql -uroot -p
# scm
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'abcd1234';

# amon
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'abcd1234';

# rman
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'abcd1234';

# hue
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'abcd1234';

# hive
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'abcd1234';

# sentry
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'abcd1234';

# nav
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'abcd1234';

# navms
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'abcd1234';

# oozie
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'abcd1234';

# 最后刷新一下权限
flush privileges;

# 检查
show databases;
安装JDBC驱动程序

用于各节点连接数据库,Cloudera要求必须创建在/usr/share/java目录下才能被组件使用。

# 创建目录
pssh -h ./nodes -i 'mkdir -p /usr/share/java/'
# 复制到各个节点
pscp -h ./nodes /var/www/html/cdh/mysql/mysql-connector-java-5.1.46-bin.jar /usr/share/java/
# 修改权限
pssh -h ./nodes -i 'cd /usr/share/java;chmod 777 mysql-connector-java-5.1.46-bin.jar'
# 重命名jar包以便找到
pssh -h ./nodes -i 'cd /usr/share/java;ln -s mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar'
# 验证是否创建成功
pssh -h ./nodes -i 'tree /usr/share/java'
搭建私有Yum源

制作CDH和CM的本地repo源,方便内网集群节点访问。

安装httpd服务

node1节点安装Apache httpd服务,用于后续通过Http方式访问和下载CDH和CM安装包。

# 安装httpd和createrepo
yum -y install httpd createrepo
# 启动
systemctl start httpd
# 开机启动
systemctl enable httpd

注意:httpd服务在传输parcel文件时,默认会设置“Content-Encoding”,导致CM Server认为parcel文件已经被httpd压缩并尝试解压缩,结果会报错,解决办法是修改httpd的配置文件。

修改配置文件 /etc/httpd/conf/httpd.conf,在<IfModule mime_module>中添加支持.parcel文件类型,用于远程下载parcel文件。 

[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz .parcel
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

重启httpd服务

systemctl restart httpd
配置web服务

node1节点移动cdh到httpd服务的根目录/var/www/html下,生成repo元数据,用于通过Yum访问。

[root@node1 ~]# mv /opt/apps/cdh /var/www/html
[root@node1 ~]# tree /var/www/html
/var/www/html
└── cdh
    ├── CDH6.3.2
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
    │   ├── CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
    │   └── manifest.json
    ├── CM6.3.1
    │   ├── allkeys.asc
    │   ├── cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
    │   ├── cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
    │   └── enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
    ├── JDK
    │   └── oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
    └── mysql
        ├── 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
        ├── 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
        ├── 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
        ├── 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
        ├── 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
        └── mysql-connector-java-5.1.46-bin.jar

5 directories, 17 files
[root@node1 ~]# cd /var/www/html/cdh/CM6.3.1/
[root@node1 CM6.3.1]# createrepo .

验证http访问

制作本地repo源

在/etc/yum.repos.d目录下创建cm-local.repo配置文件,添加如下内容:

[root@node1 yum.repos.d]# vim cm-local.repo 
[cm-repo]
name=cm-repo
baseurl=http://192.168.5.10/cdh/CM6.3.1
enabled=1 # 启用yum
gpgcheck=0 # 不检查检查gpg

复制到集群其他节点,执行如下操作:

# 远程复制
pscp -h ./nodes /etc/yum.repos.d/cm-local.repo /etc/yum.repos.d/
# 先清空再添加缓存
pssh -h ./nodes -i 'yum clean all && yum makecache'
# 查看当前所有yum源
pssh -h ./nodes -i 'yum repolist'

三、CM6.3.1安装步骤

集群角色

集群CM角色
序号节点CM服务角色
1node1

cloudera-scm-server cloudera-scm-agent

2node2cloudera-scm-agent
3node3cloudera-scm-agent

安装CM6.3.1

安装cloudera manager server

首先node1节点安装cloudera manager server,方便后续通过Web UI安装CDH。

yum -y install cloudera-manager-server
初始化scm数据库
[root@node1 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm abcd1234
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/java/jdk1.8.0_181-cloudera/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Tue Aug 22 22:00:51 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!
 启动cloudera manager server
# 启动
systemctl start cloudera-scm-server
# 开机启动
systemctl enable cloudera-scm-server
# 查看状态
systemctl status cloudera-scm-server

查看启动日志/var/log/cloudera-scm-server/cloudera-scm-server.log,无异常表示启动成功。 

[root@node1 ~]# tail -3 /var/log/cloudera-scm-server/cloudera-scm-server.log
2023-08-22 22:11:22,656 INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@30096cd2{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
2023-08-22 22:11:22,656 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @39407ms
2023-08-22 22:11:22,656 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

四、CDH集群6.3.2安装步骤

集群安装向导

浏览器地址栏输入http://192.168.5.10:7180/cmf/login,打开登录Web页面。

 使用默认用户名/密码=admin/admin登录CM,进入欢迎页面,点击“继续”。

 勾选接受许可条款和条件,点击“继续”。

 选择Cloudera Express免费版本,点击“继续”。

进入集群安装页面,点击“继续”。

编辑集群名称,填入cdh6.3.2,安装成功后可以重命名集群,点击“继续”。

使用模式输入主机名称或者IP地址,点击“搜索”找到主机后勾选节点,点击“继续”。

Cloudera Manager Agent的自定义存储库输入CM仓库地址:http://192.168.5.10/cdh/CM6.3.1。

CDH and other software选择“使用 Parcel (建议)”,点击“更多选项”进入Parcel存储库设置页面。“Parcel目录”和“本地Parcel存储库路径”不用编辑选择默认目录就好,编辑“远程Parcel存储库URL”,输入CDH仓库地址: http://192.168.5.10/cdh/CDH6.3.2/
,点击“-”删除其它URL,点击“保存更改”。

 上一步保存后此处的CDH版本会自动刷新,点击“继续”。

安装JDK,如果已安装请跳过,点击“继续”。

输入root用户的密码,用于SSH登录,点击“继续”。

安装Agent到集群各节点,点击“详细信息”可查看安装过程。

安装完毕自动跳转到下一步开始下载并安装Parcels。

点击“Inspect Network Performance”和“Inspect Hosts”,检查网络和主机性能。如果出现黄色告警,查看“显示检查器结果”,逐项解决后点击“重新运行”,直到所有的检查都通过方可点击“继续”,也可以直接选择最后一项跳过告警,点击“继续”。

集群安装设置

进入集群设置页面,选择需要安装的服务组合。

我这里选择自定义服务,选择自己需要的组件,点击“继续”。

进入集群自定义角色分配,根据自己的规划给节点分配角色。

配置完成,点击“按主机查看”,点击“继续” 

进入数据库设置页面,选择数据库类型MySQL、输入主机名称、数据库、用户及密码,点击“测试连接”,测试成功后,点击“继续”。

进入审核更改页面,检查默认的目录设置是否合适,可根据实际情况调整,确认无误后点击“继续”。 

开始运行命令进行各个组件安装,完成后点击“继续”。

进入汇总页面,表示集群组件安装成功并启动,点“完成”。

最后进入CM管理主页,至此CDH6.3.2安装成功!

;