在安装之前我们先来梳理下安装的思路,根据官方安装1 文档:
马克思说过:实践是检验真理的唯一标准
,下面我们就来搞一把,把CDH集群装起来。
主机名 | 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
在安装之前,我们要对我们的集群的所有节点进行一些公共的系统配置
通过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
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
sed -i "s/# StrictHostKeyChecking ask/StrictHostKeyChecking no/g" /etc/ssh/ssh_config
ssh-keygen -t rsa
根据提示一直回车到提示结束,中间不输入任何其他命令或配置
在每个节点上执行一下操作
ssh-copy-id root@node01
ssh-copy-id root@node02
ssh-copy-id root@node03
# @前面的用户根据自己实际使用的用户填写
首先检查防火墙是否已经关闭,且禁用开机启动
执行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'
vim /etc/sysconfig/selinux
## 修改配置项:
SELINUX=disabled
重启生效,可以先不重启,等配置完成后进行重启计算机操作。
vim /etc/security/limits.conf
结尾添加以下内容 :
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 655360
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited
因为集群节点间的时间需要同步,故需要给节点配置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
临时关闭, 在/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
在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
根据官方安装文档,CDH支持多种数据库如 PostgreSQL, MariaDB, MySQL, or Oracle,我们这里选择使用MySQL作为CDH的元数据数据引擎。
安装文档参考我的blog 在Centos7下离线安装mysql5.7
如果是rpm安装记得安装mysql-community-libs-compat,不然后续安装Cloudra Manager会缺少依赖
安装完成数据库后,我们来安装Cloudra Manager,首先要下载安装包
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
# 安装httpd服务
yum install httpd
#开启httpd服务
service httpd start
#配置httpd服务开机自启
systemctl enable httpd.service
# 创建软件目录
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
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
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目录内容如下:
安装Cloudra Manager完成后,进行数据库的配置
解压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
组件 | 数据库名称 | 数据库用户 |
---|---|---|
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用户的密码设置成能够满足安全策略的密码。
Cloudera Manager Server包含一个配置数据库的脚本。
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h <mysql-host-ip> --scm-host <cm-server-ip> scm scm
执行命令后,会要求输入密码。然后就会告诉你配置完毕,如下图所示:
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://
,默认账号和密码都为admin
:
进入界面后,接受条款,选择license,这里先选择免费版本。
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 |
CDH官方安装文档 :
CDH有详细的官方安装文档支持,如果词汇量允许建议直接阅读官方安装文档,能够得到能够得到更权威的指导。 ↩︎
Yum的相关知识、安装、配置及常用命令可参照我的Blog Linux Yum源创建与配置 ↩︎