Fork me on GitHub

CDH 安装与部署

组件版本

  • jdk-8u261-linux-x64
  • centOS 7.6
  • Cloudera Manager: 6.2.1
  • CDH: 6.2.1
  • Hadoop:3.0.0-cdh6.2.1
  • HBase:2.1.0-cdh6.2.1
  • Hive:2.1.1-cdh6.2.1
  • Kafka:2.1.1-cdh6.2.1
  • Kudu:1.9.0-cdh6.2.1
  • Oozie:5.1.0-cdh6.2.1
  • Spark:2.4.0-cdh6.2.1
  • Sqoop:1.4.7-cdh6.2.1
  • Zookeeper:3.4.5-cdh6.2.1

0.CDH介绍

  • ClouderaManager架构
Agent:安装在每台主机上。它负责启动和停止进程,解压缩配置,触发安装和监控主机
Management Service:执行各种监控、报警和报告功能的一组角色的服务。 
Database:存储配置和监控信息 (元数据)
Cloudera Repository:可供Cloudera Manager分配的软件的存储库
Client:用于与服务器进行交互的接口
Admin Console:管理员控制台 
API:开发人员使用 API可以创建自定义的Cloudera Manager应用程序

1.Linux 虚拟机基础环境

CentOS 6.5基础环境准备

1.1 虚拟机环境设置(不改变已生的MAC地址)

  • VMWare中新建虚拟机,按步骤操作即可

  • 这里选择自己配置的虚拟机
    - 复制三份,并将文件夹分别重命名为cdh001,cdh002,cdh003,cdh004,cdh005
    - 双击.vmx文件,则在VmWare中打开,并根据相应文件夹重命名
    - 在虚拟机中进行配置三台虚拟机的内存(任务管理器-性能-本机内存为8G),因此每台虚拟机内存分配不能超过2G。设置1G
    - 分配最大可占用的磁盘空间,这里40G
    - 配置ISO映像文件正确路径(CentOS 64)

  • 配置参数列表

IP 主机名 环境配置 安装
192.168.64.151 cdh001 关闭防火墙和SELinux,host映射,时钟同步 JDK 等
192.168.64.152 cdh002 关闭防火墙和SELinux,host映射,时钟同步 JDK 等
192.168.64.153 cdh003 关闭防火墙和SELinux,host映射,时钟同步 JDK 等
192.168.64.154 cdh004 关闭防火墙和SELinux,host映射,时钟同步 JDK 等
192.168.64.155 cdh005 关闭防火墙和SELinux,host映射,时钟同步 JDK 等
  • 集群配置
主机名 Server Agent MySQL
cdh001
cdh002
cdh003
cdh004
cdh005
  • 集群安装包
主机名 ZK ResourceManager JobHistory NodeManager Hive Kafka HBase(master 仅001) Phoenix(SQL on HBase) impala(Daemon全选,其它001) KUDU(TS全选,MS001) Oozle Hue
cdh001
cdh002
cdh003
cdh004
cdh005
  • 安装包列表
将相应包上传到相应节点的~目录下
# 安装传输工具
yum -y install lrzsz
# SecureCRT View-Command Window,后右击,选择 send command to all sessions
# 下载路径
https://archive.cloudera.com/cdh6/6.2.1/parcels/
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
https://archive.cloudera.com/phoenix/6.2.0/parcels/
https://archive.cloudera.com/phoenix/6.2.0/csd/
# cdh001

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

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

jdk-8u202-linux-x64.tar.gz
manifest.json
mysql-connector-java-5.1.40.jar

PHOENIX-1.0.jar
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
# cdh002-004
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

jdk-8u202-linux-x64.tar.gz
mysql-connector-java-5.1.40.jar
# cdh005
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

jdk-8u202-linux-x64.tar.gz
mysql-connector-java-5.1.40.jar

mysql-community-client-5.7.31-1.el7.x86_64.rpm
mysql-community-common-5.7.31-1.el7.x86_64.rpm
mysql-community-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-server-5.7.31-1.el7.x86_64.rpm

1.2 虚拟机修改Mac和IP

网络上解决步骤各异,其实就一句话。
只要保证vm virtual machine的.vmx配置文件、ifconfig –a、/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/udev/rules.d/70-persistent-net.rules,
所使用的网卡设备和MAC地址一致即可。
  • 每台虚拟机更换MAC地址和IP
