前言
一、官网介绍
CDH是Cloudera的100%开源平台发行版,包括Apache Hadoop,专为满足企业需求而构建。CDH提供开箱即用的企业使用所需的一切。通过将Hadoop与十几个其他关键的开源项目集成,Cloudera创建了一个功能先进的系统,可帮助您执行端到端的大数据工作流程。
二、原生Hadoop与CDH比较
-
Apache Hadoop 不足之处
- 版本管理混乱
- 部署过程繁琐、升级过程复杂
- 兼容性差
- 安全性低
-
CDH的优点:
- 版本划分清晰
- 版本更新速度快
- 支持Kerberos安全认证
- 文档清晰
- 支持多种安装方式(Cloudera Manager、YUM、RPM、Tarball)
-
CDH提供以下特性:
- 灵活性:能够存储各种类型的数据,并使用各种不同的计算框架进行操作,包括批处理、交互式sql、文本搜索、机器学习和统计计算。
- 集成性:能够快速集成和运行一个完整的Hadoop平台,适用于各种不同的硬件和软件。
- 安全性:处理和控制敏感数据。
- 扩展性:能够部署多种应用,并扩展和扩充它们以满足你的需求。
- 高可用性:可以放心地用于关键的商业任务。
- 兼容性:可以利用你现有的IT基础设施和资源。
-
为什么选择CDH:
- CDH基于稳定版Apache Hadoop,并应用最新Bug修复或者Feature的Patch
- Cloudera官网上安装、升级文档十分详细
- CDH支持Yum包、tar包、RPM包,Cloudera Manager四种安装方式。推荐使用Yum、Apt方式安装
三、什么是CM
CM(cloudera Manager)是一种管理CDH集群的端到端的应用。CM通过对CDH集群的各部分提供精细的可视化和控制,建立了企业级部署的标准,增强了操作人员的能力以提升性能、提升服务质量、提高合规性、降低管理成本。
通过CM,技术人员可以很容易地部署和集中化操作CDH技术栈和其他可托管的服务。它使安装过程自动化,使部署时间从几个星期减少到几分钟;提供了一个集群范围、实时的主机和服务运行情况的视图;提供了一个单一的中央控制台,以对集群配置进行变更;并采用全方位的报告和诊断工具来帮助你优化性能和利用率。
-
Cloudera Manager Server由以下几个部分组成:
-
Agent:安装在每台主机上。该代理负责启动和停止的过程,拆包配置,触发装置和监控主机。
-
Management Service:由一组执行各种监控,警报和报告功能角色的服务。
-
Database:存储配置和监视信息。通常情况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不同的逻辑数据库。
-
Cloudera Repository:软件由Cloudera 管理分布存储库。
-
Clients:是用于与服务器进行交互的接口:
-
Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
-
API :与开发人员创建自定义的Cloudera Manager应用程序的API。
-
环境准备
一、所需的软件包
- mysql-connector-java-5.1.47.jar
- mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
- jdk-8u181-linux-x64.tar.gz
- cm6.3.1-redhat7.tar.gz
- CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel
- CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1
- manifest.json
二、主机规划
Centos7.x -(Linux localhost 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux)
| Hostname | IPAddress | 角色 | 硬件配置 | Parcel⽂件离线源 | Mysql组件 | CM服务进程 |
|---|---|---|---|---|---|---|
| CDH1.xinxing | 172.18.12.252 | Master | 2H 8G | √ | √ | Activity Monitor |
| CDH2.xinxing | 172.18.13.3 | Slave | 2H 8G | Alert Publisher、Event Server | ||
| CDH3.xinxing | 172.18.13.5 | Slave | 2H 8G | Host Monitor、Service Monitor |
集群部署
一、集群节点初始化
1、设置所有节点的hosts⽂件:
vim /etc/hosts
后面如果遇到问题就:
注释如下:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
添加如下:
172.18.12.252 CDH1.xinxing
172.18.13.3 CDH2.xinxing
172.18.13.5 CDH3.xinxing
2、关闭防火墙规则关闭Selinux:
[root@localhost /]# systemctl stop firewalld #关闭防火墙
[root@localhost /]# systemctl disable firewalld #关闭防火墙开机自启动
[root@localhost /]# iptables -F #清空规则
[root@localhost /]# vi /etc/selinux/config #将SELINUX=enforcing改为SELINUX=disabled,重启后生效
所有机器配置完后重启:
[root@localhost tmp]# reboot
3、安装NTP服务同步时区以及时钟
安装NTP服务同步时区以及时钟
[root@localhost tmp]# yum -y install ntp
服务端:
[root@localhost tmp]# vim /etc/ntp.conf
注释四行:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
添加一行:
server 127.127.1.0 iburst
启动ntp服务:
[root@localhost tmp]# systemctl start ntpd
查看是否同步:
[root@localhost tmp]# ntpq -p
设置开机启动
[root@localhost tmp]# systemctl enable ntpd
客户端
[root@localhost tmp]# vim /etc/ntp.conf
注释四行:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
配置本地ntpd Server:
server 172.18.13.153
允许ntpdserver主动修改本机时间:
restrict 172.18.13.153 nomodify notrap noquery
与ntpd Server同步一次:
[root@localhost tmp]# ntpdate 172.18.13.153
客户端启动ntp服务:
[root@localhost tmp]# systemctl start ntpd
设置开机启动:
[root@localhost tmp]# systemctl enable ntpd
查看状态:
[root@localhost tmp]# ntpq -p
4、所有节点部署JDK
参考我的另一片文章> java环境变量配置
5、主节点离线部署mysql5.7
参考我的另一片文章> 两种方式离线部署Mysql5.7.x
6、创建CDH的元数据库和⽤户、amon服务的数据库及⽤户
create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
flush privileges;
7、在主节点上把jdbc驱动放到指定的目录并去掉名称上的版本号
[root@localhost mysql]# mkdir -p /usr/share/java/ #cm会自动去这个默认的位置寻找jdbc驱动
[root@localhost mysql]# cd /tmp/
[root@localhost tmp]# cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
二、CDH正式部署
1、离线部署cm server及agent
所有节点:
[root@localhost /]# mkdir /opt/cloudera-manager
[root@localhost /]# cd /tmp
[root@localhost tmp]# tar -xzvf cm6.3.1-redhat7.tar.gz -C /opt/cloudera-manager/
[root@localhost tmp]# cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64
安装前先新建用户 useradd cloudera-scm
否则你将会以ROOT的身份安装CDH
主节点:
[root@localhost x86_64]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@localhost x86_64]# rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@localhost x86_64]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
从节点:
[root@localhost x86_64]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
[root@localhost x86_64]# rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force
2、修改配置文件
所有agent节点配置:
[root@CDH1 /]# vim /etc/cloudera-scm-agent/config.ini
server_host=localhost改为:server_host=cdh1.xinxing
主节点修改serverDB的配置:
[root@localhost x86_64]# vim /etc/cloudera-scm-server/db.properties
配置如下:
# Copyright (c) 2012 Cloudera, Inc. All rights reserved.
#
# This file describes the database connection.
#
# The database type
# Currently 'mysql', 'postgresql' and 'oracle' are valid databases.
com.cloudera.cmf.db.type=mysql
# The database host
# If a non standard port is needed, use 'hostname:port'
com.cloudera.cmf.db.host=cdh1.xinxing
# The database name
com.cloudera.cmf.db.name=cmf
# The database user
com.cloudera.cmf.db.user=cmf
#The database user's password
com.cloudera.cmf.db.password=123456
# The db setup type
# After fresh install it is set to INIT
# and will be changed post config.
# If scm-server uses Embedded DB then it is set to EMBEDDED
# If scm-server uses External DB then it is set to EXTERNAL
com.cloudera.cmf.db.setupType=EXTERNAL
3、主节点部署离线parcel源
安装httpd服务
[root@localhost x86_64]# yum install -y httpd
部署离线parcel源并启动httpd服务
[root@localhost /]# cd tmp/
[root@localhost tmp]# mkdir -p /var/www/html/cdh6_parcel
[root@localhost tmp]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/www/html/cdh6_parcel/
[root@localhost tmp]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 /var/www/html/cdh6_parcel/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha
[root@localhost tmp]# mv manifest.json /var/www/html/cdh6_parcel/
[root@localhost tmp]# cd /var/www/html/cdh6_parcel/
[root@localhost cdh6_parcel]# systemctl start httpd
浏览器访问
http://172.18.12.252/cdh6_parcel/查看是否可以访问到
4、主节点启动Server服务
[root@localhost cdh6_parcel]# systemctl start cloudera-scm-server
[root@localhost cloudera-scm-server]# tail -F /var/log/cloudera-scm-server/cloudera-scm-server.log 查看日志
#拋错就解决,没拋错就等一会儿出现INFO WebServerImpl:org.eclipse.jetty.server.AbstractConnector: Started ServerConnector@4b1e88bc{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}
浏览器访问
http://172.18.12.252:7180/查看是否可以访问到
拋错就解决!不过要给自己后面留坑
5、所有节点启动Agent服务
[root@CDH1 /]# systemctl start cloudera-scm-agent
6、登录web界面配置(admin/admin)
所有机器修改如下:
[root@CDH3 ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@CDH3 ~]# echo 'vm.swappiness=10'>> /etc/sysctl.conf #处理虚拟大小问题
[root@CDH3 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag #处理大页面问题,不处理会影响大性能
[root@CDH3 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
请根据自己的实际问题去解决问题,不要盲目复制