CDH6.3.1手动部署过程详情
1.环境准备
| 主机名 | 系统 | IP | 内存 | 磁盘 |
|---|---|---|---|---|
| cdh-1 | CentOS7 | 10.0.0.11 | 4G | 100G |
| cdh-2 | CentOS7 | 10.0.0.12 | 4G | 100G |
| cdh-3 | CentOS7 | 10.0.0.13 | 4G | 100G |
1.1 Linux基础优化(所有节点都需要优化)
#修改主机名
hostnamectl set-hostname cdh-1
hostnamectl set-hostname cdh-2
hostnamectl set-hostname cdh-3
#关闭防火墙并设置永久关闭
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
setenforce 0 #临时关闭
#永久关闭 将SELINUX= enforcing 修改为SELINUX=disabled
vim /etc/selinux/config
SELINUX=disabled
#修改hosts文件
10.0.0.11 cdh-1
10.0.0.12 cdh-2
10.0.0.13 cdh-3
#设置用户最大可打开的文件数,进程数,,内存占用
vim /etc/security/limits.conf
* soft nofile 32728
* hard nofile 1024999
* soft nproc 65535
* hard noroc unlimited
* soft memlock unlimited
* hard memlock unlimited
#配置生效
sysctl -p
#设置swap空间
echo "vm.swappiness = 0" >> /etc/sysctl.conf
#关闭大面积压缩
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
1.2 配置免密钥登陆其他节点服务器(cdh-1)
#配置免密钥登陆其他服务器,在cdh-1上生成公钥私钥,并将公钥私钥发送到cdh-1,cdh-2,cdh-3
ssh-keygen #一直回车即可生成公钥私钥
[root@cdh-1 ~]$ ll ~/.ssh/
total 12
-rw------- 1 root root 1675 Oct 12 09:45 id_rsa
-rw-r--r-- 1 root root 392 Oct 12 09:45 id_rsa.pub
#发送公钥,私钥发送至cdh-2,cdh-3
ssh-copy-id cdh-1
ssh-copy-id cdh-2
ssh-copy-id cdh-3
#在cdh-2上也执行ssh-keygen 同上,这样才能互相免密访问
2. 搭建CM私有仓库(cdh-1)
说明:我们有时候会因为网络不稳定的因素,导致安装某些服务直接失败。当安装包比较大的时候,我们就得考虑自建私有仓库了,这样会为我们节省不少时间。而自建私有仓库的确是很简单的一种方式,接下来我们就以CM和CDH的软件包为例,来建设一个局域网的镜像库。https://mirrors.huaweicloud.com/os/image 镜像包下载
2.1 配置 centos 源(cdh-1)
挂载centos7镜像
mount /dev/cdrom /mnt/
删除系统自带的源
cd /etc/yum.repos.d/
gzip *
新建一个本地yum源
cat >> /etc/yum.repos.d/local.repo << EOF
[centos]
name=centos
baseurl=file:///mnt
gpgcheck=0
EOF
验证
yum repolist
2.2. 安装Apache HTTP Server(cdh-1)
[root@cdh-1 ~]$ yum -y install httpd
2.3.配置httpd服务(cdh-1)
说明:当尝试从本地存储库下载包时,跳过此步骤可能会导致错误消息哈希验证失败,尤其是在Cloudera Manager 6及更高版本中。
[root@cdh-1 ~]$ cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.`date +%F`
[root@cdh-1 ~]$ grep ".tgz" /etc/httpd/conf/httpd.conf | grep -v ' #'
AddType application/x-gzip .gz .tgz
[root@cdh-1 ~]$ sed -i s'#.tgz#.tgz .parcel#' /etc/httpd/conf/httpd.conf
[root@cdh-1 ~]$ grep ".tgz" /etc/httpd/conf/httpd.conf | grep -v ' #'
AddType application/x-gzip .gz .tgz .parcel #其实我就是在.tgz后面加了一个“.parcel”的后缀,这是CM官方强调要做的一个操作!
2.4.启动httpd服务(cdh-1)
systemctl start httpd #启动httpd
systemctl enable httpd #设置永久启动
systemctl status httpd #查状态
2.5 centos源配置成http方式获取(cdh-1)
#在http服务的静态资源目录创建centos目录
mkdir /var/www/html/centos
将centos的镜像文件复制到centos目录
cp -rvf /mnt/* /var/www/html/centos/
#可以通过http访问了
http://10.0.0.11/centos/
修改cdh-1的本地centos源的配置
vi /etc/yum.repos.d/local.repo
baseurl=http://cdh-1/centos
#取消挂载
umount /dev/cdrom /mnt
#其他节点(cdh-2,cdh-3)
cat >> /etc/yum.repos.d/local.repo << EOF
[centos]
name=centos
baseurl=http://cdh-1/centos
gpgcheck=0
EOF
#验证
yum repolist
2.5.制作CM私有仓库(cdh-1)
1. 创建存放CM安装包的目录
[root@cdh-1 ~]$ mkdir /var/www/html/cm -p
2.下载CM对应到版本到对应到自建到web路径中
#使用Xftp上传cm压缩包
[root@cdh-1 /var/www/html/cm ]$ ll
total 1245576
-rw-r--r-- 1 root root 10483568 Oct 11 14:10 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 1079967408 Oct 11 14:14 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 11488 Oct 11 14:10 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 10996 Oct 11 14:10 cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 14209868 Oct 11 14:10 enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 184988341 Oct 11 14:11 orvacle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
3. 制作本地镜像
[root@cdh-1 ~]$ yum -y install yum-utils createrepo yum-plugin-priorities
[root@cdh-1 /var/www/html/cm ]$ createrepo . #创建yum源的元数据
[root@cdh-1 /var/www/html/cm ]$ ll
total 1259460
-rw-r--r-- 1 root root 10483568 Oct 11 14:10 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 1079967408 Oct 11 14:14 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 11488 Oct 11 14:10 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 10996 Oct 11 14:10 cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 14209868 Oct 11 14:10 enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 root root 184988341 Oct 11 14:11 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
drwxr-xr-x 2 root root 4096 Oct 12 12:05 repodata #这个目录就是我们执行上面的命令后生成的目录,该文件不可被删除!否则你配置的yum的使用者依旧无法使用yum命令进行安装
4.下载CDH的版本存放到指定路径中
[root@cdh-1 ~]$ mkdir /var/www/html/cdh
[root@cdh-1 /var/www/html/cdh ]$ ll
total 1051416
-rw-r--r-- 1 root root 1076605144 Oct 12 12:10 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
-rw-r--r-- 1 root root 33887 Oct 12 12:10 manifest.json
-rw-r--r-- 1 root root 40 Oct 12 12:10 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 #需要将后缀sha1 改成sha ,也可以通过手动生成sha , 在命令行执行
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
cat CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
mv 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.sha
5.各个主机配置CM自建的yum仓库
cat >> /etc/yum.repos.d/cloudera-manager.repo << EOF
[cloudera-manager]
# Packages for Cloudera Manager, Version 5, on RedHat or CentOS 7 x86_64
name=Cloudera Manager
baseurl=http://cdh-1/cm/
enabled = 1
gpgcheck = 0
EOF
#验证
yum repolist
2.7 安装依赖包(所有节点)
yum install -y bind-utils libxslt cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 Mysql-python fuse
如果我们要删除rpm -e --nodeps rpm -qa|grep libselinux-2.5-14.1.el7.i686,可以增加参数 --nodeps ,就可以强制删除
注意:Protected multilib versions: libselinux-2.5-15.el7.x86_64 != libselinux-2.5-14.1.el7.i686这个错误必须强制卸载i686 32位
2.8.安装 Cloudera Manager Server端(由于我们使用自建的镜像地址安装,而且也配置好了yum源,我们这里直接安装即可!(cdh-1)
#安装JDK
yum install -y oracle-j2sdk1.8.x86_64
#安装cloudera-manager
yum install -y cloudera-manager-agent cloudera-manager-daemons cloudera-manager-server cloudera-manager-server-db-2
2.9.安装agent节点(cdh-2,cdh-3)
#安装jdk
yum install -y oracle-j2sdk1.8.x86_64
#安装agent
yum install cloudera-manager-daemons cloudera-manager-agent -y
3.0 二进制部署MySQL服务,上传MySQL的二进制安装包到服务器上(cdh-1)
#移除原有的数据库插件
yum remove -y mariadb-libs.x86_64
mkdir /data/database -p
#使用xftp上传压缩包
mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
tar xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz -C /data/database
#解压缩并创软连接
ln -s /data/database/mysql-8.0.25-linux-glibc2.12-x86_64 /data/database/mysql
ln -s /data/database/mysql/bin/mysql /usr/bin
mkdir /data/database/mysql/{data,logs,conf}
useradd mysql
chown -R mysql:mysql ./mysql/*
#初始化数据库目录
./mysqld --initialize-insecure --user=mysql --datadir=/data/database/mysql/data
[root@mysql /data/database/mysql]$ ./bin/mysqld --initialize-insecure --user=mysql --datadir=/data/database/mysql/data
2021-12-15T02:44:09.893849Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2021-12-15T02:44:09.893931Z 0 [System] [MY-013169] [Server] /data/database/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.25) initializing of server in progress as process 2110
2021-12-15T02:44:09.900447Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-12-15T02:44:12.449207Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-12-15T02:44:13.838064Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
#提示使用空密码创建
配置system启动mysqld服务
#添加配置文件
[root@mysql /data/database/mysql/conf]$ vim my.cnf
[mysqld]
user=mysql
basedir=/data/database/mysql
datadir=/data/database/mysql/data
socket=/tmp/mysql.sock
max_connections = 1024
[mysql]
socket=/tmp/mysql.sock
cat >> /data/database/mysql/conf/my.cnf << EOF
[mysqld]
server_id=123456
port = 3306
user = mysql
basedir = /data/database/mysql
datadir = /data/database/mysql/data
socket = /tmp/mysql.sock
max_connections = 1024
#pid-file = /data/database/mysql/mysql.pid
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
default-storage-engine = INNODB
log-error = /data/database/mysql/logs/error.log
slow_query_log = on
long_query_time = 2
slow-query-log-file = /data/database/mysql/logs/slow.log
log_bin = /data/database/mysql/bin_log/mysql-bin
[mysql]
socket=/tmp/mysql.sock
EOF
#将二进制安装的MySQL纳入systemd管理
vim /usr/lib/systemd/system/mysqld.service
cat >> /usr/lib/systemd/system/mysqld.service << EOF
[Unit]
Description=MySQL Server
After=network.service
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/data/database/mysql/bin/mysqld --defaults-file=/data/database/mysql/conf/my.cnf --daemonize
LimitNOFILE=5000
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false
EOF
简写如下
[root@mysql /usr/lib/systemd/system]$ vim mysqld.service
[Unit]
Description=MySQL Server
After=network.service
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
ExecStart=/data/database/mysql/bin/mysqld --defaults-file=/data/database/mysql/conf/my.cnf --daemonize
Restart=on-failure
#修改了配置,需要重新加载,再尝试通过systemctl启动mysqld.service
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld.service
systemctl status mysqld.service
3.1 连接MySQL数据库(cdh-1)
[root@cdh-1 /etc/yum.repos.d]$ mysql
#重置MySQL密码
alter user user() identified by 'kgp_pcloud';
3.2 .配置元数据(cdh-1)
CREATE DATABASE scm DEFAULT CHARACTER SET UTF8;
CREATE USER scm@'%' IDENTIFIED WITH mysql_native_password BY 'scm2022#';
GRANT ALL PRIVILEGES ON scm.* TO scm@'%';
CREATE DATABASE rman DEFAULT CHARACTER SET UTF8;
CREATE USER rman@'%' IDENTIFIED WITH mysql_native_password BY 'rman2022#';
GRANT ALL PRIVILEGES ON rman.* TO rman@'%';
CREATE DATABASE hive DEFAULT CHARACTER SET UTF8;
CREATE USER hive@'%' IDENTIFIED WITH mysql_native_password BY 'hive2022#';
GRANT ALL PRIVILEGES ON hive.* TO hive@'%';
CREATE DATABASE oozie DEFAULT CHARACTER SET UTF8;
CREATE USER oozie@'%' IDENTIFIED WITH mysql_native_password BY 'oozie2022#';
GRANT ALL PRIVILEGES ON oozie.* TO oozie@'%';
CREATE DATABASE hue DEFAULT CHARACTER SET UTF8;
CREATE USER hue@'%' IDENTIFIED WITH mysql_native_password BY 'hue2022#';
GRANT ALL PRIVILEGES ON hue.* TO hue@'%';
CREATE DATABASE sentry DEFAULT CHARACTER SET UTF8;
CREATE USER sentry@'%' IDENTIFIED WITH mysql_native_password BY 'sentry2022#';
GRANT ALL PRIVILEGES ON sentry.* TO sentry@'%';
FLUSH PRIVILEGES;
3.4.初始化管理节点(cdh-1)
使用Xftp上传jar包到指定的目录
#创建/usr/share/java目录
mkdir -p /usr/share/java
#复制jar包到/usr/share/java下
cp mysql-connector-java-5.1.49.jar /usr/share/java/
#注意:需要改名为mysql-connector-java.jar
mv /usr/share/java/mysql-connector-java-5.1.49.jar /usr/share/java/mysql-connector-java.jar
3.5 修改配置文件所有节点,修改Cloudera Agent配置文件/etc/cloudera-scm-agent/config.ini,配置server_host为主节点cdh-1
#通过vim命令修改
vim /etc/cloudera-scm-agent/config.ini
server_host=cdh-1
#也可以通过sed命令修改
sed -i "s/server_host=localhost/server_host=cdh-1/g" /etc/cloudera-scm-agent/config.ini
3.5. 配置JAVA_HOME(所有节点)
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export PATH=$PATH:$JAVA_HOME/bin
3.6 初始化数据库配置(cdh-1)
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm
4. 启动 Cloudera Manager(cdh-1)
#在主节点启动Cloudera Manager
systemctl start cloudera-scm-server
#设置开机自启
systemctl enable cloudera-scm-server
4.1 启动Cloudera Agent(所有节点)
#启动
systemctl start cloudera-scm-agent
#开机自启
systemctl enable cloudera-scm-agent

浙公网安备 33010602011771号