#  打开三台虚拟机设置,查看 MAC 地址(若相同,则要生成新的)
cdh001   00:50:56:20:4D:DB
cdh002   00:50:56:21:A4:77
cdh003   00:50:56:33:50:65
cdh003   00:50:56:30:82:D0
cdh003   00:50:56:39:A8:83

# 执行
ONBOOT改为yes:启动时会激活网卡
BOOTROTO设置为static,表示静态IP
cd /etc/sysconfig/network-script
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#  输入 **reboot 重启**三台主机
# 输入 ifconfig,查看ip是否正确
# 安装 ifconfig
yum search ifconfig
yum install net-tools.x86_64 
# 输入 ping www.baidu.com 查看能否正确联网,CTRL+C结束终止进程
# vim 安装
yum -y install vim*

1.3 虚拟机修改对应主机名与域名映射

# 执行修改主机名
hostnamectl set-hostname cdh003
# 打开添加域名映射
vim /etc/hosts

192.168.64.151      cdh001
192.168.64.152      cdh002
192.168.64.153      cdh003
192.168.64.154      cdh004
192.168.64.155      cdh005

1.4 虚拟机关闭防火墙

# 复制虚拟机并重复上一步骤,每台联网
# 执行关闭命令
systemctl stop firewalld.service
# 执行开机禁用防火墙自启命令
systemctl disable firewalld.service

1.5 SELinux 关闭

SELinux 是Linux的一种安全子系统(三种工作模式)
- 强制模式:违反规则,则制止,并记录到日志文件
- 宽容模式:违反规则,不制止,记录到日志文件
- 关闭

# 修改selinux的配置文件
vi /etc/selinux/config
# 将其中的模式改为:
SELINUX=disabled

1.6 虚拟机免密码登录

  • 为什么要免密登录
    Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦

  • 第一步:在三台机器执行以下命令,生成公钥与私钥(按enter 3次)

ssh-keygen -t rsa
  • 第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器,三台机器执行命令:
ssh-copy-id cdh001
  • 第三步: 复制第一台机器的认证到其他机器
在第一台机器上面执行以下命令

scp /root/.ssh/authorized_keys cdh002:/root/.ssh
scp /root/.ssh/authorized_keys cdh003:/root/.ssh
scp /root/.ssh/authorized_keys cdh004:/root/.ssh
scp /root/.ssh/authorized_keys cdh005:/root/.ssh

1.7 三台机器时钟同步 & 安装一些依赖包

# 安装
yum -y install gcc python-devel cyrus-sasl* chrony iotop yum-utils yum-plugin-downloadonly psmisc ntp ntpdate httpd createrepo wget git rsync mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi libxslt krb5-devel cyrus-sasl-gssapi cyrus-sasl-devel libxml2-devel libxslt-devel openldap-devel python-devel python-simplejson sqlite-devel
# 卸载 
yum -y remove mariadb-libs
# 时钟同步
systemctl start ntpd
systemctl enable ntpd

1.8 修改系统参数

sysctl vm.swappiness=10
echo 'vm.swappiness=10'>> /etc/sysctl.conf
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

2. 安装 java

# 创建安装目录
mkdir /usr/java
# 输入如下指令到所有节点执行
tar -zxf jdk-8u202-linux-x64.tar.gz -C /usr/java/
cat << EOF >> /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_202
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile
jps
# 检验安装版本
java -version

3. 安装 mysql

# 下载这6个MySQL的rpm包
mysql-community-client-5.7.31-1.el7.x86_64.rpm
mysql-community-common-5.7.31-1.el7.x86_64.rpm
mysql-community-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-server-5.7.31-1.el7.x86_64.rpm

# 在cdh005上执行运行(不清楚安装包间是否相互依赖,尽量按所给顺序依次)
yum -y localinstall mysql-community-common-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-libs-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-devel-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-client-5.7.31-1.el7.x86_64.rpm
yum -y localinstall mysql-community-server-5.7.31-1.el7.x86_64.rpm

# 启动
systemctl start mysqld
# 开机自启动
systemctl enable mysqld

# 查看临时密码
cat /var/log/mysqld.log | grep password
# 临时密码填充到引号内,执行
mysql -uroot -p'ly0h!Gw4PyBk'

# 取消mysql密码规范限制
set global validate_password_policy=0;
set global validate_password_length=1;

# 首次登录设置密码
set password=password('123456');
# 退出
quit;

# 登陆设置允许外网访问当前的MySQL
mysql -uroot -p'123456'
use mysql;
update user set host='%' where host='localhost';
delete from user where host != '%';
flush privileges;
# 退出
quit;

