大数据项目之CDH数仓

第1章 数仓之Cloudera Manager

1.1 CM简介

1.1.1 CM简介

Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
安装CDH6.2 - 图1

1.2 阿里云服务器准备

1.2.1 注册阿里云账户
阿里云网址为:https://cn.aliyun.com/,注册账号并登录。
安装CDH6.2 - 图2
1.2.2 购买ECS云服务器
1) 进入控制台
安装CDH6.2 - 图3
2)打开侧边栏,点击云服务器ECS
安装CDH6.2 - 图4
3)侧边栏点击实例,然后点击创建实例
安装CDH6.2 - 图5
4)选择计费方式、服务器区域
安装CDH6.2 - 图6
5)选定服务器配置
安装CDH6.2 - 图7
6)选定服务器系统
安装CDH6.2 - 图8
7)选定磁盘类型及大小
安装CDH6.2 - 图98)网络和安全组配置
安装CDH6.2 - 图10
安装CDH6.2 - 图11
9)系统配置
安装CDH6.2 - 图12
10)分组设置,默认即可
安装CDH6.2 - 图13
11)确认订单
安装CDH6.2 - 图14
1.2.3 ECS配置及安全组修改
1)升级hadoop102配置
(1)停止实例
安装CDH6.2 - 图15
(2)更改实例规格
安装CDH6.2 - 图16
安装CDH6.2 - 图17
2)修改安全组策略
安装CDH6.2 - 图18
安装CDH6.2 - 图19
需将以下端口开放

服务 端口
Cloudera Manager Server(WebUI) 7180
HDFS NameNode(WebUI) 9870
Yarn ResourceManager(WebUI) 8088
JobHistory Server(WebUI) 19888
HBase Master(WebUI) 16010
HiveServer2 (WebUI) 10002
HUE Server(WebUI) 8888/8889
Oozie Server 11000
Sentry Server 51000
Spark Master/Worker/History Server 18080/18081/18088
Kerberos 88
MySQL 3306

1.3 CM部署准备

1.3.1 连接阿里云服务器

打开远程连接工具进行配置,这里以CRT为例。
1)新建一个session
安装CDH6.2 - 图20
2)填写hostname(填写公网ip)
安装CDH6.2 - 图21
安装CDH6.2 - 图22
1.3.2 修改hosts文件
[root@hadoop001 ~]# vim /etc/hosts
127.0.0.1 localhost localhost
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.17.138.24 hadoop001 hadoop1
172.17.138.25 hadoop002 hadoop2
172.17.138.23 hadoop003 hadoop3
注意:这里每个人不一样,ip填写的是私有ip,做完后ping一下。

1.3.4 SSH免密登录

配置hadoop102对hadoop102、hadoop103、hadoop104三台服务器免密登录。CDH服务开启与关闭是通过server和agent来完成的,所以这里不需要配置SSH免密登录,但是为了我们分发文件方便,在这里我们也配置SSH。
1)生成公钥和私钥:
[root@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
2)将公钥拷贝到要免密登录的目标机器上
[root@hadoop102 .ssh]$ ssh-copy-id hadoop102
[root@hadoop102 .ssh]$ ssh-copy-id hadoop103
[root@hadoop102 .ssh]$ ssh-copy-id hadoop104
3)重复1和2的操作,配置hadoop103对hadoop102、hadoop103、hadoop104三台服务器免密登录。

1.3.5 集群同步脚本

1)在/root目录下创建bin目录,并在bin目录下创建文件xsync,文件内容如下:
[root@hadoop102 ~]$ mkdir bin
[root@hadoop102 ~]$ cd bin/
[root@hadoop102 bin]$ vi xsync
在该文件中编写如下代码
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=basename $p1
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=cd -P $(dirname $p1); pwd
echo pdir=$pdir

#4 获取当前用户名称
user=whoami

#5 循环
for((host=103; host<105; host++)); do
echo —————————- hadoop$host ———————
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
2)修改脚本 xsync 具有执行权限
[root@hadoop102 bin]$ chmod 777 xsync

