基于redhat8 安装 CDH集群

502 阅读6分钟

一 资源准备

官方文档:docs.cloudera.com/documentati…

CDH服务相关

文件主机位置备注
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm所有节点/home/cloudera依赖库
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm工作节点/home/cloudera代理服务库
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm主节点/home/cloudera关联服务库

存储库相关

文件主机位置备注
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1主节点/home/cloudera/parcel文件验证
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel主节点/home/cloudera/parcel软件存储库(包含yarn,spark等等服务)
manifest.json主节点/home/cloudera/parcel元数据文件

数据库相关

文件主机位置备注
mysql-community-libs-5.6.51-2.el7.x86_64.rpm主节点/home/cloudera/db可选
mysql-community-common-5.6.51-2.el7.x86_64.rpm主节点/home/cloudera/db可选
mysql-community-server-5.6.51-2.el7.x86_64.rpm主节点/home/cloudera/dbmysql服务
mysql-community-client-5.6.51-2.el7.x86_64.rpm主节点/home/cloudera/dbmysql连接服务

二 环境准备

1 配置主机

1.1 设置主机名称

sudo hostnamectl set-hostname foo-1.example.com

1.2 设置Hosts文件
1.1.1.1  foo-1.example.com  foo-1
2.2.2.2  foo-2.example.com  foo-2
3.3.3.3  foo-3.example.com  foo-3
1.3 关闭防火墙
sudo systemctl status firewalld
sudo systemctl disable firewalld
sudo systemctl stop firewalld
1.4 设置SELinux模式
1.5 开启NTP服务

RHEL7默认使用 chronyd ,如果没有 安装chronyd,以NTP为准

安装NTP服务 yum install ntp

添加上游服务器 /etc/ntp.conf

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

启动NTP服务systemctl start ntpd systemctl enable ntpd

更新系统时钟 ntpdate -u <ntp_server>

将硬件时钟与系统时钟对对齐 hwclock --systohc

如果系统自带chronyd,修改vim /etc/chrony.conf 添加上游服务器,如果连不了外网,可以找一台服务作为Chronyd服务器,提供外部时间同步服务配置如下,allow允许同步的ip端,开启 local stratum 10

下游服务器 修改 /etc/chrony.conf 添加 server ip iburst

重启chronyd 服务systemctl restart chronyd

检查时间同步状态 chronyc tracking

查看上游地址是否联通chronyc sources

1.6 端口

对于集群需要的通信端口,涉及过多,建议位于同一子网端口全放开,如有特殊设置, 可以参考docs.cloudera.com/documentati…

2 安装JDK8

在三台机器上安装 JDK8

3 安装数据库(主节点)

如果有网络直接在主节点安装 rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm

如果无网络使用可选安装包手动安装(--force安装时不检查依赖 --nodeps强制安装)

rpm -ivh mysql-community-common-5.6.51-2.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.6.51-2.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-5.6.51-2.el7.x86_64.rpm --force --nodeps
3.1 配置mysql

更新密码 sudo /usr/bin/mysql_secure_installation

更新配置 (默认位置 /etc/my.cnf)

下面是官方推荐配置,仅供参考

[mysqld]
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

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]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

如果资源紧张可以适当减小innodb_buffer_pool_size大小

启动mysql sudo systemctl start mysqld

3.2 添加mysql用户和基础数据库

CDH部分软件依赖数据库,我们需要为其配置用户和数据库

image.png

目前只需要 Cloudera Manager Server 和Hive服务

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

三 安装CDH

1 安装daemons(所有节点)

由于是本地安装,缺少的依赖和系统有关,这里先使用尚硅谷提供的依赖安装一下(有些可能安装不上,暂时忽略)

yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt

redhat8可能缺少python依赖,检查一下是否有python2的依赖文件,如果有这里我们可以软连接一下 ln -s /usr/bin/python2 /usr/bin/python

还可能ssl哭版本过高 ,可以手动执行 dnf install openssl-devel compat-openssl10

强制安装daemons,有问题之后等服务启动再说rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

2 安装agent(所有节点)

强制安装agent,有问题之后等服务启动再说rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

修改主节点位置(方便服务启动时自动检测节点)编辑/etc/cloudera-scm-agent/config.ini

修改配置

server_host=主节点

启动agent systemctl start cloudera-scm-agent

启动之后可能会缺少依赖而启动失败 ,先查看一下 agent启动状态 systemctl status cloudera-scm-agent

如果发现报错依赖问题,可以执行journalctl -u cloudera-scm-agent查看详细日志,排查缺少的依赖(一般可以通过缺少的文件名 排查)

如果是启动错误,可以查看日志tail -f /var/log/cloudera-scm-/cloudera-scm-agent.log,正常应该返回连接主节点失败(别急server服务还没启动)。

3 安装service(主节点)

强制安装agent,有问题之后等服务启动再说rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

先别急着启动,先给server服务配置数据库,修改/etc/cloudera-scm-server/db.properties

com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=ip:3306
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=***
com.cloudera.cmf.db.setupType=EXTERNAL

为server服务创建基础数据表,cdh已经提供脚本,执行/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

image.png

将存储库三个文件 放入目录(默认本地存储库目录)/opt/cloudera/parcel-repo,sha1后缀记得改为sha

启动service服务,如果有以来问题也同样需要出来一下,方法同上systemctl start cloudera-scm-server

查看日志tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

观察到启动7180端口的日志时,server就算启动完成了。

因为CDH不支持redhat8,所以我们还需要构建自定义存储库名称。

登录7180端口,一路下一步,走到选择存储库,此时我们可以看见我们配置本地放置的存储库(选择之后下一步也执行不了,CDH添加了文件名校验, 不支持的系统不给安装当前文件名的存储库)

image.png

下面我们进入scm数据库,找到FILENAME是CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel的数据的PARCEL_ID,更新文件名和系统。

use scm;
select * from PARCELS;
UPDATE PARCELS set OS = 'unknown' , FILENAME='CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel' WHERE PARCEL_ID= '***'

进入/opt/cloudera/parcel-repo,此时文件夹可能会多出个缓存文件,记得删除,然后将CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha 和CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel更名为CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel.shaCDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel

重启server服务systemctl restart cloudera-scm-server

启动完成之后,就可以进入7180端口就可以自定义配置了。