CDH集群安装

概念介绍

CDH 概览

CDH是Apache Hadoop和相关项目的最完整、最受测试和最流行的发行版。CDH提供Hadoop的核心元素-可伸缩存储和分布式计算-以及基于web的用户界面和重要的企业功能。CDH是Apache许可的开放源码,是唯一提供统一批处理、交互式SQL和交互式搜索以及基于角色的访问控制的Hadoop解决方案。
CDH 提供以下特性:

灵活性:存储任何类型的数据并使用各种不同的计算框架进行操作,包括批处理、交互式SQL、免费文本搜索、机器学习和统计计算。
集成:在一个完整的Hadoop平台上快速启动和运行,该平台与广泛的硬件和软件解决方案一起工作。
安全:处理和控制敏感数据。
可伸缩性:启用广泛的应用程序和规模,并扩展它们以满足您的需求。
高可用性:满怀信心地执行任务关键的业务任务。
兼容性:利用您现有的IT基础设施和投资。

CDH 组件如下图:
Alt text

Cloudera Manager 概览

Cloudera Manager 是用于管理cdh集群的端到端应用程序。Cloudera Manager通过向CDH集群的每个部分提供细粒度的可见性并对其进行控制来设置企业部署标准-授权运营商提高性能、提高服务质量、提高遵从性和降低管理成本。使用Cloudera Manager,您可以轻松地部署和集中操作完整的CDH堆栈和其他托管服务。应用程序自动化安装过程,将部署时间从数周减少到分钟;为您提供在集群范围内运行主机和服务的实时视图;提供一个单一的中央控制台来执行整个集群的配置更改;并集成各种报告和诊断工具,以帮助您进行操作。
Alt text
Cloudera Manager 的架构如上图所示(cs结构),主要由如下几部分组成:

服务端/Server:Cloudera Manager 的核心。主要用于管理 web server 和应用逻辑。它用于安装软件,配置,开始和停止服务,以及管理服务运行的集群。
代理/agent:安装在每台主机上。它负责启动和停止的进程,部署配置,触发安装和监控主机。
数据库/Database:存储配置和监控信息。通常可以在一个或多个数据库服务器上运行的多个逻辑数据库。例如,所述的 Cloudera 管理器服务和监视,后台程序使用不同的逻辑数据库。
Cloudera Repository:由cloudera manager 提供的软件分发库。
客户端/Clients:提供了一个与 Server 交互的接口。

Cloudera Manager包括server端和agent;server端主要作用是监控集群分发配置集群等,agent端主管集群各节点。
CDH是CM的安装包,本地或者云端,其中包括hadoop的生态系统需要的所有组件,通过Cloudera Manager统一管理和安装。
CDH除了可以通过cm安装也可以通过yum,tar,rpm安装。

环境准备

软件版本选择

类目 版本 下载地址
操作系统 CentOS 7.6 使用阿里云镜像下载
数据库 5.7.25-Mysql 二进制安装
JDK jdk-8u211-linux-x64.rpm Oracle 官网下载
Cloudera Manager Cloudera Manager 6.2.0 官方仓库
CDH CDH 6.2.0 使用parcels安装

节点准备

必须准备4个以上节点

名称 IP CM管理软件
master 10.186.63.57 Cloudera Manager Server&Agent ,Mysql
node01 10.186.63.112 Cloudera Manager Agent
node02 10.186.63.135 Cloudera Manager Agent
node03 10.186.63.136 Cloudera Manager Agent

内存要求大于8GB,master的磁盘要求多余50G。

系统初始化(所有节点)

初始化系统安装更新及常用软件

1
2
yum upadte -y
yum install wget ntpdate lrzsz vim -y

配置主机名和hosts解析(所有节点)

配置主机名

1
hostnamectl set-hostname master

其他节点命令相同
修改hosts解析,编辑文件/etc/hosts,增加如下内容。

1
2
3
4
10.186.63.57	master
10.186.63.112 node01
10.186.63.135 node02
10.186.63.136 node03

关闭防火墙(所有节点)

1
2
systemctl stop firewalld.service
systemctl disable firewalld.service

关闭SELinux(所有节点)

1
2
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0

时间同步(所有节点)

添加定时任务

1
echo "0 */1 * * * /usr/sbin/ntpdate 10.186.61.39" >> /var/spool/cron/root

10.186.61.39为内网中一台时间服务器,也可以使用其他地址。
修改时区

1
2
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

禁用透明大页面压缩(所有节点)

CDH配置需要

1
2
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

并将上面的两条命令写入开机自启动/etc/rc.local。

优化交换分区(所有节点)

1
2
echo "vm.swappiness = 10" >> /etc/sysctl.conf
sysctl -p

配置 JDK (所有节点)

1
rpm -ivh jdk-8u211-linux-x64.rpm

安装 CM 和 CDH