1.3.6 集群整体操作脚本

1)在/root/bin目录下创建脚本xcall.sh
[root@hadoop102 bin]$ vim xcall.sh
2)在脚本中编写如下内容
#! /bin/bash

for i in hadoop102 hadoop103 hadoop104
do
echo ————- $i —————
ssh $i “source /etc/profile ; $*”
done
3)修改脚本执行权限
[root@hadoop102 bin]$ chmod +x xcall.sh
4)测试
[root@hadoop102 bin]# xcall.sh jps

1.3.7 关闭防火墙(阿里云环境可跳过)
阿里云的防火墙默认是关闭的,但是他有web防火墙,我们需要将7180,3306,8888,8889,9870等端口开放。

1.3.8 关闭SELINUX(阿里云环境可跳过)

安全增强型Linux(Security-Enhanced Linux)简称SELinux,它是一个 Linux 内核模块,也是Linux的一个安全子系统。为了避免安装过程出现各种错误,建议关闭,有如下两种关闭方法:
1)临时关闭(不建议使用)
[root@hadoop102 ~]# setenforce 0
但是这种方式只对当次启动有效,重启机器后会失效。
2)永久关闭(建议使用)
修改配置文件/etc/selinux/config
[root@hadoop102 ~]# vim /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
SELINUX=disabled
3)同步/etc/selinux/config配置文件
[root@hadoop102 ~]# xsync /etc/selinux/config
4)重启hadoop102、hadoop103、hadoop104主机
[root@hadoop102 ~]# reboot
[root@hadoop103 ~]# reboot
[root@hadoop104 ~]# reboot

1.3.9 配置NTP时钟同步(阿里云环境可跳过)

1)NTP服务器配置
[root@hadoop102 ~]# vi /etc/ntp.conf
注释掉所有的restrict开头的配置
修改#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
为restrict 192.168.1.102 mask 255.255.255.0 nomodify notrap
将所有server配置进行注释
添加下面两行内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
2)启动NTP服务 service ntpd start
[root@hadoop102 ~]# service ntpd start
3)NTP客户端配置(在agent主机上进行配置hadoop103,hadoop104)
[root@hadoop103 ~]# vi /etc/ntp.conf

注释所有restrict和server配置
添加server 192.168.1.102
4)手动测试
[root@hadoop103~]# ntpdate 192.168.1.102
显示如下内容为成功:
17 Jun 15:34:38 ntpdate[9247]: step time server 192.168.1.102 offset 77556618.173854 sec
如果显示如下内容需要先关闭ntpd:
17 Jun 15:25:42 ntpdate[8885]: the NTP socket is in use, exiting
5)启动ntpd并设置为开机自启(每个节点hadoop102,hadoop103,hadoop104)
[root@hadoop103 ~]# chkconfig ntpd on
[root@hadoop103 ~]# service ntpd start
6)使用群发date命令查看结果

1.4 CM安装部署

1.4.1 安装JDK(三台)

1)在hadoop102创建/usr/java目录
[root@hadoop102 opt]# mkdir /usr/java
2)用SecureCRT将jdk-8u144-linux-x64.tar.gz上传至hadoop102,并解压到/usr/java目录下。
[root@hadoop102 ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/
3)配置JAVA_HOME环境变量
(1)打开/etc/profile文件
[root@hadoop102 software]$ vi /etc/profile
在profile文件末尾添加JDK路径
#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
(2)让修改后的文件生效
[root@hadoop102 jdk1.8.0_144]$ source /etc/profile
4)测试JDK是否安装成功
[root@hadoop102 jdk1.8.0_144]# java -version
java version “1.8.0_144”
5)将hadoop102中的JDK和环境变量分发到hadoop103、hadoop104两台主机
[root@hadoop102 opt]# xsync /usr/java/
[root@hadoop102 opt]# xsync /etc/profile