# 创建ClouderaManager需要用到的几个数据库
# 登入
mysql -uroot -p'123456'
# 创建库
create database cmf default character set = 'utf8';
create database amon default character set = 'utf8';
create database hive default character set = 'latin1';
create database hue default character set = 'utf8';
create database oozie default character set = 'utf8';
quit;

# 所有节点执行
mv mysql-connector-java-5.1.40.jar mysql-connector-java.jar
mkdir /usr/share/java
mv mysql-connector-java.jar /usr/share/java/

4. CM服务安装

# 软件包
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

# 全部节点安装 daemons 和 agent(安装最好逐条输入,防止宕机)
yum -y localinstall cloudera-manager-daemons-6.2.1-1426065.el7.x86_64.rpm
yum -y localinstall cloudera-manager-agent-6.2.1-1426065.el7.x86_64.rpm

# cdh001 上安装 server
yum -y localinstall cloudera-manager-server-6.2.1-1426065.el7.x86_64.rpm
# 至此,CM服务安装完毕

5. CDH等相关安装包的移动和校验

# 移动CDH安装包至 /opt/cloudera/parcel-repo/ 目录
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel* /opt/cloudera/parcel-repo/

# 移动PHOENIX‐1.0.jar 至 /opt/cloudera/parcel-repo/ 目录
mv PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel* /opt/cloudera/parcel-repo/

# 移动 manifest.json 至 /opt/cloudera/parcel-repo/ 目录
mv manifest.json /opt/cloudera/parcel-repo/

# 移动 PHOENIX-1.0.jar 至 /opt/cloudera/csd/ 目录
mv PHOENIX-1.0.jar /opt/cloudera/csd/

# 检验 CDH parcel 包是否完整(parcel包在传输过程中因网络可能缺失)
sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
cat CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
# 上面两条命令得到的值必须一样

# sha1确认后改为sha
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

# 校验 PHOENIX sha 包是否完整
sha1sum PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
cat PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha

6. 修改server和agent的配置文件

# cdh001上修改server
vi /etc/cloudera-scm-server/db.properties

# 显示行号
: set nu

# 12行去掉注释把localhost改成cdh005
# 15行去掉注释
# 18行去掉注释,把cmf改成root
# 21行去掉注释,密码那里填写123456
# 28行,INIT改为 EXTERNAL
# 全部节点修改agent
vi /etc/cloudera-scm-agent/config.ini

# 15行把localhost修改为cdh001

7. 启动CM,开始安装CDH集群

# 在cdh001上启动server
systemctl start cloudera-scm-server
# 另开一个窗口,查看相关日志。有异常就解决异常
tail -200f /var/log/cloudera-scm-server/cloudera-scm-server.log

# 下面这个异常可以忽略 
ERROR ParcelUpdateService:com.cloudera.parcel.components.ParcelDownloaderImpl: Unable to retrieve remote parcel repository manifest

# 在全部节点上启动agent
systemctl start cloudera-scm-agent

# 当在 cdh001上 netstat -tunlp | grep 7180 有内容时,说明我们可以访问web页面
# 若域名映射失败,打开本地hosts文件,添加映射
C:\Windows\System32\drivers\etc\hosts
# 浏览器输入
cdh001:7180,按照步骤进行安装。

安装1.1中的表格列出的所有安装包到相应的主机上

# 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈
# 狭义上来说,Hadoop是指Apache这款开源框架,它的核心组件有:
- HDFS(分布式文件系统):解决海量数据存储
- YARN (作业调度和集群资源管理的框架):解决资源任务调度
- MAPREDUCE(分布式运算编程框架):解决海量数据计算

Zookeeper

Zookeeper入门看这篇

它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题.
如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

YARN

Yarn 详解

资源管理、任务调度的框架,主要包含三大模块:
- ResourceManager(RM):负责所有资源的监控、分配和管理
- ApplicationMaster(AM):负责每一个具体应用程序的调度和协调
- NodeManager(NM):负责每一个节点的维护

Hive

Hive 高级应用

是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能

Kafka

kafka简明教程

使用Scala语言编写,是一个分布式,分区的,多副本,多订阅者的消息队列系统。

HBase

HBase 介绍与应用

当您需要对大数据进行随机,实时的读/写访问时。
Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待。

Phoenix

Phoenix入门到精通

