CDH基本环境搭建

基础简介

版本:Cloudera Manager:6.2.1 CDH:6.2.1
CDH优点:可视化自动部署与配置,一键集成多种组件
CDH简介:CDH是Cloudera维护的稳定Hadoop技术栈发行版,其灵活,安全,可扩展性高,高可用,兼容性好。
CM简介:Cloudra Manager是一个web操作平台,可以借助CDH极简安装多种Hadoop框架。

基础环境准备

1.配置三台机器hostname和映射关系

修改hostname

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看当前hostname主机名
hostname

# 方法一:命令修改主机名(无需重启只要开启新会话窗口就可更新)
hostnamectl set-hostname hadoop001
hostnamectl set-hostname hadoop002
hostnamectl set-hostname hadoop003

# 方法二:编辑文件修改主机名(需要重启机器)
vim /etc/hostname

# 分别在三台机器修改文件内容为如下
hadoop001
hadoop002
hadoop003

#重启机器
reboot

添加映射关系

1
2
3
4
5
6
7
# 编辑文件
vim /etc/hosts

# 增加如下内容
第一台机器IP hadoop001
第二台机器IP hadoop002
第三台机器IP hadoop003

2.配置SSH免密登录

1
2
3
4
5
6
7
8
9
# 分别在三台机器上执行如下命令

#生成公私钥命令,直接三个回车
ssh-keygen -t rsa

#分别在三台机器上执行如下三个命令,共执行九次
ssh-copy-id hadoop001
ssh-copy-id hadoop002
ssh-copy-id hadoop003

3.关闭一些配置

1
2
3
4
5
6
7
8
9
10
11
12
13
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭Selinux
setenforce 0

# 编辑如下文件将SELINUX=enforcing改为SELINUX=disabled
vim /etc/selinux/config
SELINUX=disabled

# 重启生效
reboot

附:如果是云服务器,则还需要在安全组内添加白名单,如果机器安装了一些Linux管理面板,也有可能需要在Liunx面板中的安全组关闭一次。

Cloudra Manager环境安装

0.Linux机器安装基础依赖包

1
2
3
4
5
yum install -y cyrus-sasl-plain cyrus-sasl-gssapi portmap fuse-libs bind-utils libxslt fuse
yum install -y /lib/lsb/init-functions createrepo deltarpm python-deltarpm
yum install -y mod_ssl openssl-devel python-psycopg2 MySQL-python
yum install -y httpd
yum install -y createrepo

1.下载CDH和CM相关安装包

下载地址:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 6.3.3版本后开始收费,现在下载都需要订阅了,所以测试时就无法从此链接下载了,需要找其他路径去下载
https://archive.cloudera.com/cdh6/6.2.1/parcels/
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/

# 下载的文件如下
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64.rpm
enterprise-debuginfo-6.2.1-1426065.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha256

allkeys.asc

2.搭建本地yum源

启动httpd服务并上传rpm文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 启动apache httpd服务
systemctl start httpd.service

# 到httpd服务器目录下创建一个目录
mkdir -p /var/www/html/cm6/6.2.1/redhat7/yum/RPMS/x86_64/

# 将如下文件全部上传到 x86_64目录下
cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm
cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64.rpm
enterprise-debuginfo-6.2.1-1426065.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

# 将如下文件拷贝到/var/www/html/cm6/6.2.1/下
allkeys.asc

# 访问测试是否能访问到文件
http://hadoop001/cm6/6.2.1/redhat7/yum/RPMS/x86_64/

生成repodata目录

1
2
cd /var/www/html/cm6/6.2.1/redhat7/yum
createrepo .

配置yum源

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/yum.repos.d/cloudera-manager.repo

# 填写如下内容
[cloudera-manager]
name=Cloudera Manager
baseurl=http://hadoop001/cm6/6.2.1/redhat7/yum/
gpgcheck=0
enabled=1

# 执行命令清理刷新
yum clean all
yum list | grep cloudera

如果在yum源中添加了新包,需要删除之前的repodata文件后重新生成,并重启httpd服务,再执行yum clean all清除缓存。

3.创建用于管理集群的用户

1
2
3
4
5
6
7
8
# 增加用户
useradd cloudera-scm

# 给用户设置密码
passwd cloudera-scm

# 给root权限并免密
echo "cloudera-scm ALL=(root) NOPASSWD:ALL" >> /etc/sudoers

4.安装MySQL服务

安装执行过程如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 卸载自带
rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