分别在hadoop103、hadoop104上source一下
[root@hadoop103 ~]$ source /etc/profile
[root@hadoop104 ~]# source /etc/profile

1.4.2 安装MySQL及其驱动

1)卸载mariadb
rpm -qa | grep mariadb | xargs rpm -e —nodeps
2)下载msql5.7 yum源
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
3)安装yum源
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
4)安装mysql
yum -y install mysql-server
5)启动mysql
service mysqld start
6)查看root用户密码
grep ‘temporary password’ /var/log/mysqld.log
7)执行mysql初始化脚本
mysql_secure_installation
8)输入新密码(至少12个字符,至少包含一个大写字母有,一个小写字母,一个数字,一个特殊字符)
安装CDH6.2 - 图23
9)配置root用户远程访问权限
mysql> grant all privileges on . to ‘root’ @’%’ identified by ‘itstar.123456’;

mysql> flush privileges;
10)安装mysql驱动
(1)将mysql-connector-java-5.1.27-bin.jar拷贝到/usr/share/java路径下,并重命名
[root@hadoop102 java]# mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
(2)分发驱动
xsync /usr/share/java

1.4.3 CM安装

Cloudera Manager默认采用yum安装,对于能够联网的用户,可直接在线安装,十分快捷方便。对于网络不畅的用户,则可搭建本地yum源,进行安装。
1)集群规划

节点 hadoop102 hadoop103 hadoop104
服务 cloudera-scm-server
cloudera-scm-agent
cloudera-scm-agent cloudera-scm-agent

2)下载在线yum源配置文件
cd /etc/yum.repos.d
wget https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/cloudera-manager.repo
3)分发在线yum源配置文件
xsync /etc/yum.repos.d/cloudera-manager.repo
4)搭建本地yum源(若网络环境畅通,此步可直接跳过
(1)将压缩包cloudera-repos.tar.gz拷贝到集群中的一台节点,解压到/var/www/html路径下
[root@hadoop102 ~]# tar -zxvf cloudera-repos.tar.gz -C /var/www/html
(2)进入/var/www/html/路径,并开启http服务
[root@hadoop102 ~]# cd /var/www/html/
[root@hadoop102 html]# python -m SimpleHTTPServer 8900
(3)浏览器访问该节点的8900端口,查看http服务是否正常开启
安装CDH6.2 - 图24
(4)编辑本地yum源配置文件
vim /etc/yum.repos.d/cloudera-manager.repo
文件内容如下
[cloudera-manager]
name=cloudera-manager
baseurl=http://hadoop102:8900/cloudera-repos/cm6/6.2.1/redhat7/yum/
enabled=1
gpgcheck=0
(5)分发该配置文件
xsync vim /etc/yum.repos.d/cloudera-manager.repo
4)安装CM server及agent
[root@hadoop102 ~]# yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
[root@hadoop103 ~]# yum install cloudera-manager-agent cloudera-manager-daemons
[root@hadoop104 ~]# yum install cloudera-manager-agent cloudera-manager-daemons

1.4.4 修改CM配置文件(三台)

vim /etc/cloudera-scm-agent/config.ini
安装CDH6.2 - 图25

1.4.5 在MySQL中建库

1)创建各组件需要的数据库
mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
2)为CM配置数据库(自带脚本)
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root itstar.123456

1.4.6 启动CM服务

1)启动服务节点:hadoop102
[root@hadoop102 ~]# systemctl start cloudera-scm-server
2)启动工作节点:hadoop102、hadoop103、hadoop104
[root@hadoop102 ~]# systemctl start cloudera-scm-agent

[root@hadoop103 ~]# systemctl start cloudera-scm-agent

[root@hadoop104 ~]# systemctl start cloudera-scm-agent
3)查看Server启动日志
[root@hadoop102 cm]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
安装CDH6.2 - 图26
出现Started Jetty server字样及表明启动成功。
4)访问http://hadoop102:7180(初始用户名、密码均为admin)
安装CDH6.2 - 图27

