第一章 数仓之Cloudera Manager?
1.1 CM简介
1.1.1 CM简介
Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具,使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。
1.1.2 CM架构
1.2 环境准备
1.2.1 虚拟机准备
虚拟机信息
IP | Hostname | CPU | 内存 | 硬盘 | 192.168.10.221 | node01 | 4 | 20G | 50G | 192.168.10.222 | node02 | 4 | 20G | 50G | 192.168.10.223 | node03 | 4 | 20G | 50G |
准备三台虚拟机(node01、node02、node03),配置好对应主机的网络IP、主机名称、关闭防火墙。
查看网络的网段的范围:192.168.10.[128-254]
# 查看网关
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.2 0.0.0.0 UG 100 0 0 ens33
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
# 配置 IP 地址
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 设置所有节点(三台虚拟机)的 hosts 文件
[root@localhost ~]# vi /etc/hosts
# 配置完成后,重启网络
[root@localhost ~]# systemctl restart network
# 查看主机名
[root@localhost ~]# hostname
# ping 其他主机域名进行验证
[root@localhost ~]# ping node01
# ?关闭所有节点的防火墙并清空规则
# 停止并禁用防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
# 清空规则
[root@localhost ~]# iptables -F
# 查看防火墙状态
[root@localhost ~]# systemctl status firewalld
# 关闭所有节点的 selinux
[root@localhost ~]# vi /etc/selinux/config
? ? SELINUX=disabled
# 设置后重启生效
[root@localhost ~]# reboot
安全增强型 Linux(SELinux)是一种采用安全架构的 Linux 系统,它能够让管理员更好地管控哪些人可以访问系统。其旨在提高 Linux 系统的安全性,主要作用是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
1.2.2 设置所有节点的时区一致及时钟同步
① 时区
# 查看节点时区
timedatectl
# 所有节点设置亚洲上海?时区
timedatectl set-timezone Asia/Shanghai
② 时间同步 主从:主节点和互联网同步时间,从节点与主节点同步
# 所有节点安装 ntp
yum install -y ntp
# 选取 node01 为 ntp 的主节点
[root@node01 ~]# vi /etc/ntp.conf
? ? # 当外部时间不不可用时,使用本地硬件时间
? ? server 127.127.1.0 iburst local clock
? ? # 允许哪些网段的机器来同步时间
? ? restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
# 开启 ntpd 及查看状态
[root@node01 ~]# systemctl start ntpd
[root@node01 ~]# systemctl status ntpd
# 验证
[root@node01 ~]# ntpq -p
# 其他从节点停止禁用 ntpd 服务,并同步时间
[root@node02 ~]# systemctl stop ntpd
[root@node02 ~]# systemctl disable ntpd
[root@node02 ~]# ntpdate node01
11 May 11:13:04 ntpdate[9877]: adjust time server 192.168.10.221 offset 0.008564 sec
# 其他从节点每天凌晨同步 node01 节点时间
[root@node01 ~]# crontab -e
? ? 00 00 * * * /usr/sbin/ntpdate node01
1.2.3 安装JDK(重要)
需要使用官网提供的?jdk
# 在 node01 的 /opt 目录下创建 module 和 software 文件夹
[root@node01 ~]# cd /opt/
[root@node01 opt]# mkdir moudle software
# 上传 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm 并安装
[root@node01 software]# rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
[root@node01 software]# vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export PATH=${JAVA_HOME}/bin:${PATH}
[root@node01 software]# source /etc/profile
[root@node01 software]# java -version
java version "1.8.0_262"
# 分发文件,并 source
[root@node01 software]# scp -r /usr/java/ node02:/usr/
[root@node01 software]# scp -r /usr/java/ node03:/usr/
[root@node01 software]# scp /etc/profile node02:/etc/
[root@node01 software]# scp /etc/profile node03:/etc/
[root@node02 software]# source /etc/profile
[root@node02 software]# java -version
[root@node03 software]# source /etc/profile
[root@node03 software]# java -version
1.2.4 安装MySQL
注意:一定要用root用户操作如下步骤;先卸载MySQL再安装
1)安装包准备
# 查看 MySQL 是否安装
[root@node01 ~]# rpm -qa|grep -i mysql
mysql-libs-5.1.73-7.el6.x86_64
# 如果安装了 MySQL,就先卸载,并删除原有 MySql 依赖
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
yum remove mysql-libs(要做)
# 下载 MySql 依赖并安装
[root@node01 ~]# yum install libaio
[root@node01 ~]# yum -y install autoconf
[root@node01 ~]# cd /opt/software/
[root@node01 software]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-compat-5.6.24-1.el6.x86_64.rpm
[root@node01 software]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-shared-5.6.24-1.el6.x86_64.rpm
# 上传 mysql-libs.zip 到 node01 的 /opt/software 目录,并解压文件到当前目录
[root@node01 software]# yum install unzip
[root@node01 software]# unzip mysql-libs.zip
[root@node01 software]# ls
mysql-libs.zip
mysql-libs
# 可进入到 mysql-libs 文件夹下查看文件
[root@node01 software]# ll mysql-libs/
总用量 76048
-rw-r--r-- 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r-- 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
2)安装MySQL服务器
# 安装 MySQL 服务端
[root@node01 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
# 查看产生的随机密码
[root@node01 mysql-libs]# cat /root/.mysql_secret
PUhuZJJt9rTRGWrX
# 查看MySQL状态
[root@node01 mysql-libs]# service mysql status
# 启动MySQL
[root@node01 mysql-libs]# service mysql start
3)安装MySQL客户端
# 安装MySQL客户端
[root@node01 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
# 链接MySQL(密码替换成产生的随机密码)
[root@node01 mysql-libs]# mysql -uroot -pPUhuZJJt9rTRGWrX
# 修改密码
mysql>SET PASSWORD=PASSWORD('000000');
# 退出MySQL
mysql>exit
4)MySQL中user表中主机配置
# 配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。
# 进入MySQL
[root@node01 mysql-libs]# mysql -uroot -p123456
# 显示数据库 mysql>show databases;
# 使用MySQL数据库 mysql>use mysql;
# 展示MySQL数据库中的所有表 mysql>show tables;
# 展示user表的结构 mysql>desc user;
# 查询user表
mysql>select User, Host, Password from user;
# 修改user表,把Host表内容修改为%
mysql>update user set host='%' where host='localhost';
# 删除root用户的其他host
mysql> delete from user where host!='%';
刷新 mysql>flush privileges;
退出 mysql>quit;
1.3 CM安装部署
1.3.1 MySQL中建库
# 创建各组件需要的数据库
mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> CREATE DATABASE hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
1.3.2 CM安装
# 将 mysql-connector-java-5.1.27-bin.jar 拷贝到 /usr/share/java 路径下,并重命名
[root@node01 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
[root@node01 mysql-libs]# cd mysql-connector-java-5.1.27
[root@node01 mysql-connector-java-5.1.27]# mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
[root@node01 mysql-connector-java-5.1.27]# scp mysql-connector-java.jar /usr/share/java/
[root@node01 mysql-connector-java-5.1.27]# scp -r /usr/share/java/ node02:/usr/share/
[root@node01 mysql-connector-java-5.1.27]# scp -r /usr/share/java/ node03:/usr/share/
集群规划
节点 | node01 | node02 | node03 |
---|
服务 | cloudera-scm-server cloudera-scm-agent | cloudera-scm-agent | cloudera-scm-agent |
# 创建 cloudera-manager 目录,存放 cdh 安装文件
[root@node01 mysql-connector-java-5.1.27]# mkdir /opt/cloudera-manager
[root@node01 mysql-connector-java-5.1.27]# cd /opt/software/
[root@node01 software]# tar -zxvf cm6.3.1-redhat7.tar.gz
[root@node01 software]# cd cm6.3.1/RPMS/x86_64/
[root@node01 x86_64]# mv cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# mv cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# mv cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@node01 x86_64]# cd /opt/cloudera-manager/
[root@node01 cloudera-manager]# ll
总用量 1185872
-rw-r--r--. 1 2001 2001 10483568 9月 25 2019 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 1203832464 9月 25 2019 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 11488 9月 25 2019 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
# 安装cloudera-manager-daemons,安装完毕后多出 /opt/cloudera 目录
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@node01 cloudera-manager]# cd /opt
[root@node01 opt]# scp -r /opt/cloudera-manager/ node02:/opt/
[root@node01 opt]# scp -r /opt/cloudera-manager/ node03:/opt/
[root@node02 ~]# cd /opt/cloudera-manager/
[root@node02 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
[root@node03 ~]# cd /opt/cloudera-manager/
[root@node03 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
# 安装 cloudera-manager-agent
[root@node01 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@node02 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node02 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@node03 cloudera-manager]# yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt
[root@node03 cloudera-manager]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
# 安装 agent 的 server 节点
[root@node01 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
[root@node02 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
[root@node02 cloudera-manager]# vim /etc/cloudera-scm-agent/config.ini
server_host=node01
# 安装 cloudera-manager-server
[root@node01 cloudera-manager]# rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
# 上传 CDH 包导 parcel-repo
[root@node01 cloudera-manager]# cd /opt/cloudera/parcel-repo
[root@node01 parcel-repo]# ll
total 2033432
-rw-r--r-- 1 root root 2082186246 May 21 11:10 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
-rw-r--r-- 1 root root???????? 40 May 21 10:56 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
-rw-r--r-- 1 root root????? 33887 May 21 10:56 manifest.json
[root@hadoop101 parcel-repo]#
mv 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.sha
# 修改server的db.properties
[root@node01 parcel-repo]# vim /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=node01:3306
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
com.cloudera.cmf.db.setupType=EXTERNAL
# 启动server服务
[root@node01 log]# cd /var/log/
[root@node01 log]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
[root@node01 software]# systemctl start cloudera-scm-server
scm
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
# 启动agent节点
[root@node01 software]# systemctl start cloudera-scm-agent
[root@node02 software]# systemctl start cloudera-scm-agent
[root@node03 software]# systemctl start cloudera-scm-agent
1.4 CM的集群部署
接受条款和协议?:
?后续未展示的操作,点击继续即可。
集群安装 :
集群名称自行更改,可默认。
指定主机:
选择 CDH 版本 6.3.2:
等待下载安装:
检查网络性能,检查主机:
?Inspect Network Performance,可能会出现警告,网络延迟较高。
# 问题 1
# 临时解决:
[root@node01 ~]# echo "10">/proc/sys/vm/swappiness
[root@node02 ~]# echo "10">/proc/sys/vm/swappiness
[root@node03 ~]# echo "10">/proc/sys/vm/swappiness
# 永久解决
[root@node01 ~]# sysctl -w vm.swappiness=10
[root@node01 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf
[root@node02 ~]# sysctl -w vm.swappiness=10
[root@node02 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf
[root@node03 ~]# sysctl -w vm.swappiness=10
[root@node03 ~]# echo vm.swappiness = 10 >> /etc/sysctl.conf
# 问题 2
[root@node01 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@node01 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@node02 software]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 问题 3
可以忽略
群集设置:
?
?
第2章 数仓之数据采集模块
2.1 HDFS、YARN、Zookeeper安装
2.1.1 分配节点
2.1.2 集群设置全部选默认即可
2.1.3 修改HDFS的权限检查配置
关闭HDFS中的权限检查:dfs.permissions。
?
?
类似问题,配置相应的内存大小,内存若不够,则忽略。
?
??版本验证问题,可以忽略。?
2.1.5 配置NameNode HA
1)进入HDFS页面点击启用High Availability
2)命名
3)分配角色
4)审核更改
5)等待启动服务
2.1.6 配置Yarn HA
?
|