CDH6.1.1离线部署

CDH6.1.1离线部署

节点规划

节点 JDK1.8 Parcel文件离线源 MySQL5.7 CM服务进程 大数据组件
node01 Activity Monitor等 NN、JournalNode
node02 NN、JournalNode
node03 DN、ZK、JournalNode
node04 DN、ZK
node05 DN、ZK

相关资源

文档资源

下载资源

集群初始化准备

服务器准备

阿里云服务器五台,基本配置:2核16G,CentOS7.2 64位

配置所有节点hostname

1
2
3
4
5
[root@node01 opt]# hostnamectl set-hostname node01
[root@node02 opt]# hostnamectl set-hostname node02
[root@node03 opt]# hostnamectl set-hostname node03
[root@node04 opt]# hostnamectl set-hostname node04
[root@node05 opt]# hostnamectl set-hostname node05

配置所有节点主机名与IP地址对应关系

1
2
3
4
5
6
7
8
9
## 阿里云服务器统一使用内网IP
[root@node01 opt]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.26.56.41 node01
172.26.56.42 node02
172.26.56.43 node03
172.26.56.44 node04
172.26.56.45 node05

关闭所有节点防火墙并清空规则

1
2
3
[root@node01 opt]# systemctl stop firewalld
[root@node01 opt]# systemctl disable firewalld
[root@node01 opt]# iptables -F

关闭所有节点selinux

1
2
3
4
5
6
7
8
9
10
11
12
[root@node01 opt]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

安装python-psycopg2

1
2
3
4
5
6
7
## psycopg2 库是 python 用来操作 postgreSQL 数据库的第三方库。使用时需要先进行安装。
## 这一步可以忽略,主要是为了后续HUE的使用。根据官方文档安装相关插件即可
[root@node01 tools]# yum -y install python-pip
## 如果这一步提示报错,需要下载相关依赖插件,再次执行
[root@node01 tools]# yum -y install epel-release
[root@node01 tools]# yum -y install python-pip
[root@node01 tools]# pip install psycopg2==2.7.5 --ignore-installed

集群时间同步(云服务器省略)

JDK安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 为了避免后期环境冲突,建议将JDK安装在/usr/java目录下面
[root@node01 tools]# mkdir /usr/java
[root@node01 tools]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /usr/java/
## 修正所属用户及用户组
[root@node01 tools]# cd /usr/java/
[root@node01 java]# ll
drwxr-xr-x. 8 10 143 255 12月 20 2017 jdk1.8.0_162
[root@node01 java]# chown -R root:root /usr/java/jdk1.8.0_162/
[root@node01 java]# ll
drwxr-xr-x. 8 root root 255 12月 20 2017 jdk1.8.0_162
## 配置环境变量,末尾追加
[root@node01 java]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
## 使配置生效并查看
[root@node01 java]# source /etc/profile
[root@node01 java]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

核心模块部署

主要分为三个模块:MySQL部署、CM部署(Cloudera Manager)和 Parcel文件离线部署(Cloudera CDH)

MySQL部署

说明:为了快捷,这里暂时采用RPM包部署,部署成功之后创建相关数据库,统一采用utf8编码格式。

检查是否安装MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 检查Linux是否安装MySQL
rpm -qa|grep mysql
mysql-community-libs-5.7.27-1.el7.x86_64
mysql-community-client-5.7.27-1.el7.x86_64
mysql-community-common-5.7.27-1.el7.x86_64
mysql-community-libs-compat-5.7.27-1.el7.x86_64
mysql-community-server-5.7.27-1.el7.x86_64
## 如果存在MySQL版本,卸载所有相关依赖。
rpm -e --nodeps mysql-community-libs-5.7.27-1.el7.x86_64
rpm -e --nodeps mysql-community-client-5.7.27-1.el7.x86_64
rpm -e --nodeps mysql-community-common-5.7.27-1.el7.x86_64
rpm -e --nodeps mysql-community-libs-compat-5.7.27-1.el7.x86_64
rpm -e --nodeps mysql-community-server-5.7.27-1.el7.x86_64
## 注意:如果使用普通删除模式rpm -e mysql报错,可以采用强力删除模式rpm -e --nodeps mysql。
## 同时,如果存在已安装MySQL,这里还需要卸载相关配置文件,保证整个系统环境彻底干净。
[root@hadoop01 opt]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
## 这里我们直接采用`rm -rf`删除对应文件夹,同时删除MySQL配置文件`/etc/my.cnf`。