1.3.7 关闭CM服务

1)关闭工作节点:hadoop102、hadoop103、hadoop104
[root@hadoop102 ~]# systemctl stop cloudera-scm-agent

[root@hadoop103 ~]# systemctl stop cloudera-scm-agent

[root@hadoop104 ~]# systemctl stop cloudera-scm-agent
2)关闭服务节点:hadoop102
[root@hadoop102 ~]# systemctl stop cloudera-scm-server
第2章 数仓之CDH
Cloudera Manager提供了十分方便的安装向导,大大简化了CDH的安装和部署。

2.1 选择商业版本

1)欢迎页面
安装CDH6.2 - 图28
2)用户协议
安装CDH6.2 - 图29
3)选择免费版
安装CDH6.2 - 图30

2.2 部署CDH集群

1)欢迎页面
安装CDH6.2 - 图31
2)集群命名
安装CDH6.2 - 图32
3)选定集群物理节点
安装CDH6.2 - 图33
4)添加本地parcel库
安装CDH6.2 - 图34
安装CDH6.2 - 图35
安装CDH6.2 - 图36
5)等待parcel的下载、分配、解压和激活
安装CDH6.2 - 图37
6)检查集群网络环境
安装CDH6.2 - 图38
7)选择要安装的CDH组件,选择自定义安装
安装CDH6.2 - 图39
8)选择需要安装的组件,如下
安装CDH6.2 - 图40
9)CDH各组件角色分布
安装CDH6.2 - 图41
安装CDH6.2 - 图42
安装CDH6.2 - 图43
10)数据库连接测试
安装CDH6.2 - 图44
11)各组件基本设置,使用默认即可
安装CDH6.2 - 图45
12)等待安装部署和启动
安装CDH6.2 - 图46
安装CDH6.2 - 图47
安装CDH6.2 - 图48
13)启动成功
安装CDH6.2 - 图49
第3章 数仓搭建环境准备

3.1 Flume 安装部署

1)添加服务
安装CDH6.2 - 图50
2)选择Flume
安装CDH6.2 - 图51
3)选择依赖
安装CDH6.2 - 图52
4)选择部署节点
安装CDH6.2 - 图53
5)完成

3.2 Sqoop安装部署

1)添加服务
安装CDH6.2 - 图54
2)选择Sqoop
安装CDH6.2 - 图55
3)选择部署节点
安装CDH6.2 - 图56
4)完成

3.3 配置Hadoop支持LZO

1)点击主机,在下拉菜单中点击Parcel
安装CDH6.2 - 图57
2)点击配置
安装CDH6.2 - 图58
3)加上gplextras parcel库的url
本地url: http://hadoop102:8900/cloudera-repos/gplextras6/6.2.1/parcels/
远程url: https://archive.cloudera.com/gplextras6/6.2.1/parcels/
安装CDH6.2 - 图59
4)静待片刻,Parcel列表中出现了GPLEXTERAS,依次点击下载、分配、激活。
安装CDH6.2 - 图60
5)修改HDFS配置
在HDFS配置项中搜索“压缩编码解码器”,加入com.hadoop.compression.lzo.LzopCodec
安装CDH6.2 - 图61
6)修改Hive配置
在Hive配置项中搜索“Hive 辅助 JAR 目录”,加入/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib
安装CDH6.2 - 图62
7)修改Sqoop配置
在Sqoop的配置项中搜索“sqoop-conf/sqoop-env.sh 的 Sqoop 1 Client 客户端高级配置代码段(安全阀)”,加入以下字段
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/*
JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/native
安装CDH6.2 - 图63
8)重启相关组件
安装CDH6.2 - 图64

3.4 修改yarn配置参数

1)在yarn配置项中搜索“yarn.nodemanager.resource.memory-mb”,修改成4G。
安装CDH6.2 - 图65
2)在yarn配置项中搜索“yarn.scheduler.maximum-allocation-mb”,修改成2G。
安装CDH6.2 - 图66