一、软件介绍
1、CDH 概览
CDH(Cloudera Distribution of Apache Hadoop) 是 Apache Hadoop 和相关项目中最完整、经过测试和流行的发行版。CDH 提供 Hadoop 的核心元素,可伸缩存储和可扩展分布式计算,以及基于 web 的用户界面和关键的企业功能。CDH 是 apache 授权的开放源码,是惟一提供统一批处理、交互式 SQL 和交互式搜索以及基于角色的访问控制的 Hadoop 解决方案。
- 灵活性:储存任何类型的数据,并使用各种不同的计算框架进行操作,包括批处理、交互式 SQL、*文本搜索、机器学习和统计计算。
- 集成:在一个完整的 Hadoop 平台上快速启动并运行,该平台能够与各种硬件和软件解决方案一起工作。
- 安全:处理和控制敏感数据。
- 可伸缩性:扩展应用程序的范围和规模,以满足您的需求。
- 高可用性:有信心地执行任务关键的业务任务。
- 兼容性:充分利用现有的资讯科技基础设施和投资。
关于更多 CDH 的介绍,请参见官方文档:
2、CM 概述
Cloudera Manager 是用于管理 CDH 集群的端到端应用程序。Cloudera Manager 为企业部署设定了标准,为 CDH 集群的每个部分提供粒度可见性和控制权,授权运营商提高性能、提高服务质量、增加遵从性和降低管理成本。使用 Cloudera Manager,您可以轻松地部署和集中操作完整的 CDH 堆栈和其他托管服务。应用程序使安装过程自动化,将部署时间从几周减少到几分钟; 为您提供集群范围内运行的主机和服务的实时视图; 提供一个单一的*控制台,用于跨集群执行配置更改; 并整合了各种报告和诊断工具,以帮助您优化性能和利用率。
术语
要有效地使用 Cloudera Manager,您应该首先理解其术语。这些术语之间的关系如下所示,其定义如下:
- deployment:Cloudera Manager 管理的所有集群的一个配置。
- dynamic resource pool:在 Cloudera Manager 中,命名的资源配置和用于在 YARN 应用程序或池中运行的 Impala 查询之间调度资源的策略。
- cluster:逻辑实体包含一组主机、安装在主机上的单个 CDH 版本以及运行在主机上的服务和角色实例。
- host:运行角色实例的物理或虚拟机器。
- rack:一组通常由同一开关服务的物理主机的物理实体。
- service:Linux 系统中的启动脚本。
- service instance:在集群上运行的服务的实例。例如: “ HDFS-1”和“yarn”。服务实例跨越多个角色实例。
- role:服务中的一类功能。例如,HDFS 服务具有以下角色: NameNode、 SecondaryNameNode、 DataNode 和 Balancer。
- role instance:在主机上运行的角色的实例。
- role group:一组角色实例的一组配置属性。
- host template:Cloudera Manager 中的一组角色组。将模板应用于宿主时,将创建每个角色组的角色实例并将其分配给该宿主。
- gateway:通常为特定群集服务提供客户端访问的角色类型。例如,HDFS、 Hive、 Kafka、 MapReduce、 Solr 和 Spark 各自都有网关角色,为客户机提供对各自服务的访问。
- parcel:包含已编译代码和元信息(如包描述、版本和依赖项)的二进制分发格式。
- static service pool:在 Cloudera Manager 中,集群资源(cpu、内存和 I/O 权重)跨一组服务的静态分区。
架构
如下图所示,Cloudera Manager 的核心是 Cloudera Manager Server。Server 托管管理控制台 Web 服务器和应用程序逻辑,并负责安装软件、配置、启动和停止服务,以及管理服务运行所在的集群。
Cloudera Manager Server 与其他几个组件一起工作:
- Agent:每台主机上都安装了 Agent,代理负责启动和停止进程、解压配置、触发安装和监视主机。
- Management Service:由一组角色组成的服务,这些角色执行各种监视、警报和报告功能。
- Database:存储配置和监视信息。通常,多个逻辑数据库跨一个或多个数据库服务器运行。例如,Cloudera Manager Server 和监视角色使用不同的逻辑数据库。
- Cloudera Repository:用于 Cloudera Manager 发布的软件库。
-
Clients:与服务器交互的接口。
- Admin Console:基于 web 的 UI,管理员使用它管理集群和 Cloudera Manager。
- API:用于开发人员创建自定义 Cloudera 管理器应用程序的 API。
软件分发管理
Cloudera Manager 的主要功能是安装和升级 CDH 和其他托管服务。Cloudera Manager 支持两种软件发布格式:package 和 parcel。
package 是一种二进制分发格式,其中包含已编译的代码和元信息,如包描述、版本和依赖关系。包管理系统评估这些元信息,以允许包搜索、升级到更新的版本,并确保包的所有依赖关系都得到满足。Cloudera Manager 为每个受支持的操作系统使用本地系统包管理器。
Parcel 是包含程序文件以及 Cloudera Manager 使用的附加元数据的二进制发布格式。
关于 Cloudera Manager 更多功能,请查看官方文档:
https://docs.cloudera.com/documentation/enterprise/latest/topics/cm_intro_primer.html
二、安装
1、环境准备
软件版本
类目 | 版本 | 下载地址 |
---|---|---|
操作系统 | CentOS Linux release 7.8.2003 (Core) | 阿里云镜像 |
数据库 | MYSQL 5.7 | 现有数据库 |
JDK | jdk-8u181-linux-x64.rpm | Oracle 官网下载 |
Cloudera Manager | Cloudera Manager 6.3.1 | 官方仓库 |
CDH | CDH 6.3.2 | parcels安装 |
节点准备
四台机器我是在腾讯云创建的,当然你也可以使用自己的虚拟机。
名称 | IP | CM管理软件 |
---|---|---|
namenode01.wzlinux.com | 172.17.16.5 | Cloudera Manager Server & Agent |
datanode01.wzlinux.com | 172.17.16.6 | Cloudera Manager Agent |
datanode02.wzlinux.com | 172.17.16.10 | Cloudera Manager Agent |
datanode03.wzlinux.com | 172.17.16.12 | Cloudera Manager Agent |
存储空间
因为 Cloudera Manager 会产生较多的监控数据和日志,需要给予系统盘充足的空间,存储的位置主要有以下:
-
Cloudera Manager Server:
/var/lib/cloudera-scm-server/
-
Service Monitor:
/var/lib/cloudera-service-monitor/
-
Host Monitor:
/var/lib/cloudera-host-monitor/
-
Event Server:
/var/lib/cloudera-scm-eventserver/
-
Reports Manager:
/var/lib/cloudera-scm-headlamp/
主机名
使用下面命令修改/etc/hostname
的主机名,重新连接一下机器就可以生效了。
sudo hostnamectl set-hostname namenode01.wzlinux.com
编辑 /etc/hosts
,增加如下:
172.17.16.5 namenode01.wzlinux.com namenode01
172.17.16.6 datanode01.wzlinux.com datanode01
172.17.16.10 datanode02.wzlinux.com datanode02
172.17.16.12 datanode03.wzlinux.com datanode03
关闭防火墙
sudo iptables-save > ~/firewall.rules
sudo systemctl disable firewalld
sudo systemctl stop firewalld
关闭 SELinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0
时间同步
我使用的云服务,时间基本已经很准了。
echo "$((RANDOM%60)) $((RANDOM%24)) * * * /usr/sbin/ntpdate time1.aliyun.com" >> /var/spool/cron/root
2、安装 CM
配置仓库
这里使用 Cloudera 来维护的仓库,当然你也可以创建本地仓库。我们使用 Cloudera Manager 6.3.1。
wget https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
rpm --import https://archive.cloudera.com/cm6/6.3.1/redhat7/yum/RPM-GPG-KEY-cloudera
安装 JDK
对于 JDK,您可以使用 Cloudera Manager 安装由 Cloudera 提供的 Oracle JDK 版本,也可以直接从 Oracle 安装不同的 Oracle JDK,或者直接安装 OpenJDK。
- JDK 必须是64位的。不要使用32位 JDK。
- 已安装的 JDK 必须是支持的版本,如 Java 需求文档所述。
- 必须在每个集群主机上安装相同版本的 JDK。
- JDK 必须安装在
/usr/java/JDK-version
。
如果使用 Cloudera Manager 提供的 JDK,可以直接执行下面的命令。
sudo yum install oracle-j2sdk1.8
因为在线安装会比较慢,在这里,我们使用 Oracle 维护的 JDK,可以去 Oracle 官网进行下载。
rpm -ivh jdk-8u181-linux-x64.rpm
安装 CM
使用仓库安装会比较慢,建议先把需要的 rpm下载下来,进行离线安装或者建私有仓库,主要下面的三个软件包:
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons
是 server
和 agent
必须安装的。
建议离线安装,把 rpm 包下载到服务器上面,传到其他节点一份,再本地安装,速度会快很多。
- namenode01:
yum localinstall cloudera-manager-*.rpm -y
- datanode0[1-3]:
yum localinstall cloudera-manager-daemons-*.rpm cloudera-manager-agent-*.rpm -y
安装数据库
Cloudera Manager 使用各种数据库和数据存储来存储关于 Cloudera Manager 配置的信息,以及诸如系统健康状况或任务进度等信息。
Cloudera 建议在不同的主机上安装数据库,而不是在服务上。将数据库与服务分离有助于将潜在影响与这两者中的故障或资源争用隔离开来。它还可以简化具有专用数据库管理员的组织的管理。
您可以使用您自己的 PostgreSQL、 MariaDB、 MySQL 或 Oracle 数据库来访问 Cloudera Manager Server 和其他使用数据库的服务。
以下组件都需要数据库: Cloudera Manager Server,Oozie Server,Sqoop Server,Activity Monitor,Reports Manager,Hive metabstore Server,Hue Server,Sentry Server,Cloudera Navigator Audit Server,and Cloudera Navigator Metadata Server。
我这里使用已经创建好的数据库 MySQL 5.7,有关数据库的安装,可以参加官方文档:
https://docs.cloudera.com/documentation/enterprise/latest/topics/cm_ig_mysql.html#cmig_topic_5_5
安装 MySQL JDBC Driver
我们需要为主机安装 MySQL JDBC Driver,Cloudera 建议将所有需要数据库的角色合并到有限的主机上,并在这些主机上安装驱动程序。建议在相同的主机上查找所有这些角色,但不是必需的。确保在每个运行访问数据库角色的主机上安装 JDBC 驱动程序。为了简便,我们再所有节点上面安装 MySQL JDBC Driver。
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
tar xf mysql-connector-java-5.1.46.tar.gz
mkdir -p /usr/share/java/
cd mysql-connector-java-5.1.46
cp mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar
为 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 |
使用下面的模板语句创建各个数据库。
CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON <database>.* TO '<user>'@'%' IDENTIFIED BY '<password>';
我写下我这里的建库语句,仅供参考:
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'wzlinux';
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'wzlinux';
设置 CM 数据库
Cloudera Manager Server 包含一个脚本,可以为自己创建和配置数据库。该脚本可以:
- 创建 Cloudera Manager Server 数据库配置文件。
- (MariaDB、 MySQL 和 PostgreSQL)创建并配置一个数据库,供 Cloudera Manager Server 使用。
- (MariaDB、 MySQL 和 PostgreSQL)为 Cloudera Manager Server 创建并配置一个用户帐户。
数据库的地址为db01.wzlinux.com
,如果是本机可以取消。Cloudera Manager Server 主机地址为namenode01.wzlinux.com
。
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h db01.wzlinux.com --scm-host namenode01.wzlinux.com scm scm
输入数据库密码就创建好了。
Enter SCM password:
JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
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_181-amd64/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!
启动 Cloudera Manager Server
设置好 Cloudera Manager 数据库后,启动 Cloudera Manager Server,并登录到 Cloudera Manager 管理控制台。
sudo systemctl start cloudera-scm-server
如果启动中有什么问题,可以查看日志。
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
当您看到此日志条目时,Cloudera Manager 管理控制台就绪。
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
3、安装 CDH
制作 CDH 本地库
CM 安装成功之后,接下来我们就可以通过 CM 安装 CDH 的方式构建企业大数据平台。所以首先需要把 CDH 的 parcels 包下载到 CM 主服务器上。
同样为了加速我们的安装,我们可以把需要下载的软件包提前下载下来,也可以创建CDH私有仓库。
[root@namenode01 ~]# cd /opt/cloudera/parcel-repo
wget https://archive.cloudera.com/cdh6/6.3.2/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
为我们下载的文件创建一个 SHA1 hash 文件。
sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel | awk '{ print $1 }' > CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
修改属主属组。
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
Web 安装
打开浏览器,输入 namenode 的公网 IP:7180
,用户名和密码默认都是admin
。
欢迎页面提供了 Cloudera Manager 的简要概述,以及正在安装的版本的发行说明的链接。单击“继续”继续安装。
接受许可证页面提供了最终用户许可证条款和条件。阅读许可协议并单击标记为 Yes 的复选框,如果您接受许可协议的条款和条件,我将接受最终用户许可条款和条件。单击“继续”继续。
在 Select Edition 页面上,您可以选择要安装的 Cloudera Manager 版本,还可以选择安装许可证:
4、创建集群
Add Cluster-Installation 向导的欢迎页面提供了安装和配置过程的简要概述,以及到相关文档的一些链接。单击“继续”继续安装。
Cluster Basics 页面允许您指定 Cluster Name 并选择 Cluster Type:
- Regular Cluster: Regular Cluster 包含存储节点、计算节点和其他服务,如元数据和安全性并置在单个集群中。
- Compute Cluster: 计算集群只包含计算节点。若要连接到现有存储、元数据或安全服务,必须首先在基本群集上选择或创建数据上下文。
选择运行 CDH 和其他托管服务的主机。
Select Repository 页面允许您为 Cloudera Manager Agent 和 CDH 以及其他软件指定存储库。
CDH parcel 之前我们已经在 CM Server 节点配置好了,版本也一样。
不进行勾选,选择我们自己安装的 JDK。
提供 SSH 登录凭据。
安装 Agents,因为之前我们已经通过 yum 本地安装包安装了,所以这里速度会很快。
安装选定的 Parcel,之前我们已经下载好,并配置好放在的 CM Server 节点的/opt/cloudera/parcel-repo
。
Inspect 集群页面提供了检查网络性能的工具,以及用于搜索常见配置问题的 Host Inspector。
三、集群设置
Select Services 页允许您选择要安装和配置的服务。确保您拥有要使用的服务的适当的许可证密钥。
Assign Roles 页建议为集群中的主机分配角色。您可以单击角色的主机名来选择不同的主机。还可以单击 View By Host 按钮查看分配给主机的所有角色。下面是官方的一个推荐。
在数据库设置页上,选择之前创建的数据库主机、名称、用户名和密码。对于支持它的服务,可以使用 JDBC URL 覆盖添加细粒度的自定义。
Review Changes 页面列出了几个配置参数的默认设置和建议设置,包括数据目录。
Command Details 页面列出了 First Run 命令的详细信息。您可以展开正在运行的命令,以查看任何步骤的详细信息,包括日志文件和命令输出。可以通过选择“显示所有步骤”、“仅显示失败的步骤”或“仅显示正在运行的步骤”筛选视图。
Summary 页报告安装向导的成功或失败。单击“完成”以完成向导。安装完成。
Cloudera 建议您通过单击主屏幕右上角的登录用户名并单击“更改密码” ,尽快更改默认密码。
四、管理集群
Cloudera Manager 是用于管理 CDH 集群的端到端应用程序。Cloudera Manager 提供 CDH 集群每个部分的细粒度可见性和控制权,授权运营商提高性能、提高服务质量、增强遵从性和降低管理成本。使用 Cloudera Manager,您可以轻松地部署和集中操作完整的 CDH 堆栈和其他托管服务。应用程序自动化了安装过程,将部署时间从几周减少到几分钟; 提供了集群范围内的主机和服务运行的实时视图; 提供了一个单一的*控制台,用于跨集群执行配置更改; 并整合了全套报告和诊断工具,以帮助优化性能和利用率。Cloudera Manager 还提供了一个可用于自动化集群操作的 API。
HDFS
HIVE
SPARK