一 资源准备
官方文档: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/db | mysql服务 |
| mysql-community-client-5.6.51-2.el7.x86_64.rpm | 主节点 | /home/cloudera/db | mysql连接服务 |
二 环境准备
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部分软件依赖数据库,我们需要为其配置用户和数据库
目前只需要 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
将存储库三个文件 放入目录(默认本地存储库目录)/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添加了文件名校验, 不支持的系统不给安装当前文件名的存储库)
下面我们进入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.sha和CDH-6.3.2-1.cdh6.3.2.p0.1605554-unknown.parcel
重启server服务systemctl restart cloudera-scm-server
启动完成之后,就可以进入7180端口就可以自定义配置了。