配置 Cloudera Manager 仓库(所有节点)

1
2
3
wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
或者
rpm --import https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera

使用仓库安装会比较慢,建议先把需要的rpm下载下来,进行离线安装或者建私有仓库,主要下面的三个软件包:
cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-daemons 是 server 和 agent 必须安装的。

安装 CM Server 和 Agent

建议离线安装,把rpm包下载到服务器上面,传到其他节点一份,再本地安装,速度会快很多。
master:

1
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

node0[1-3]:

1
yum install cloudera-manager-daemons cloudera-manager-agent

安装数据库(master)

数据库使用mysql数据库,具体安装步骤参考:
Mysql自动安装脚本
Mysql安装
注意:Mysql需要关闭GTID,否则在后面进行初始化步骤会出错!
以下为:官网推荐示例配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0

key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

为 Cloudera 各软件创建数据库

使用root登陆数据库,创建以下数据库和账号。

Service Database User
Cloudera Manager Server scm scm
Activity Monitor amon amon
Reports Manager rman rman
Hue hue hue
Hive Metastore Server metastore hive
Sentry Server sentry sentry
Cloudera Navigator Audit Server nav nav
Cloudera Navigator Metadata Server navms navms
Oozie oozie oozie

sql语句如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
create database scm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database rman DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database metastore DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database sentry DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database nav DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database navms DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

GRANT ALL ON scm.* TO 'scm'@'%' identified by 'francis';
GRANT ALL ON amon.* TO 'amon'@'%' identified by 'francis';
GRANT ALL ON rman.* TO 'rman'@'%' identified by 'francis';
GRANT ALL ON hue.* TO 'hue'@'%' identified by 'francis';
GRANT ALL ON metastore.* TO 'hive'@'%' identified by 'francis';
GRANT ALL ON sentry.* TO 'sentry'@'%' identified by 'francis';
GRANT ALL ON nav.* TO 'nav'@'%' identified by 'francis';
GRANT ALL ON navms.* TO 'navms'@'%' identified by 'francis';
GRANT ALL ON oozie.* TO 'oozie'@'%' identified by 'francis';

flush privileges;

安装 MySQL JDBC 驱动(所有节点)

1
2
3
4
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar -zxvf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar

注意:最后的jar包名称mysql-connector-java.jar中,不能包含版本号。

设置 Cloudera Manager 数据库

初始化数据库(master节点操作)

1
2
3
4
5
6
7
8
9
[root@master ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

Enter SCM password:
JAVA_HOME=/usr/java/jdk1.8.0_211
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing: /usr/java/jdk1.8.0_162/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
[ main] DbCommandExecutor INFO Successfully connected to database.
All done, your SCM database is configured correctly!

安装 CDH

配置CDH的软件包 parcels(master)
CM安装成功之后,接下来我们就可以通过CM安装CDH的方式构建企业大数据平台。所以首先需要把CDH的parcels包下载到CM主服务器上。
同样的,我们为了加速我们的安装,我们可以把需要下载的软件包提前下载下来,也可以创建CDH私有仓库。

1
2
3
[root@namenode01 ~]# cd /opt/cloudera/parcel-repo
wget https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
wget https://archive.cloudera.com/cdh6/6.2.0/parcels/manifest.json

在manifest.json文件中,找到对应版本的秘钥,复制到.sha文件中。

1
echo "2e650f1f1ea020a3efc98a231b85c2df1a50b030" > CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha

修改属主属组。

1
chown cloudera-scm.cloudera-scm /opt/cloudera/parcel-repo/*

启动 Cloudera Manager Server

1
[root@namenode01 ~]# systemctl start cloudera-scm-server

如果启动中有什么问题,可以查看日志。

1
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

在最后显示的日志中,有显示启动监听的端口。

1
2
Started ServerConnector@da518cb{SSL,[ssl, http/1.1]}{0.0.0.0:7183}
Started ServerConnector@a77165b{HTTP/1.1,[http/1.1]}{0.0.0.0:7180}

初始化 Cloudera Manager

启动 server 和 agent

1
2
systemctl start cloudera-scm-server
systemctl start cloudera-scm-agent

CDH中各个服务的端口,如下图:
Alt text
浏览器打开 http://10.186.63.57:7180 用户名和密码默认都是admin。
Alt text
Alt text
Alt text
Alt text
Alt text
Alt text
Alt text
Alt text
已安装过JDK,不用勾选,继续。
Alt text
Alt text
Alt text
Alt text
此处需要使用我们创建过的数据库。
Alt text
Alt text
Alt text
由于安装过程角色分配不合理,所以截图中有很多红色报警,属于内存不足。
Alt text
Alt text
至此,CDH集群安装完成。

本文标题:CDH集群安装

文章作者:Francis

原始链接:http://www.cnops.com/posts/ffd68ac0.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。