[BIG DATA] CDH 3.2.1 on CentOS 7.5 集群安装(半)离线部署
* 本文基于 CentOS 7.5 云服务器集群, root 账户, 所有包管理工具, CDH版本和目录可能不一样, 请自行切换。
* 可能出现纰漏, 详细可参考访问官方安装文档和 Google。
集群环境准备, 参考官方文档
集群IP映射
为所有节点设置:
echo "172.16.20.245 cdh-0001" >> /etc/hosts
echo "172.16.20.28 cdh-0002" >> /etc/hosts
echo "172.16.20.196 cdh-0003" >> /etc/hosts
echo "172.16.20.170 cdh-0004" >> /etc/hosts
配置集群ssh免密登录
获取密钥文件, 所有节点执行:
ssh-keygen -t rsa
将所有节点的 .ssh/id_rsa.pub 文件传到主节点, 然后将每个节点的 id_rsa.pub 加入到 .ssh/authorized_keys 文件中:
id_rsa.pub >> authorized_keys
将这个包含所有节点公钥的 authorized_keys 文件上传到每个节点的 .ssh 目录下
(这里使用的是root账户, 如使用其他账户, 请注意目录和.ssh文件夹的权限问题)
关闭 SELinux
所有节点设置
先查看 SELinux
状态, 如果为 disabled
则无需修改, 命令:
/usr/sbin/sestatus -v
否则就 /etc/selinux/config 文件中的 SELINUX=enforcing
改为 SELINUX=disabled
配置集群时间同步
所有节点安装Chrony:
yum -y install chrony
主节点配置 /etc/chrony.conf 文件: 按需设置 NTP Server
, 可以保持使用默认4个 Server 配置, 也配置多个
允许从节点IP访问: allow 172.16.20.0/24
从节点配置 /etc/chrony.conf 文件: 注释其他 server, 只把一个 server 指向主节点IP: server 172.16.20.245 iburst
所有节点启动 Chrony 服务:
systemctl enable chronyd.service && systemctl restart chronyd.service
其他CDH建议配置
禁用透明大页面压缩, 所有节点写入到 /etc/rc.d/rc.local 文件:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
chmod +x /etc/rc.d/rc.local
优化交换分区, 所有节点执行:
echo "vm.swappiness = 10" >> /etc/sysctl.conf
所需组件安装及初始化, 参考官方文档
JDK, 所有节点安装:
yum -y install java-1.8.0-openjdk.x86_64
MySQL, 任选一个节点安装, 建议主节点
安装, 不做详述, 以下为主要命令:
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ yum -y install mysql-server
$ systemctl enable mysqld && systemctl start mysqld
$ /usr/bin/mysql_secure_installation
按需配置 /etc/my.cnf, 可参考CDH推荐配置
创建 CDH 所需 database 和 user:
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'cdh123@test';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'cdh123@test';
FLUSH PRIVILEGES;
MySQL 所在节点添加对应版本的 jdbc 驱动, 主要命令:
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
$ tar zxvf mysql-connector-java-5.1.46.tar.gz
$ cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar ##(主要去掉版本后缀)
CDH 组件安装, 参考官方文档
离线部署 Cloudera Manager Server 及 Agent
上传 cm6.3.1-redhat7.tar.gz 到所有节点并解压到 /opt/cloudera-manager/ 目录下
在主节点使用 rpm
离线安装 daemons, server 和 agent:
cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64/
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
所有从节点使用 rpm
离线安装 daemons 和 agent:
cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64/
rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
修改所有从节点的 agent 配置, server 指向主节点 cdh-0001
修改 /etc/cloudera-scm-agent/config.ini : server_host=cdh-0001
修改主节点 /etc/cloudera-scm-server/db.properties 配置:
(此处配置为上方 2.2.3 所创建的数据库和账号密码)
com.cloudera.cmf.db.host=cdh-0001
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=cdh123@test
# 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
启动 Cloudera Manager Server 和 Agent:
# 启动CM:
systemctl enable cloudera-scm-server && systemctl start cloudera-scm-server
查看日志, 解决出现的问题:
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
CM 启动成功后, 所有节点启动 Agent:
systemctl enable cloudera-scm-agent && systemctl start cloudera-scm-agent
浏览器启动 http://chd-0001:7180 页面配置集群
Cloudera Manager 集群安装和设置
欢迎页面, 一共三个步骤, 同意条款, 选择是否付费版本, 进入集群安装界面(没有配图, 请自行脑补~)
集群安装
1). 欢迎界面
2). 自定义集群名称
3). 指定主机, 如果上面的 Agent 和配置全部正确, 不用搜索新主机, 所有主机会展示在 ‘当前管理的主机’ Tab下, 全选后进入下一步
4). 选择存储库
a. 将离线包: CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel 和 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha (此文件为 parcel 的 hash 码, 注意不要随意修改) 拷贝到 /opt/cloudera/parcel-repo 目录
b. 修改改目录下所有文件权限:
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
c. 点击 ‘使用Parcel(建议)’ 后的更多选项按钮, 移除所有远程 Parcel 库, 保存
d. 如果没有问题会默认选中拷贝的离线 Parcel 包
e. 点击继续
5). 安装 Parcel, 由于上一步配置好了离线 Parcel, 这里只需要等待分配, 解压和激活三个步骤自动完成
6). 检查集群
可能会出现的问题包括上方步骤1.5出现两个配置项和修复 Psycopg2 版本较低(忽略)
7). 问题全部解决后进入集群设置
集群配置
1). 选择需要的服务, 常用: HDFS, HIVE, YARN, Spark, Zookeeper 等, 根据需要执行选择
2). 自定义角色分配, 设置每个服务的角色和运行的节点, 根据情况设置
3). 数据设置, 如果上一步没有选择‘Activity Monitor’, 这一步骤会被省略, 所以 Activity Monitor 最好选择 cdh-0001 (MySQL 安装的节点)
输入数据库 amon
, 用户名 amon
和密码 cdh123@test
(2.2.3的设置), 测试连接
4). 审核更改, 此步骤会设置所选角色的部分基础文件目录, 根据情况修改
5). 执行命令详细信息, 等待自动运行完成, 全部通过后继续
6). 至此所有安装步骤完成, 可进入 Cloudera Manager 进行集群监控和管理