第1章 数仓之Cloudera Manager
1.1 CM简介
1.1.1 CM简介
Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
1.2 阿里云服务器准备
1.2.1 注册阿里云账户
阿里云网址为:https://cn.aliyun.com/,注册账号并登录。
1.2.2 购买ECS云服务器
1) 进入控制台
2)打开侧边栏,点击云服务器ECS
3)侧边栏点击实例,然后点击创建实例
4)选择计费方式、服务器区域
5)选定服务器配置
6)选定服务器系统
7)选定磁盘类型及大小
8)网络和安全组配置
9)系统配置
10)分组设置,默认即可
11)确认订单
1.2.3 ECS配置及安全组修改
1)升级hadoop102配置
(1)停止实例
(2)更改实例规格
2)修改安全组策略
需将以下端口开放
服务 | 端口 |
---|---|
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
2)填写hostname(填写公网ip)
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个字符,至少包含一个大写字母有,一个小写字母,一个数字,一个特殊字符)
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服务是否正常开启
(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
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
出现Started Jetty server字样及表明启动成功。
4)访问http://hadoop102:7180(初始用户名、密码均为admin)
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 选择商业版本
2.2 部署CDH集群
1)欢迎页面
2)集群命名
3)选定集群物理节点
4)添加本地parcel库
5)等待parcel的下载、分配、解压和激活
6)检查集群网络环境
7)选择要安装的CDH组件,选择自定义安装
8)选择需要安装的组件,如下
9)CDH各组件角色分布
10)数据库连接测试
11)各组件基本设置,使用默认即可
12)等待安装部署和启动
13)启动成功
第3章 数仓搭建环境准备
3.1 Flume 安装部署
1)添加服务
2)选择Flume
3)选择依赖
4)选择部署节点
5)完成
3.2 Sqoop安装部署
3.3 配置Hadoop支持LZO
1)点击主机,在下拉菜单中点击Parcel
2)点击配置
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/
4)静待片刻,Parcel列表中出现了GPLEXTERAS,依次点击下载、分配、激活。
5)修改HDFS配置
在HDFS配置项中搜索“压缩编码解码器”,加入com.hadoop.compression.lzo.LzopCodec
6)修改Hive配置
在Hive配置项中搜索“Hive 辅助 JAR 目录”,加入/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib
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
8)重启相关组件
3.4 修改yarn配置参数
1)在yarn配置项中搜索“yarn.nodemanager.resource.memory-mb”,修改成4G。
2)在yarn配置项中搜索“yarn.scheduler.maximum-allocation-mb”,修改成2G。