# 下载如下MySQL相关文件
01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

# 开始进行安装
sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

# 如果有包缺失就对应执行如下
yum install net-tools
yum install perl
yum install libaio

# 启动命令
sudo systemctl start mysqld

# 查看初始化的密码
sudo cat /var/log/mysqld.log | grep password

密码配置与账号配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 输入密码登录MySQL
mysql -uroot -p

-- 更改密码策略,测试环境用简单密码
set global validate_password_length=4;
set global validate_password_policy=0;

-- 设置密码
set password=password("123456");

-- 创建scm数据库
create database scm DEFAULT CHARACTER SET utf8;
grant all PRIVILEGES on *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
grant all PRIVILEGES on *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
grant all PRIVILEGES on *.* TO 'root'@'hadoop001' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

安装Cloudera Server服务

1.通过搭建好的yum源安装服务

1
2
3
4
yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64
yum install -y enterprise-debuginfo-6.2.1-1426065.el7.x86_64
yum install -y cloudera-manager-server-6.2.1-1426065.el7.x86_64
yum install -y cloudera-manager-server-db-2-6.2.1-1426065.el7.x86_64

2.配置元数据库,执行预备脚本

1
2
3
4
5
# 先将MySQL驱动拷贝到cm的lib目录下
cp /opt/software/mysql-connector-java-5.1.40.jar /opt/cloudera/cm/lib

# 执行scm_prepare_database.sh脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm root 123456

3.启动cm server进程

1
2
3
4
5
6
7
8
9
10
11
# 启动命令
systemctl start cloudera-scm-server

# 查看启动状态
systemctl status cloudera-scm-server

# 查看日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

# 查看端口
netstat -anp | grep 7180

4.配置本地parcel包

1
2
3
4
5
6
7
# 在数据库初始化后,将parcel文件放到/opt/cloudera/parcel-repo中
cp /opt/software/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel /opt/cloudera/parcel-repo
cp /opt/software/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 /opt/cloudera/parcel-repo
cp /opt/software/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha256 /opt/cloudera/parcel-repo

# 重命名密钥文件
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha

5.配置swappiness和透明化

透明化配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看透明页面是否开启
cat /sys/kernel/mm/transparent_hugepage/defrag

# 结果
[always] madvise never #表示已经启用
always madvise [never] #表示已经关闭

# 执行命令进行关闭(临时生效)
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 执行命令进行关闭(永久生效)
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

swappiness配置,内核参数为vm.swappiness,值范围是0-100,表示系统何时开始交换物理内存与虚拟内存。举例:系统内存为100G,vm.swappiness为10,则表示系统内存在使用到 100G * [ (100 - 10) / 100 ] = 90G 的时候才进行物理内存和虚拟内存的交换,这个会影响性能,所以建议区间是1-10。

1
2
3
4
5
# 临时生效
sysctl -w vm.swappiness=10

# 永久生效
echo "vm.swappiness=10" >> /etc/sysctl.conf

访问WEB-UI界面进行安装操作

1. 进入界面

访问地址:http://hadoop001:7180/cmf/login
账号密码: admin

登录后进入欢迎界面,点击Continue下一步

2. 点击yes同意,再点击Continue下一步

3. 测试环境选择Cloudera Express Free免费版本,然后再点击Continue下一步

4. 给我们的集群取一个名字

5. 在Hostname中填入主机名搜索,然后勾选搜索到的结果再点击Continue下一步

6. 配置本地仓库

此处Custom Repository选默认,为: http://hadoop001/cm6/6.2.1,CDH Version此时是没有扫描到的,所以需要访问此链接(http://gf-hadoop001:7180/cmf/parcel/status)配置一下`Parcel Update Frequency 包更新周期`,可以配置为1分钟一次,安装的时候才能展示出来。安装成功后可以设置回一小时,其他选项都默认,再次点击Continue下一步

7. 此处勾选安装Oracle的JDK

8. 配置root的密码

9. 开始等待agents的安装

10. 检查集群环境

安装成功后检查集群的环境,先检查网络情况,但是因为此时安装的是单机环境,网络检查状态是有问题的,但是没关系先跳过。然后再是检查host环境,检查通过后选择I understand the risks... 再点击下一步。

这是上一步host检查的结果,如果我们没有配置swappiness和透明化,那么红框中的选项就会有异常。

11. 一键安装常用组件

这一步可以一键安装一些常用组件,不安装则直接点返回,此时软件环境就已经安装成功了。