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基础环境准备html

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

  • VMWare中新建虚拟机,按步骤操做便可java

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

  • 配置参数列表mysql

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的一种安全子系统(三种工做模式)
- 强制模式:违反规则,则制止,并记录到日志文件
- 宽容模式:违反规则,不制止,记录到日志文件
- 关闭linux

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

1.6 虚拟机免密码登陆

  • 为何要免密登陆
    Hadoop 节点众多, 因此通常在主节点启动从节点, 这个时候就须要程序自动在主节点登陆到从节点中, 若是不能免密就每次都要输入密码, 很是麻烦git

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

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入门看这篇

sql

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

YARN

Yarn 详解shell

资源管理、任务调度的框架,主要包含三大模块:
- 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上的数据进行分析

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

相关文章
相关标签/搜索