Phoenix是一个开源的HBASE SQL层。它不仅可以使用标准的JDBC API替代HBASE client API创建表,插入和查询HBASE,也支持二级索引、事物以及多种SQL层优化。

impala

impala入门

Impala 是参照google 的新三篇论文Dremel(大批量数据查询工具)的开源实现,功能类似shark(依赖于hive)和Drill(apache),impala 是clouder 公司主导开发并开源,基于
hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。是使用cdh 的首选PB 级大数据实时查询分析引擎。(也可以单独安装使用,但一般都是和CDH一起使用;)

KUDU

KUDU原理与应用

简单来说:kudu是一个与hbase类似的列式存储分布式数据库。
官方给kudu的定位是:在更新更及时的基础上实现更快的数据分析

Oozie

Oozie——大数据任务调度框架

- Oozie是大数据四大协作框架之一——任务调度框架,另外三个分别为数据转换工具Sqoop,文件收集库框架Flume,大数据WEB工具Hue。
- 它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。
- Oozie需要部署到Java Servlet容器中运行。
- 功能相似的任务调度框架还有Azkaban和Zeus。

Hue

大数据分析工程师入门(十一):Hue & Zeppelin

是cdh专门的一套web管理器,它包括3个部分hue ui,hue server,hue db。hue提供所有的cdh组件的shell界面的接口。
你可以在hue编写mr,查看修改hdfs的文件,管理hive的元数据,运行Sqoop,编写Oozie工作流等大量工作。

组件测试

HIVE




# 测试语句
create table if not exists t1(id int,name string,score double) row format delimited fields terminated by ',' stored as parquet;
select count(*) from t1;
# 执行
按 Ctrl+enter

impala

# 按左侧刷新
# 执行测试语句
create table t2
 (
 name string,
 dt string,
 primary key(name,dt)
 )
 partition by hash partitions 16
 stored as kudu tblproperties (
 'kudu.master_addresses' = 'cdh001:7051'
 );
# 插入数据
insert into t2 values('zhangsan','2020‐05‐06');
# 查询
select count(*) from t2;
select * from t2;

phoenix

# phoenix 在linux上操作,选一台机器,输入
phoenix-sqlline
# 执行建表
create table if not exists t1(
 id Integer,
 name varchar,
 clazz varchar,
 score double
 constraint pk primary key(id)
 );
# !tables 显示所有表
# 插入数据
upsert into t1 values(1001,'zhangsan','606',87.5);
# 退出
!quit

安装过程中出现的错误及解决办法

  • 出现 rpm库校验失败或者损坏 错误
yum clean all
yum makecache
  • 出现systemctl 命令无
更改ISO为centOS7
  • 安装Agent 报错
安装失败。 无法接收 Agent 发出的检测信号。

请确保主机的名称已正确配置。
请确保端口 7182 可在 Cloudera Manager Server 上访问(检查防火墙规则)。
请确保正在添加的主机上的端口 9000 和 9001 空闲。
检查正在添加的主机上 /var/log/cloudera-scm-agent/ 中的代理日志(某些日志可在安装详细信息中找到)。
如果在 Cloudera Manager 中启用为代理使用 TLS 加密(管理 -> 设置 -> 安全),请确保 /etc/cloudera-scm-agent/config.ini在正在添加的主机上有 use_tls=1。重启相应的代理,并单击此处的重试链接。

解决:网上说是 因为开启了Auto-TLS导致了无法接收 Agent 发出的检测信号,重装时不开启Auto-TLS
本人折腾许久,换了个安装视频重装
  • 主机检查出现网络延迟报错,我直接PASS
  • 最后集群成功搭建,但是由于笔记本内存8G,无法启动zookeeper了
    发邮件问人,得到如下解答,十分感谢

数仓实现的组件搭配

# 数据量很大,需要流处理的
- 可以考虑 impala+kudu ,将数据存在kudu上,用impala建立,对kudu进行数据分析
- HBase 做存储,HIVE对其进行分析 或者 phoenix 对其进行分析
# 传统数仓项目(主要是离线数据分析)
- Hive 做查询,HDFS上以 Parquet 格式存储,HIVE进行数据的插入更新,在YARN上进行操作。
- impala用Hive的源数据对HDFS上的数据进行分析

成功安装的结果图(3台机器)


搭建过程来源于B站视频,十分感谢UP主的分享!!!

posted @ 2020-07-28 22:45  园狐  阅读(3834)  评论(3编辑  收藏  举报