CentOS7.7(2019年8月发布)搭建完全分布CDH6.3.2(2019年11月发布) 操作记录
CentOS7.7(2019年8月发布)搭建完全分布CDH6.3.2(2019年11月发布) 操作记录
18 11月, 2019 CDH 0 Comments11
一、前言
1.1 CDH简介
- 官网 https://www.cloudera.com/
- CDH,全称Cloudera's Distribution, including Apache Hadoop。是Hadoop众多分支中对应中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,提供了Hadoop的核心(可扩展存储、分布式计算),最为重要的是提供基于web的用户界面。
- CDH的优点:版本划分清晰,更新速度快,支持Kerberos安全认证,支持多种安装方式(如Yum、rpm等)。
- CDH分为Cloudera Manager管理平台和CDH parcel(parcel包含各种组件的安装包)。这里采用CM6.3.1(2019-10-11)和CDH6.3.2(2019-11-12更新)。
1.2 安装前的准备
1.2.1 下载
- Cloudera Manger下载
下载地址为 https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPMS/x86_64/
- CDH下载
下载地址为 https://archive.cloudera.com/cdh6/6.3.2/parcels/
二、安装
2.1 环境准备
2.1.1 安装机器
- 本例中
- 采用VMWare Workstation Pro 15.5.0 build-14665864作为虚拟化载体
- 采用CentOS-7-x86_64-DVD-1908.iso作为系统镜像
- 采用一个master三个slave的四节点集群架构
操作系统 |
cpu |
内存 |
硬盘 |
ip |
主机名 |
Centos7 |
2核 |
2G |
100G |
192.168.222.50 |
cdh00 |
Centos7 |
4核 |
6G |
100G |
192.168.222.51 |
cdh01 |
Centos7 |
4核 |
6G |
100G |
192.168.222.52 |
cdh02 |
Centos7 |
4核 |
6G |
100G |
192.168.222.53 |
cdh03 |
注:具体配置请根据自己的搭建环境进行调整
- 安装完成后使用XShell或CRT连接所有机器
2.1.2 设置主机名映射(所有节点)
查看:
- 在所有机器查看/etc/hosts文件内容如下图所示
cat /etc/hostsCOPY
操作:
- 在所有机器执行如下命令,添加集群映射
echo -e "192.168.222.50 cdh00\n192.168.222.51 cdh01\n192.168.222.52 cdh02\n192.168.222.53 cdh03" >> /etc/hostsCOPY
验证:
- 在所有机器查看/etc/hosts文件内容如下图所示
cat /etc/hostsCOPY
2.1.3 关闭并禁用防火墙(所有节点)
查看:
- 查看防火墙服务运行状态
systemctl status firewalldCOPY
操作:
- 关闭防火墙
systemctl stop firewalldCOPY
- 禁用防火墙开机自启
systemctl disable firewalldCOPY
验证:
- 查看防火墙状态为关闭状态
systemctl status firewalldCOPY
2.1.4 关闭SELINUX(所有节点)
查看:
- 查看SELinux服务的运行状态
getenforceCOPY
操作:
- 临时关闭
setenforce 0COPY
- 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configCOPY
验证:
cat /etc/selinux/configCOPY
2.1.5 设置SSH免密登陆(所有节点)
操作:
- 生成密钥:
ssh-keygen -t rsaCOPY
- 分发密钥:
- ssh-copy-id cdh00
- yes
- 密码
- ssh-copy-id cdh01
- yes
- 密码
...COPY
验证:
- 在任意机器上对集群其他节点进行进行ssh登陆
- 不需要使用密码则为配置成功
2.1.6 禁用透明大页(所有节点)
查看:
- 查看透明大页的设置和启动状态
- cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabledCOPY
操作:
- 临时关闭
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabledCOPY
- 永久关闭
- 将临时关闭命令添加到/etc/rc.d/rc.local文件中,并赋予执行权限
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
- echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.localCOPY
验证:
cat /etc/rc.d/rc.localCOPY
2.1.8 修改Linux swappiness参数(所有节点)
- 为了避免服务器使用swap功能而影响服务器性能,一般都会把vm.swappiness修改为0(cloudera建议10以下)
- 查看
- cd /usr/lib/tuned
grep "vm.swappiness" * -RCOPY
- 操作
sed -i s/"vm.swappiness = 30"/"vm.swappiness = 10"/g /usr/lib/tuned/virtual-guest/tuned.confCOPY
2.1.7 安装JDK(所有节点)
注意:CDH的安装要求使用指定版本的oracle-j2sdk1.8
- 查询是否有已经安装的jdk
rpm -qa | grep javaCOPY
- 如果之前安装过Java组件,先将其卸载
yum remove java*COPY
- 上传安装包oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm到/opt目录
- cd /opt
lsCOPY
- 启动安装
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpmCOPY
- 查找jdk安装路径
find / -name javaCOPY
- 配置环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera' >> /etc/profile
echo 'export PATH=.:$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profileCOPY
- 验证
java -versionCOPY
2.1.8 上传JDBC依赖包(所有节点)
- 创建目录
mkdir -p /usr/share/javaCOPY
- 将mysql-connector-java-8.0.12.jar重命名为mysql-connector-java.jar
mv mysql-connector-java-8.0.12.jar mysql-connector-java.jarCOPY
- 将mysql-connector-java.jar移动或复制到每个节点的/user/share/java
- cp mysql-connector-java.jar /usr/share/java/
- scp mysql-connector-java.jar cdh01:/usr/share/java/
...COPY
2.1.9 安装MySQL(master节点,本例中cdh00)
- 查询出来已安装的mariadb
rpm -qa|grep mariadbCOPY
- 卸载mariadb,文件名为上述命令查询出来的文件
rpm -e --nodeps 文件名COPY
- 上传安装包到/opt目录
- 解压安装包
tar Jxvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xzCOPY
- 重命名
- mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
mv mysql /usr/localCOPY
- 创建数据目录
mkdir /usr/local/mysql/dataCOPY
- 创建并编辑my.cnf文件
vim /etc/my.cnfCOPY
- 填入以下内容
- [client]
- port=3306
- socket=/tmp/mysql.sock
- [mysqld]
- port=3306
- user=mysql
- socket=/tmp/mysql.sock
- basedir=/usr/local/mysql
- datadir=/usr/local/mysql/data
- log-error=/usr/local/mysql/error.log
- pid-file = /usr/local/mysql/mysql.pid
- transaction_isolation = READ-COMMITTED
- character-set-server = utf8
- collation-server = utf8_general_ci
- lower_case_table_names = 1
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"COPY
- 创建组
groupadd mysqlCOPY
- 创建用户
useradd -g mysql mysqlCOPY
- 修改目录权限
- 将 /opt/mysql给予mysql用户
chown -R mysql:mysql /usr/local/mysqlCOPY
- 将/opt/mysql权限设置为755
chmod -R 755 /usr/local/mysqlCOPY
- 初始化mysql
- cd /usr/local/mysql
./bin/mysqld --initialize --user=mysqlCOPY
- 尝试启动mysql
- cd /usr/local/mysql
./support-files/mysql.server startCOPY
- 将mysql添加为服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlCOPY
- 设置开机启动
- cd /etc/init.d
- chmod 755 /etc/init.d/mysql
- chkconfig --add mysql
- chkconfig --level 345 mysql on
service mysql restartCOPY
- 配置环境变量
- echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile
- echo 'export PATH=.:$MYSQL_HOME/bin:$PATH' >> /etc/profile
source /etc/profileCOPY
- 使用默认密码登陆mysql
mysql -uroot -p ...COPY
- 在MySQL8中第一次登陆需要重新设置root密码
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
- 开启远程访问
- CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
- GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;COPY
2.1.10 安装Apache Httpd服务(master节点,本例中cdh00)
- 安装
yum install httpd -yCOPY
- 启动
systemctl start httpdCOPY
- 设置开机自启
systemctl enable httpdCOPY
2.1.11 配置Cloudera Manager安装包yum源(master节点,本例中cdh00)
- 创建目录
mkdir -p /var/www/html/cloudera-repos/cm6COPY
- 将下载好的rmp安装包上传到/var/www/html/cloudera-repos/cm6
- 创建仓库
- cd /var/www/html/cloudera-repos/cm6
- yum install -y createrepo
createrepo .COPY
- 创建repo文件(所有节点)
vim /etc/yum.repos.d/cloudera-manager.repoCOPY
[cloudera-manager]
name=Cloudera Manager 6.3.1
baseurl=http://cdh00/cloudera-repos/cm6
gpgkey=https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-mdCOPY
- 清理并缓存(所有节点)
- yum clean all
yum makecacheCOPY
2.1.12 安装 Cloudera Manager(master节点,本例中cdh00)
- 执行安装
yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-serverCOPY
- 安装完CM后/opt/ 下会出现cloudera目录
- 上传CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel到/opt/cloudera/parcel-repo目录
- 执行校验
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.shaCOPY
- 执行CM初始化脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cmserver root 123456COPY
- 启动服务
systemctl start cloudera-scm-server.serviceCOPY
- 查看服务状态为启动
systemctl status cloudera-scm-server.serviceCOPY
2.2 其他服务安装
- 浏览器访问 http://cdh00:7180/
- 用户名密码:admin/admin
- WELCOME 继续
- Accept License 同意协议,继续
- Select Edition 勾选免费版,继续
- Welcome (Add Cluster - Installation) 创建集群
- Cluster Basics 集群起名
- Specify Hosts 添加节点
- Select Repository 选择安装方式
- JDK 安装选项
- 提供 SSH 登录凭据。
- Install Agents 安装agent
- Install Parcels 安装数据包
- Inspect Cluster 检查集群