检查是否安装MariaDB

1
2
3
4
5
6
7
8
9
10
## 检查Linux是否安装MariaDB,如果是CentOS7版本,应该都有自带安装MariaDB。
[root@node01 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
## 由于安装MySQL会和MariaDB的文件冲突,为了确保顺利安装,这里我们卸载MariaDB。
[root@node01 ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
[root@node01 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
[root@node01 ~]# rpm -qa|grep mariadb

解压安装

1
2
3
4
5
6
7
8
9
10
11
12
## 解压到指定目录
[root@node01 tools]# tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C /opt/

## 依次安装,注意:最后安装server的时候可能缺少依赖,根据实际情况下载相关依赖即可
[root@node01 tools]# rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
[root@node01 tools]# rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
[root@node01 tools]# rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
[root@node01 tools]# rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
[root@node01 tools]# rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
## 启动MySQL服务
[root@node01 tools]# systemctl status mysqld
[root@node01 tools]# systemctl start mysqld

修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 我们先通过相关命令获取默认初始密码。
[root@node01 opt]# grep 'temporary password' /var/log/mysqld.log
2019-07-24T13:21:36.471365Z 1 [Note] A temporary password is generated for root@localhost: 6eNegsd3U!aC
## 根据临时密码登录MySQL
[root@hadoop01 opt]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27
## 登录成功之后,我们修改密码。需要注意的是,我们的密码如果太过简单,会被MySQL拒绝。具体如下:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' ;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
## 设置符合MySQL5.7规范的密码样式
mysql> alter user 'root'@'localhost' identified by 'Root_123456';
Query OK, 0 rows affected (0.00 sec)

设置远程登录

1
2
3
mysql> use mysql;
mysql>update user set host='%' where user ='root' and host like 'localhost%';
mysql>flush privileges;

创建相关数据库及用户组

数据库 说明
cmf CDH的元数据库和用户
amon amon服务的数据库和用户
1
2
3
4
5
mysql> create database amon default character set utf8;
mysql> create database cmf default character set utf8;
mysql> grant all on cmf.* to 'cmf'@'%' identified by 'Root_123456';
mysql> grant all on amon.* to 'amon'@'%' identified by 'Root_123456';
mysql> flush privileges;

MySQL依赖jar包放入指定路径

1
2
3
4
5
6
## 创建指定目录
[root@node01 opt]# mkdir /usr/share/java
[root@node01 opt]# mv mysql-connector-java-5.1.48.jar /usr/share/java/
[root@node01 opt]# cd /usr/share/java/
## 修改jar包名称,去掉版本号
[root@node01 java]# mv mysql-connector-java-5.1.48.jar mysql-connector-java.jar

CM部署

这里采用RPM包的形式部署

主节点部署server服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 解压文件得到相关rpm包,解压好之后rpm包位于./cm6.1.1/RPMS/x86_64/
[root@node01 tools]# tar -zxvf cm6.1.1-redhat7.tar.gz
## 这里根据实际情况采用yum install (依赖外网)或者rpm -ivh 安装(不依赖外网)
[root@node01 x86_64]# rpm -ivh cloudera-manager-daemons-6.1.1-853290.el7.x86_64.rpm --nodeps --force
[root@node01 x86_64]# rpm -ivh cloudera-manager-server-6.1.1-853290.el7.x86_64.rpm --nodeps --force
## 安装完成之后修改配置文件/etc/cloudera-scm-server/db.properties,根据实际情况修改
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=node01
## 这里使用我们之前创建的cmf元数据库信息
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=Root_123456
## 这里务必使用EXTERNAL类型
# If scm-server uses Embedded DB then it is set to EMBEDDED
# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType=EXTERNAL

主节点启动server服务,配置阿里云安全组规则

1
2
3
4
5
6
7
8
[root@node01 opt]# systemctl status cloudera-scm-server
● cloudera-scm-server.service - Cloudera CM Server Service
Loaded: loaded (/usr/lib/systemd/system/cloudera-scm-server.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[root@node01 opt]# systemctl start cloudera-scm-server
## 到指定路径查看日志信息,初始化一般需要等待一分钟
[root@node01 opt]# cd /var/log/cloudera-scm-server
## 启动成功之后配置阿里云安全组规则,开启7180端口(默认账号为admin/admin)

主节点部署agent服务,修改配置文件

1
2
3
4
5
6
7
## 安装agent
[root@node01 x86_64]# rpm -ivh cloudera-manager-agent-6.1.1-853290.el7.x86_64.rpm --nodeps --force
## 修改配置文件,指定server服务
[root@node01 cloudera-scm-agent]# vim config.ini
[General]
# Hostname of the CM server.
server_host=node01

其它从节点部署agent服务,修改配置文件

1
2
3
4
5
[root@node02 x86_64]# rpm -ivh cloudera-manager-daemons-6.1.1-853290.el7.x86_64.rpm --nodeps --force
[root@node02 x86_64]# rpm -ivh cloudera-manager-agent-6.1.1-853290.el7.x86_64.rpm --nodeps --force
## 修改配置文件,指定server服务
## 配置完成之后,启动所有节点agent服务
[root@node01 opt]# systemctl start cloudera-scm-agent

Parcel包裹文件部署

Parcel文件校验

1
2
3
4
5
6
##文件内容
[root@node01 tools]# cat CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha256
3ff9368f46363a6a31ada79c176945f6a6efa6ccf1a5b441f2854bafa7c12be4
##校验值,与文件内容一致说明文件完整
[root@node01 tools]# sha256sum CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel
3ff9368f46363a6a31ada79c176945f6a6efa6ccf1a5b441f2854bafa7c12be4 CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel

修改文件后缀名

1
2
## 去掉末尾数字
[root@node01 tools]# mv CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha256 CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha

安装httpd

1
2
3
4
5
6
[root@node01 tools]# yum install -y httpd
## 将parcel包裹文件移动至指定目录
[root@node01 tools]# mkdir /var/www/html/cdh6_parcel
[root@node01 tools]# mv CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel* manifest.json /var/www/html/cdh6_parcel/
## 启动httpd服务,可以通过web访问:node01:80/cdh6_parcel
[root@node01 tools]# systemctl start httpd

web界面操作

这一步主要是选择parcel离线源:http://node01/cdh6_parcel/
注意事项一:选用阿里云内网地址(正常情况下在集群初始化中已经配置到hosts文件中)
注意事项二:选用http协议,不要使用https
注意事项三:部署过程中的Cloudera Management Service中的其它节点如果选择非node01,需要保证相关节点存在/usr/share/java/mysql-connector-java.jar文件,否则会报错
注意事项四:一定要选择自定义服务

Step1:选择版本

Step2:选择主机

Step3:选择存储库

Step4:检查主机正确性

这一步可能会出现部分问题,具体解决方案可以根据实际情况自行处理。CDH官方文档中都有详细的解决方案。

问题一:Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10
1
2
3
4
## 临时处理
[root@node01 tools]# sysctl vm.swappiness=10
## 永久处理
[root@node01 tools]# echo 'vm.swappiness=10'>> /etc/sysctl.conf
问题二:已启用透明大页面压缩,可能会导致重大性能问题。
1
2
3
4
5
6
7
8
9
10
11
12
## 临时处理
[root@node01 tools]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@node01 tools]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
## 永久处理
[root@node01 tools]# vim /etc/rc.local
## 末尾追加
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
## 根据提示,给文件重新赋权
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
[root@node01 tools]# chmod +x /etc/rc.d/rc.local

Step5:自定义服务

Step6:自定义角色分配

Step7:数据库设置

Step8:主页展示

主页告警及配置问题解决

这里出现红色配置告警:Cloudera Manager Server GC cpu usage is at 10% or more of total process time.
暂不影响,稍等一会儿刷新即可。
其它非红色警告,前期可以直接抑制处理。

HDFS HA配置

官方文档:https://docs.cloudera.com/documentation/enterprise/6/6.1/topics/cdh_hag_hdfs_ha_intro.html

Step1:启用HA

Step2:nameservice名称

Step3:分配角色

Step4:编辑目录

Step5:启动服务

注意:这里会出现 Failed to format NameNode
原因分析:正常现象,这是有以前集群的数据同步到HA集群中,可忽略,直接下一步操作,等待HA部署完成即可。

YARN HA配置

Step1:启用HA

Step2:配置主机

Step3:启动服务

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 henrrywan

请我喝杯咖啡吧~

支付宝
微信