1 安装流程概述
在安装之前我们先来梳理下安装的思路,根据官方安装1 文档:
- Step1 配置一个Cloudra Manager本地Yum2仓库
- Step2 安装oracle 1.8+ openjdk 11+
- Step3 安装Cloudra Manager Server
- Step4 安装数据库
- Step5 配置Cloudra Manager数据库
- Step6 安装CDH和其他软件
- Step7 完成集群配置
马克思说过:实践是检验真理的唯一标准
,下面我们就来搞一把,把CDH集群装起来。
2 集群规划
主机名 | IP | 操作系统 | 角色 |
---|---|---|---|
node01 | 192.169.1.200 | Centos 7 | Cloudra Manager, Name Node,Data Node |
node02 | 192.169.1.201 | Centos 7 | Data Node |
node03 | 192.169.1.202 | Centos 7 | Data Node |
根据Cloudra官方安装文档说明,我们首先安装Cloudra Manager
3 安装准备
在安装之前,我们要对我们的集群的所有节点进行一些公共的系统配置
3.1检查jdk安装
通过java -version
命令检查java的版本,oracle的jdk需要使用1.8版本以上,IBM的openjdk需要使用11版本以上的版本。
1.oracle jdk的安装方法就不再赘述了,记得配置环境变量:
编辑/etc/profile
文件,并在文件末尾追加一下内容(P.S.:我的jdk放在/usr/local/java)
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
编辑完成后使环境变量生效:
source /etc/profile
- openjdk的安装方法首先安装openjdk1.8然后在安装openjdk11,一般centos7安装的时候openjdk1.8就已经安装好了,只需要直接圣洁openjdk11即可
3.2 根据集群规划配置主机名称、网络及配置hosts文件
- 配置主机名
通过hostnamectl
命令来设置主机名称:
通过上图我们可以看到可以通过(以配置node01主机为例)
hostnamectrl set-hostname node01
2.配置网络
根据集群节点的规划配置集群的网络。
首先,通过ifconfig
检查网络设备名称
然后,根据得出的网络设备名称对网络设备进行配置,我得到的名称是ens33
,故我要编辑的网络设备的配置为/etc/sysconfig/network-scripts/ifcfg-ens33
(仍然以node01为例,其他节点修改方法以此类推)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 替换内容如下:
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="ens33"
ONBOOT="yes"
UUID="cb26e1ac-5b8d-4896-85ac-a46f20c99e64" #如实填写
DEVICE="ens33"
IPADDR=192.168.1.200 #根据集群节点规划填写
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114
#DNS的填写根据网络运营商或自己的实际网络信息填写
编辑完成以后重启网络服务:
systemctl restart network.service
3.配置hosts
修改/etc/hosts文件,添加映射关系,执行命令:
vi /etc/hosts
添加如下内容:
192.168.1.200 node01
192.168.1.201 node02
192.168.1.202 node03
3.3 配置免密
1.配置host key自动添加到know_hosts列表中
sed -i "s/# StrictHostKeyChecking ask/StrictHostKeyChecking no/g" /etc/ssh/ssh_config
2.生成秘钥
ssh-keygen -t rsa
根据提示一直回车到提示结束,中间不输入任何其他命令或配置
3.复制公钥到其他节点
在每个节点上执行一下操作
ssh-copy-id root@node01
ssh-copy-id root@node02
ssh-copy-id root@node03
# @前面的用户根据自己实际使用的用户填写
3.4 集群系统参数调整
1. 关闭防火墙
首先检查防火墙是否已经关闭,且禁用开机启动
执行systemctl status firewalld.service
命令
如上图所示,如果返回的结果最后一行有Stoped关键字,那么为关闭状态。如果是Started关键字,那么执行systemctl stop firewalld.service
,在所有节点上进行检查,配置好免密登录后可以执行以下操作:
#关闭防火墙
ssh node01 'systemctl stop firewalld.service'
ssh node02 'systemctl stop firewalld.service'
ssh node03 'systemctl stop firewalld.service'
# 禁止防火墙开机自启
ssh node01 'systemctl disable firewalld.service'
ssh node02 'systemctl disable firewalld.service'
ssh node03 'systemctl disable firewalld.service'
2. 禁用Selinux
vim /etc/sysconfig/selinux
## 修改配置项:
SELINUX=disabled
重启生效,可以先不重启,等配置完成后进行重启计算机操作。
3. 设置最大文件打开数据和用户最大进程数
vim /etc/security/limits.conf
结尾添加以下内容 :
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 655360
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited
4. 配置ntpd时间同步服务
因为集群节点间的时间需要同步,故需要给节点配置ntp服务,让时间能够同步,此次安装使用的是cn.ntp.org.cn
的ntp服务器,如果有自己的ntp服务也可以使用自己的IP,通过执行一下命令进行配置ntp服务器
ntpdate cn.ntp.org.cn
检查时区配置
##检索时区值
timedatectl list-timezones | grep -i shanghai
##设置时区
timedatectl set-timezone Asia/Shanghai
5. 关闭透明页(非必需,属于优化选项)
临时关闭, 在/etc/rc.local文件中加入:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久关闭
echo ' ' >> /etc/rc.local
echo '# 关闭大透明页面' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
查看是否已经关闭
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
6. 设置交换内存
在centos7中有两个地方需要修改来禁用交换内存:
#最佳禁用配置到/etc/sysctl.conf
echo "vm.swappiness=0" >> /etc/sysctl.conf
#使配置生效
sysctl -p /etc/sysctl.conf
查找/usr/lib/tuned/
路径下的交换内存配置
grep "vm.swappiness" -R /usr/lib/tuned/
执行以下命令进行修改
sed -i "s/vm\.swappiness=10/vm\.swappiness=0/g" /usr/lib/tuned/latency-performance/tuned.conf /usr/lib/tuned/throughput-performance/tuned.conf
sed -i "s/vm\.swappiness = 30/vm\.swappiness = 0/g" /usr/lib/tuned/virtual-guest/tuned.conf
4 安装MySQL
根据官方安装文档,CDH支持多种数据库如 PostgreSQL, MariaDB, MySQL, or Oracle,我们这里选择使用MySQL作为CDH的元数据数据引擎。
安装文档参考我的blog 在Centos7下离线安装mysql5.7
如果是rpm安装记得安装mysql-community-libs-compat,不然后续安装Cloudra Manager会缺少依赖
5安装Cloudra Manager
安装完成数据库后,我们来安装Cloudra Manager,首先要下载安装包
5.1 下载安装包
Cloudera Manager 6.3.1
CM6 Repo:https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/cm6.3.1-redhat7.tar.gz
MySQL JDBC驱动
要求使用5.1.26以上版本的jdbc驱动,可点击这里直接下载mysql-connector-java-5.1.47.tar.gz
CDH 6.3.2
CDH6 Parcels:https://archive.cloudera.com/cdh6/6.3.2/parcels/
需要下载以下文件
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
manifest.json
下载 allkeys.asc:https://archive.cloudera.com/cm6/6.3.1/allkeys.asc
5.2 安装httpd服务
# 安装httpd服务
yum install httpd
#开启httpd服务
service httpd start
#配置httpd服务开机自启
systemctl enable httpd.service
5.3 创建Cloudra Manager的本地yum源
# 创建软件目录
mkdir -p /opt/software/cloudera/cm
# 进入软件目录
cd /opt/software/cloudera/cm
#将cm安装包拷贝到当前目录
cp /root/install/cm6.3.1-redhat7.tar.gz.tar ./
# 解压cm
tar -zxvf cm6.3.1-redhat7.tar.gz.tar
# 创建yum repo
createrepo /opt/software/cloudera/cm6.3.0/
# 创建http服务映射
ln -s /opt/software/cloudera/cm6.3.1/ /var/www/html/cm
#将allkey.asc 文件拷贝到
cp /root/install/allkey.asc ./
创建cm的Yum配置文件
vi /etc/yum.repos.d/cm.repo
# 编辑Cloudra Manager yum源配置
[cm]
name=cm
baseurl=http://192.168.1.200/cm
enabled=1
gpgcheck=0
创建Yum缓存
yum clean all
yum makecache
5.4 安装Cloudra Manager
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
5.5 配置CDH的Parcel源
Cloudera Manager Server会被安装在/opt/cloudera/
目录中,进入到本地Parcel存储库目录:
cd /opt/cloudera/parcel-repo
将5.1部分下载的CDH Parcel文件拷贝至该目录下,然后执行命令生成sha文件:
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.sha
然后执行下面的命令修改文件所有者,安装完成会自动创建cloudera-scm用户和用户组:
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
最终/opt/cloudera/parcel-repo目录内容如下:
6 配置数据库
安装Cloudra Manager完成后,进行数据库的配置
6.1 配置MySQL Connector
解压5.1中下载好的mysql-connector-java-5.1.47.tar.gz
包中解压出mysql-connector-java-5.1.47-bin.ja
r文件
tar zxvf mysql-connector-java-5.1.47.tar.gz
将mysql-connector-java-5.1.47-bin.jar文件拷贝至CM Server节点上的/usr/share/java/目录下并重命名为mysql-connector-java.jar(如果/usr/share/java/目录不存在,需要手动创建):
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
6.2 配置CDH个组件主要的数据库
组件 | 数据库名称 | 数据库用户 |
---|---|---|
Cloudera Manager Server | scm | scm |
Activity Monitor | amon | amon |
Reports Manager | rman | rman |
Hue | hue | hue |
Hive Metastore Server | metastore | hive |
Sentry Server | sentry | sentry |
Cloudera Navigator Audit Server | nav | nav |
Cloudera Navigator Metadata Server | navms | navms |
Oozie | oozie | oozie |
创建数据库脚本:
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 'scm@123';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon@123';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman@123';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue@123';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive@123';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry@123';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav@123';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms@123';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie@123';
如果你的mysql配置了安全策略,那么你需要把你mysql用户的密码设置成能够满足安全策略的密码。
6.3设置Cloudera Manager 数据库
Cloudera Manager Server包含一个配置数据库的脚本。
- mysql数据库与CM Server是同一台主机
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
- mysql数据库与CM Server不在同一台主机上
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h <mysql-host-ip> --scm-host <cm-server-ip> scm scm
执行命令后,会要求输入密码。然后就会告诉你配置完毕,如下图所示:
7 CDH集群安装
7.1 启动Cloudra Manager Server
systemctl start cloudera-scm-server
然后等待Cloudera Manager Server启动,可能需要稍等一会儿,可以通过命令tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
去监控服务启动状态。
当看到INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server
.日志打印出来后,说明服务启动成功.
通过浏览器访问Cloudera Manager WEB界面
打开浏览器,访问地址:http://<server_host>:7180
,默认账号和密码都为admin
:
7.2 选择license
进入界面后,接受条款,选择license,这里先选择免费版本。
7.3 集群配置
- 进入集群配置欢迎界面
- 设置集群名称
- 选择主机
通过下表的规则可以查找出可用的机器来搭建集群。
Expansion Range | Matching Hosts |
---|---|
10.1.1.[1-4] | 10.1.1.1, 10.1.1.2, 10.1.1.3, 10.1.1.4 |
host[1-3].example.com | host1.example.com, host2.example.com, host3.example.com |
host[07-10].example.com | host07.example.com, host08.example.com, host09.example.com, host10.example.com |
- 配置安装源
- 根据5.3配置的Cloudra Manager的Yum Repo
- 配置公共parcel源
- 配置其他组件parcel源
-
安装JDK
因为已经安装过JDK了,就不再安装了 -
设置集群SSH登录
-
安装cloudra agent
-
安装完成然后继续配置集群
CDH官方安装文档 :
CDH有详细的官方安装文档支持,如果词汇量允许建议直接阅读官方安装文档,能够得到能够得到更权威的指导。 ↩︎Yum的相关知识、安装、配置及常用命令可参照我的Blog Linux Yum源创建与配置 ↩︎