1
Cloudera Manager
产品介绍
2016 年 3 月 3 日
1. 介绍 ...............................................................................................................................................................1
2. 基本功能 ........................................................................................................................................................1
2.1. 管理功能....................................................................................................................................................................2
2.1.1. 集群安装 ..........................................................................................................................................................2
2.1.2. 集群配置 ..........................................................................................................................................................4
2.1.3. 权限管理 ........................................................................................................................................................12
2.2. 监控功能..................................................................................................................................................................13
2.2.1. 集群及服务实时监控 ......................................................................................................................................14
2.2.2. 节点级别监控 .................................................................................................................................................17
2.2.3. 自定义报警监控..............................................................................................................................................17
2.2.4. 自定义图表.....................................................................................................................................................18
2.2.5. 页面自定义.....................................................................................................................................................18
2.2.6. 高可靠监视及报警 ..........................................................................................................................................19
2.2.7. 日志自动清理 .................................................................................................................................................20
2.3. 诊断功能..................................................................................................................................................................21
2.3.1. 周期性服务诊断..............................................................................................................................................21
2.3.2. 主动集群诊断 .................................................................................................................................................21
2.3.3. 操作提示 ........................................................................................................................................................22
2.3.4. 日志收集及检索..............................................................................................................................................22
2.3.5. 系统性能使用报告 ..........................................................................................................................................23
2.4. 集成功能..................................................................................................................................................................23
2.4.1. 安全配置 ........................................................................................................................................................23
2.4.2.Cloudera Manager API ...................................................................................................................................24
2.4.3.SNMP 集成 .....................................................................................................................................................27
3. 高级功能 ......................................................................................................................................................27
3.1. 软件滚动升级...........................................................................................................................................................27
3.2. 参数版本控制...........................................................................................................................................................31
3.2.1. 配置历史查看 .................................................................................................................................................31
3.2.2. 配置版本回滚 .................................................................................................................................................32
3.3. 备份及容灾系统 BDR...............................................................................................................................................32
3.3.1.HDFS 备份......................................................................................................................................................34
3.4. 数据审计..................................................................................................................................................................38
3.5. 安全集成向导...........................................................................................................................................................39
3.5.1.Kerberos 集成.................................................................................................................................................39
3.5.2. 外部安全认证集成 ..........................................................................................................................................41
4. 重要管理任务介绍........................................................................................................................................42
4.1. 多租户资源管理能力................................................................................................................................................42
4.1.1. 资源分配运维监控工具...................................................................................................................................42
4.1.2. 动态资源隔离能力(基于 YARN) .................................................................................................................43
4.1.3. 静态资源隔离能力(基于 Linux 容器技术) ...................................................................................................43
5. 监控指标 ......................................................................................................................................................45
5.1. 部分样例状态指标 ...................................................................................................................................................46
5.1.1.HDFS 指标......................................................................................................................................................46
5.1.2.MapReduce 指标 ............................................................................................................................................46
5.1.3.HBase 指标.....................................................................................................................................................47
5.2. 部分样例报警指标 ...................................................................................................................................................47
5.2.1.Hive.................................................................................................................................................................47
5.2.2.HDFS..............................................................................................................................................................48
5.2.3.MapReduce ....................................................................................................................................................48
5.2.4.HBase.............................................................................................................................................................49
cloudera.com
1
产品介绍
1. 介绍
Cloudera Manager 是 CDH 市场领先的管理平台。作为业界第一的端到端 Apache Hadoop 的管理应用, Cloudera
Manager 对 CDH 的每个部件都提供了细粒度的可视化和控制,从而设立了企业部署的标准。通过 Cloudera Manger,运
维人员得以提高集群的性能,提升服务质量,提高合规性并降低管理成本。
Cloudera Manager 设计的目的是为了使得对于企业数据中心的管
理变得简单和直观。通过 Cloudera Manager,可以方便地部署,
并且集中式的操作完整的大数据软件栈。该应用软件会自动化安
装过程,从而减少了部署集群的时间。通过 Cloudera Manager
可以提供一个集群范围内的节点实时运行状态视图。同时,还提
供了一个中央控制台,可以用于配置集群。不仅如此, Cloudera
Manager 通过包含一系列的报道和诊断工具,可以帮助您优化集
群性能,并且提高利用率。 Cloudera Manager 能够为您提供以下
的功能 :
● 自动化 Hadoop 安装过程,大幅缩短部署时间;
● 提供实时的集群概况,例如节点、服务的运行状况;
● 提供了集中的中央控制台对集群的配置进行更改。
● 包含全面的报告和诊断工具,帮助优化性能和利用率。
Cloudera Manager 的架构如上图所示,主要由如下几部分组成:
● 服务端 /Server : Cloudera Manager 的核心。主要用于管理 web server 和应用逻辑。它用于安装软件,配置,开始
和停止服务,以及管理服务运行的集群。
● 代理 /agent :安装在每台主机上。它负责启动和停止的进程,部署配置,触发安装和监控主机。
● 数据库 /Database :存储配置和监控信息。通常可以在一个或多个数据库服务器上运行的多个逻辑数据库。例如,所
述的 Cloudera 管理器服务和监视后台程序使用不同的逻辑数据库。
● Cloudera Repository :用于软件分发由 Cloudera 软件仓库。
● 客户端 /Clients :提供了一个与 Server 交互的接口 :
■ 管理平台 /Admin Console :提供一个管理员管理集群和 Cloudera Manage 的基于网页的交互界面。
■ API :为开发者提供了创造自定义 Cloudera Manager 程序的 API。
2. 基本功能
Cloudera Manager 作为 Hadoop 大数据平台的管理工具,旨在帮助用户更容易的使用 Hadoop。其基本功能主要可以分为
四大模块:管理功能、监控功能、诊断功能和集成功能。
此部分内容在免费版本 Cloudera Express 产品以及商业版本中可用。
Cloudera
Repository
Server
HTTPS
Agent 1
Agent 2
Agent 3
Agent 4
DB
Clients
Admin
Console
API
2
2.1. 管理功能
由于 Hadoop 是一个分布式的系统,由多个服务器组成一个集群,相对于传统的单节点运行的应用系统,由于节点数的增多。
Hadoop 的管理更加复杂。 CM 提供的管理功能如下:
2.1.1. 集群安装
2.1.1.1. 自动化安装
Cloudera Manager(以下简称 CM)提供了强大的 Hadoop 集群部署能力,能够批量的自动化部署节点。安装一个
Hadoop 集群大体只需要 3 个步骤。
步骤一:添加需要安装的节点:
步骤二:安装需要的组件
3
产品介绍
步骤三:分配角色
2.1.1.2. 批量部署
Hadoop 本身是一个分布式的系统,因此在安装时,需要对每一个节点进行组件的安装,并且由于是开软软件,其安装过
程相对比较复杂, Hadoop 每个组件都需要做很多的配置工作,如果手动去完成这个工作,工作量将会非常可观。
针对这种情况, CDH 提供了 Cloudera Manager 来自动化安装部署 Hadoop。大大缩短了 Hadoop 的安装时间,同时也简
化了安装 Hadoop 的过程。
CDH 的安装针对不同的客户环境,提供了多种不同的安装方式:
1. 如果用户的集群能够访问到 Cloudera 的网站,直接可以进行完全自动化的安装。
2. 如果用户的集群不能够访问公网,则只需要在集群内部建立一个软件仓库,然后再进行自动化的集群部署
其中上述提到的自动化安装的过 程如下 :
1. 安装环境准备,下载 Cloudera Manager 以及 CDH 的安装文件,安装 JDK, yum 等基本软件。
2. 挑选一台节点,安装 Cloudera Manager,用户只需要启动安装脚本即可,通常情况下 2 分钟就能够完成。
3. Cloudera Manger 是一个 Web 应用,提供了基于浏览器的界面,用户可以通过浏览器可视化的进行 CDH 的安装部署。
4. 通过 Cloudera Manager 界面,添加其他需要安装的节点,选择要安装的 Hadoop 组件,以及每个节点承担的角色,
选择安装, Cloudera Manager 会自动的将需要安装的软件分发到对应的节点,并完成安装。
5. 同时 Cloudera Manager 会提供一个默认的 CDH 配置,并且提供了配置的管理界面,供用户在后续进行定制化的配置。
6. 在安装过程中,如果任意一台机器安装出现问题,Cloudera Manager 都会进行汇报,并提供日志,供用户分析,解决问题。
7. 当所有节点的软件都安装完成之后, Cloudera Manager 会启动所有的服务。
4
从上述的安装过程可以看出, CDH 的安装主要体现两个特点,批量化以及自动化。只需要在其中一个节点完成,其他节点
都可以进行批量化的自动安装。
2.1.2. 集群配置
2.1.2.1. 可视化参数配置界面
Hadoop 包含许多的组件,不同的组件都包含各种各样的配置,并且分布于不同的主机之上。 CM 针对这种情况提供了界面
化的参数配置功能,并且能够自动的部署到每个节点。
2.1.2.2. 模版化配置
Cloudera Manager 提供了参数配置组的概念,配置组主要是应对在实际情况中,可能存在同一个集群,节点之间存在不同
的硬件配置,或者相同配置承担不同作用的情况,这种情况下不同的节点可能需要进行不同的参数配置。
例如下图所示, RegionServer Default Group 中的所有节点的配置都是相同的。
5
产品介绍
Cloudera Manager 可以自动监测硬件和角色的配置从而智能的创建不同的配置组。同时,用户也可以手工创建配置组,并
选择配置继承至现有的配置组,具体步骤如下 :
步骤一:新建配置组并命名,如下了一个 RegionServer 类型的配置组,叫做 RegionServer Test Group,其缺省配置继承
至 RegionServer Default Group:
步骤二:为配置组选择服务器:
6
步骤三:将服务器移动至新建配置组:
步骤四:确认配置页中新建的配置组生效,且包含新添加的服务器:
步骤五:对配置组的配置进行修改。所有修改会在并且只在配置组内服务器生效:
7
产品介绍
2.1.2.3. 过期设置报警
2.1.2.4. 智能参数验证及优化
当用户在配置过程中,部分参数配置值有问题时, Cloudera Manager 会产生错误提示,以帮助用户更合理的修改参数。
配置过期需要重启
客户端配置过期
8
2.1.2.5. 高可靠配置
Cloudera Manager 对关键的组件使用 HA 部署方案,避免单点失效的发生,同时 CDH 对于组件的异常错误提供了自动恢
复的处理,最大限度的保证服务的可靠性。
2.1.2.5.1.HDFS 高可靠
在标准配置中, NameNode 是 HDFS 群集中的单点故障 (SPOF)。每个群集都具有一个 NameNode,如果机器或进程变为
不可用,群集整体将变为不可用,直到NameNode在新主机上重新启动或上线。Secondary NameNode不提供故障转移功能。
Cloudera Manager 5 和 CDH 5 支持基于 Quorum 的存储作为唯一的 HA 实施。为了让“备用 ” NameNode 的状态
与“活动” NameNode 在此实施中保持同步,两个节点均与一组名为 JournalNode 的独立后台程序进行通信。由“活
动” NameNode 执行任何 Namespace 修改时,它会持续记录其中大部分 JournalNode 的修改记录。“备用” NameNode
能够从 JournalNodes 读取编辑操作,并不断监视它们以了解编辑日志发生的更改。当备用节点发现编辑操作时,它会将
这些编辑应用于自己的 Namespace。在发生故障转移时,备用节点将确保首先从 JournalNodes 读取所有编辑操作,然后
才会将自己升级为 " 活动 " 状态。这确保了在发生故障转移之前完全同步 Namespace 状态。
为了提供快速故障转移,备用 NameNode 还需要拥有有关群集中的块位置的最新信息。为实现这一目的, DataNode 配置
了这两个 NameNode 的位置,它们会将块位置信息和检测信号发送给这两个 NameNode。
一次只能有其中一个 NameNode 处于活动状态,这一点对于 HA 群集的正常运行来说至关重要。否则, Namespace 状态
会在两者之间快速出现分歧,从而导致数据丢失风险或其他不正确的结果。为了确保此属性并防止所谓的“大脑分裂状况”,
JournalNode 一次只允许一个 NameNode 成为写入程序。在故障转移过程中,要进入“活动”状态的 NameNode 将接管
JournalNode 的写入角色,这会有效地阻止其他 NameNode 继续保持“活动”状态,使得新的“活动” NameNode 可以
安全地继续执行故障转移。
NameNode 的高可靠可以通过 Cloudera Manager 的 Web 管理界面,根据向导提升启用 HA 配置,主要配置流程如下 :
第 1 步 :
9
产品介绍
第 2 步,输入 nameservice 名字 :
第 3 步,选择主备 NameNode, Journal Node:
第 4 步,选择存放元数据的目录 :
10
第 5 步 , HA 配置启用过程中 :
HDFS HA 配置成功 :
高可靠可以通过 Web 界面切换 :
11
产品介绍
2.1.2.5.2.YARN 高可靠
YARN ResourceManager (RM) 负责跟踪群集中的资源并安排应用程序(例如, MapReduce 作业)。在 CDH 5 之前, RM
是 YARN 群集中的单点故障。 RM 高可用性 (HA) 功能以活动 / 待机 RM 对形式添加冗余,以删除此单点故障。此外,在从
待机 RM 到活动 RM 进行故障转移时,应用程序可以从其上次检查点状态恢复 ;例如,在 MapReduce 作业中完成的 map
任务不在后续的尝试中重新运行。这样可以在不对运行中的应用程序产生任何重要性能影响的情况下,处理以下事件 :
计划外事件,如计算机崩溃。
计划内维护事件,如在运行 ResourceManager 的计算机上进行的软件或硬件升级。
RM HA 要求 Zookeeper 和 HDFS 服务处于运行状态。 RM HA 通过活动 - 待机 RM 对的方式实施。启动时,每个 RM 处于
待机状态 :启动过程,但未加载状态。转换到活动状态时, RM 会从指定的状态存储加载内部状态,并启动所有内部服务。
管理员(通过的 CLI)或通过集成的故障转移控制器(启用自动故障转移时)可促进转换为活动状态。
ResourceManager 的高可靠可以通过Cloudera Manager的Web管理界面,根据向导提升启用HA配置,主要配置流程如下:
第 1 步 , 启用 Resource Manager HA :
第 2 步,选择主备 Resource Manager 节点 :
12
第 3 步, Resource Manager HA 启用过程中 :
Resource Manager HA 配置成功 :
2.1.3. 权限管理
对系统管理员、数据库管理员及其他管理员必须૿予不同级别的管理权限。下图为只读用户访问 Cloudera Manager 的界面,
所有服务对应的启停等操作选项都不可用。
13
产品介绍
2.2. 监控功能
Cloudera Manager 提供了许多监控功能,用于监测群集(主机,服务守护进程)健康、组件性能以及集群中运行的作业的
性能和资源需求。具体包括以下监控功能 :
● 服务监控
查看服务和角色实例级别健康检查的结果,并通过图表显示,有助于诊断问题。如果健康检查发现某个组件的状态需
要特别关注甚至已经出现问题,系统会对管理员应该采取的行动提出建议。同时,系统管理员还可以查看上的服务或
角色上操作的执行历史,也可以查看配置更改的审计日志。
● 主机监控
监控群集内所有主机的有关信息,包括 :哪些主机上线或下线,主机上目前消耗的内存,主机上运行的角色实例分配,
不同的机架上的主机分配等等。汇总视图中显示了所有主机群集,并且可以进一步查看单个主机丰富的细节,包括显
示主机关键指标的直观图表。
● 行为监控
Cloudera Manager 提供了列表以及图表的方式来查看集群上进行的活动,不仅显示当前正在执行的任务行为,还可
以通过仪表盘查看历史活动。同时提供了各个作业所使用资源的许多统计,系统管理员可以通过比较相似任务的不同
性能数据以及比较查看同一任务中不同执行的性能数据来诊断性能问题或行为问题。
● 事件活动
监控界面可以查看事件,并使它们用于报警和搜索,使得系统管理员可以深入了解发生集群范围内所有相关事件的历
史记录。系统管理员可以通过时间范围、服务、主机、关键字等字段信息过滤事件。
● 报警
通过配置 Cloudera Manager 可以对指定的事件产生警报。系通过管理员可以针对关键事件配置其报警阈值、启用或
禁用报警等,并通过电子邮件或者通过 SNMP 的事件得到制定的警报通知。系统也可以暂时抑制报警事件,此限制
可以基于个人角色、服务、主机、甚至整个集群配置,使得进行系统维护 / 故障排除时不会产生过多的警报流量。
● 审计事件
Cloudera Manager 记录了有关服务、角色和主机的生命周期的事件,如创建角色或服务、修改角色或服务配置、退
役主机和运行 Cloudera Manager 管理服务命令等等。系统管理员可以通过管理员终端查看,界面提供了按时间范围、
服务、主机、关键字等字段信息来过滤审计事件条目。
● 可视化的时间序列数据图表
系统管理员可以通过搜索度量数据,系统将根据指定规则创建数据,组(方面)数据的图表,并把这些图表保存到用
户自定义的仪表板。
● 日志
介绍如何访问日志中的各种考虑到你正在查看当前上下文的方式。例如,监控服务时,你可以轻松地点击一个链接,
查看相关的特定服务的日志条目,通过相同的用户界面。当查看关于用户的活动信息,您可以方便地查看了作业运行
时所用的作业的主机上发生的相关日志条目。
● 报告
Cloudera Manager 可以将收集到的历史监控数据统计生成报表,比如按目录查看集群作业活动的用户、按组或作业
ID 查看有关用户的磁盘利用率,用户组的历史信息等。这些报告可以根据选定的时间段(每小时,每天,每周,等等)
汇总数据,并可以导出为 XLS 或 CSV 文件。同时系统管理员还可以管理包括搜索和配额等 HDFS 目录设置。
14
2.2.1. 集群及服务实时监控
如上图所示, CM 会实时的对集群的各项服务进行监控,一旦服务出现了异常,将会产生告警。同时,对集群的各项性能
数据进行监控,例如 CPU,网络等,一方面能够监控集群的性能状态,一方面能够帮助性能调优。
Cloudera Manager 能监控集群中部署的所有服务,以下仅以 HDFS 以及 Yarn 为例说明。
2.2.1.1.HDFS 服务监控
以 HDFS 服务为例, HDFS 服务页面的“状态”页面中显示了服务状态的汇总信息,包括 HDFS 综述, HDFS 文件系统块
总数、总大小,文件总数、剩余量、损坏块,需复制快、 JVM 线程状态等。页面中还包括了各种快捷链接。
15
产品介绍
服务页面中的“运行状况测试”面板限制了所有的服务进程状态,如下 :
服务页面中还显示列损坏块、容量、正常服务节点数目等关键的信息,如下图。(由于目前 HDFS 中不存在损坏快,如果
存在的话,会在下图中的页面显示。)
16
点击进入 DataNode 节点详细信息,可查看每个 DataNode 的关键信息,包括服务状态、容量、已使用空间、 Block 数目、
HDFS 版本等。
2.2.1.2. YARN 服务
在 YARN 服务页面也能查看所有 YARN 节点的状态,如下 :
17
产品介绍
点击相应的 NodeManager 可以查看对应节点的详细状态和信息,如下 :
2.2.2. 节点级别监控
CM 能够支持节点级别的详细信息查看,包括该节点的硬件信息 :网络,硬盘等。软件信息 :运行的各项服务的状态,并
对这些状态进行实时监控。
2.2.3. 自定义报警监控
Cloudera Manager 对于每个组件,都提供了监控的参数配置,例如可以设置达到多少阈值的时候,产生 warning 告警,达
到多少阈值的时候产生 Critical 告警。
18
2.2.4. 自定义图表
除了 CM 默认提供的性能图表以外,还允许用户自定义图表,使得用户能够查看自己希望的性能图表。 CM 提供了一套类
似的 SQL 的语言,用户只需要使用这个语言,简单的编写类似 SQL 的语句,就能够生成自己想要的图表。
2.2.5. 页面自定义
CM 的主页能够允许用户自定义主界面的风格,可以通过简单的拖拽就能够调整主界面上组件的位置,也能够自定义添加
需要的组件。
19
产品介绍
2.2.6. 高可靠监视及报警
Cloudera 支持主备部署,在主节点宕机时将从节点自动切换为主节点,并提供可视化界面监控及报警。
如下部署为例,首先注意当前节点 node2 为活跃节点。
在 node2 断电后,自动发生 HA 切换,从界面可以看到 node1 变成活动节点。
20
界面上显示 node2 的详细告警信息如下 :
2.2.7. 日志自动清理
log4j 是 Apache 基金会的一个优秀的开源日志框架,被广泛地使用于 Hadoop 的各个组件。通过设置 log4j.properties 可
以控制 log4j 日志行为,如 MaxFileSize 用于指定日志大小, MaxBackupIndex 用于指定保留日志文件个数。
通常会设置基于日期或者基于日志文件使用空间限额来设置自动日志清除。
1. 按日期自动清除日志
通 常 通 过 设 置 DatePattern='.'yyyy-MM-dd'.txt' 的 方 式 将 一 天 的 日 志 保 存 为 一 个 文 件。 可 以 通 过 设 置 的
MaxBackupIndex 可以控制保留的文件个数 N,从而让系统可以根据日期保留最近 N 天的数据。
在 Cloudera Manager 中可以将相关 log4j 设置添加如服务的高级配置代码段,具体设置如下
2. 按空间限额自动清除日志
另外可以通过设置 Log4j 文件最大大小 MaxFileSize 并配合 MaxBackupIndex 来实现基于空间限额的日志自动清理。如
21
产品介绍
设置 MaxFileSize=500MB 和 MaxBackupIndex=10 可以保证日志使用空间小于 500MB*10=5GB,并自动做日志清除。
在 Cloudera Manager 中设置如下
2.3. 诊断功能
诊断功能主要是指能够帮助用户根据收集的数据查看潜在的或者存在的风险与问题。
2.3.1. 周期性服务诊断
CM 会对集群中运行的服务进行周期性的运行状况测试。以检测这些服务的状态是否正常。如果有异常情况会进行告警,
有利于更早的让客户感知集群服务存在的问题。
2.3.2. 主动集群诊断
CM 在 Hadoop 集群运行期间,会记录集群中发生的事件,例如集群服务的启停,用户的操作,性能数据等等。 CM 会将
这些数据都记录到一个文件中。 Cloudera 专门提供了一个集群,能够对这些数据进行分析,查找集群中的潜在风险,以及
问题。用户可以选择定期的发送诊断数据给 Cloudera, Cloudera 会对这些数据进行分析并及时反馈集群中存在的问题。
22
2.3.3. 操作提示
当集群中出现异常状态时, Cloudera Manager 会进行操作提示,例如下图中, hive server 异常退出, CM 提示“该角色的
进程已退出,预期状态为已启动”。并且, CM 会进行操作提示,以及建议,包括针对这种情况,可以采取的操作,如何定
位问题的原因等等。
2.3.4. 日志收集及检索
Hadoop 集群的每个组件在运行过程中都会存储日志,并且散落在每个节点的不同目录,对于一个大规模的集群,日志的
查看是非常麻烦的,需要一个个节点去进行查看。 CM 针对这种情况,提供了日志的收集功能,能够通过统一的界面,查
看集群中每台机器,各项服务的日志,并且能够根据日志级别等不同的条件进行检索。
23
产品介绍
2.3.5. 系统性能使用报告
Hadoop 集群的性能调试尤为重要,因此能够方便精确的监控集群额性能尤为重要。 CM 能够生产系统性能使用报告,包括
集群的 CPU 使用率,单节点的 CPU 使用率,单个进程的 CPU 使用率等等各项性能数据。
2.4. 集成功能
2.4.1. 安全配置
通常在一个企业内部,都会对验证系统作集中的部署,例如使用 AD, LDAP 等验证服务作为集中式的验证服务器,提供对
所有业务系统的验证工作。为了方便 Hadoop大数据平台与原有验证系统的集成,CM提供了丰富的集成功能,只需要在界面,
进行简单的配置,即可完成。
2.4.1.1. Sentry 配置
在 Cluster 的服务页面中通过添加服务可以安装部署 Sentry 组件,并在 HDFS 的配置页面中可以开启 Sentry
24
HUE 提供了基于 Sentry 角色的可视化૿权界面,支持的功能包括 :
● 批量修改角色和权限
● 可视化及修改基于数据库树的角色和权限
● 支持 WITH GRANT OPTION
● 模拟用户可以看到的数据库和表
下面是操作截图示例 :
2.4.2.Cloudera Manager API
Cloudera 产品具有开放的特性,这种开放性的其中一个体现就是 CM 提供了丰富的 API,供客户调用,基本上所有在界面
上提供的功能,通过 API 都可以完成同样的工作。 Cloudera Manager API 支持的功能包括配置和服务生命周期管理、服
务健康信息和指标,并允许配置 Cloudera Manager 本身。 API 复用 Cloudera Manger 管理控制台( Cloudera Manager
Admin Console)相同的主机和端口,无需额外的操作流程或参数配置。 API 支持 HTTP 基本身份验证( HTTP Basic
Authentication),接受与 Cloudera Manger 管理控制台相同的用户和凭据。并且这些 API 都是标准的 REST API,使用
HTTP 标准的 CRUD 所有的请求和响应都可以用 JSON( JavaScript Object Notation)来表示,基本上所有的业务系统都
应该支持,通过这些 API,能够方便的将 CM,集成到企业原有的集中管理系统。
25
产品介绍
下面是一些可以通过 Cloudera Manager API 做的操作 :
● 通过编程部署整个 Hadoop 集群。 Cloudera Manger 支持 HDFS、 MapReduce、 Yarn、 Zookeeper、 HBase、 Hive、
Oozie、 Hue、 Flume、 Impala、 Solr、 Sqoop、 Spark 和 Accumulo 等 ;
● 配置各种 Hadoop 服务并验证 ;
● 开展服务和角色的管理行为,如启动、停止、重新启动、故障转移等,同时提供了更先进的工作流程,如设立高可用
性和退役 ;
● 通过具有智能化服务的健康检查和指标来监控服务和主机 ;
● 监控用户的工作和其他集群活动 ;
● 检索基于时间序列的度量数据 ;
● 搜索 Hadoop 系统内事件 ;
● 管理 Cloudera Manager 自身 ;
● 将 Hadoop 集群的整个部署描述下载为一个 JSON 文件 ;
● 等等
此外,基于企业版本产品,,该 API 还允许一些高级功能 :
● 执行滚动重启和滚动升级 ;
● 审计用户在 Hadoop 上的活动和访问 ;
● 为 HDFS 和 Hive 执行备份和跨数据中心复制 ;
● 检索每个用户的 HDFS 使用情况报告和每个用户的 MapReduce 的资源使用情况报告。
例如,下面的 HTTP 请求示例可以得到当前所有集群的基本信息 :
2.4.2.1. Cloudera Manager 客户端实现
用户可以通过 Java 或 Python 轻松地构建一个 Cloudera 的管理客户端应用,或者直接使用 HTTP 协议发送 Rest 风格请求。
Cloudera在 github上开源了 Cloudera Manger的客户端Rest API项目,包含所有源代码以及例子,并采用Apache协议૿权。
26
这些客户端的代码使用 Cloudera 的管理器进行各种交互式管理,比如 :
● 管理多个集群
● 启动和停止全部或单个服务或角色
● 升级群集上运行的服务
● 查系统中的任何活动资源使用的时间序列数据对
● 读取系统中的所有进程日志以及输出和错误
● 编程配置各个部署的参数
● 收集诊断数据的调试问题,以帮助调试问题
● 运行分布式命令来管理自动故障转移( fail over)、主机退役等
● 查看所偶遇发生在系统中的事件和警报
● 从系统中添加和删除用户
比如,如下的示例演示了在系统显示终端打印出集群、服务以及角色资源 :
请参考 CM 客户端 API 开源项目(链接,链接)。
27
产品介绍
2.4.3.SNMP 集成
SNMP 是一个标准的消息转发协议。通常在大型的企业级系统中都会进行部署。 CM 提供了方便的 SNMP 集成能力,只需
要进行简单的部署,就能够将 SNMP 进行集成,并且将集群中的告警信息进行转发。
3. 高级功能
以下功能只包含在商业版本中,在免费版本中不提供。有关商业版本许可证信息,请参见链接。
3.1. 软件滚动升级
Hadoop 是一个正在快速发展的新技术,版本正在迅速的衍进,对于部署了 Hadoop 的系统,无论出于稳定性还是功能性
的原因,版本升级是不可避免的。但是,通常业务系统都是在线的生产系统,需要 24 小时不间断的提供对外服务。
没有滚动升级之前, Hadoop 平台,要进行组件升级时,需要停止集群运行,然后进行升级,再启动集群,这样带来的问
题是,在进行升级时,需要停集群,停服务,停应用。这样会严重影响持续的服务能力。整个过程如果由系统管理员手工
操作,一个规模为 100 台服务器的集群通常需要 1 周左右,300 台服务器的集群通常需要 3 周时间。由于 Hadoop 产品开源,
需要不断升级来保证新近发现重大 bug 及时修复,因此通常每 3 个月需要一次升级或打补丁。
因此, CM 提供了滚动升级的功能,支持在平台进行升级
时,能够继续对外提供服务,以及应用。其原理是在升级
时,首先停一个节点,然后进行升级,然后再启动,然
后循环的进行下一个节点的升级。最后完成整个集群的升
级。通过逐个节点升级的方式,保证集群的对外服务功能,
并且最终完成整个集群的升级。由于分布式系统的可扩展
性,在升级过程中,集群依然能够持续运行,持续对外提
供服务。
在 Cloudera 管理界面中提供了滚动升级的向导,方便管理
员进行操作 :
28
具体操作步骤如下 :
步骤一 :配置要升级软件的位置 :
步骤二 :开始升级,选择需要升级的版本,本例中为 5.3.2 :
步骤三 :确认升级前的准备工作,如关键数据备份等 :
29
产品介绍
步骤四 :硬件正确性检查 :
步骤五 :准备开始版本升级 :
步骤六 :升级时配置开启滚动重启功能,可以不影响正在运行服务和作业 :
30
步骤七 :滚动重启参数配置,可使用缺省参数 :
步骤八 :开始执行滚动升级 :
31
产品介绍
步骤九 :无宕机服务升级成功
步骤十 :升级客户端配置 :
3.2. 参数版本控制
任何时候进行配置修改并保存之后, Cloudera Manager 会对该配置生成一个版本。 Cloudera Manager 支持查看历史配置
把版本并回滚,从而为集群恢复、场景回放、问题诊断等提供了可靠的依据和方便的工具。
3.2.1. 配置历史查看
CM 提供了配置的历史记录与回滚,用户可以查看参数的修改历史。点击详细信息能查看到具体的每一个修改的配置更改
前后的值。
32
3.2.2. 配置版本回滚
进入服务配置界面,查看历史版本信息,能够查看所有的配置版本。 Cloudera Manager 能够支持版本之间的回滚操作。在
配置详细信息页面中选择“回滚”,将逐个回滚之前对所有组件的配置,并最终同步所有服务器和客户端配置。
3.3. 备份及容灾系统 BDR
数据的备份与恢复是企业级系统非常关键的功能,能够保障异常故障情况下,数据的完整性。 Hadoop 能够实现集群间的
数据备份与灾难恢复工作,但是本身的配置以及实现非常的复杂与繁琐,不易于使用。
Cloudera 为 Hadoop 平台提供了一个集成的易用的灾备的解决方案( Cloudera BDR)。 BDR 为灾备方案提供了丰富的功能。
对于企业级数据中心来说,通常存储的是非常关键的企业数据, BDR 能够保证数据始终是可用的,哪怕面对整个数据中心
断电的情况。
Cloudera Manager 为 BDR 提供了完整的用户界面,实现界面化的数据备份与灾难恢复。用户只需要在界面上进行简单的
配置,就能够达到预期的效果。并且可以设置,数据备份的周期,带宽等参数,以保证在不影响业务的情况下,周期性的
进行自动备份。具体包括如下的功能 :
1. 用户可以自由选择与业务相关的关键数据进行灾备
2. 创建数据备份的调度策略。由于数据备份通常需要较大的网络带宽,如果没有良好的调度,将会影响业务系统的运行,
需要对于备份的时间,备份的带宽等加以限制。
3. 通过一个集中的控制台跟踪数据备份任务的进度,以及备份过程中出错的文件。
4. 针对出错的任务,或者异常中断的任务,提供告警机制,以及时让用户感知。
这些功能都能够无缝的和 HDFS, Hive 等存储的备份进行结合,并且在备份的过程中,并不需要对存储于 Hive 表中的数
据进行人为的转换。数据的备份同时也包括元数据的备份,因此,备份出来的数据仍然能够体现表格的元数据信息。
开源的 Hadoop 默认提供了集群间的数据拷贝方案“ distcp”, Disctp 是一个专门的 Mapreduce 任务,用于并行的进行文
件复制。 Cloudera 分数据备份方案建立在 Distcp 之上,进行了性能上的优化,提供更高效,更快速的文件复制。
在新版本中,BDR 还提供了一个新功能,能够在运行备份之前,估算整个过程需要的资源和开销,帮助用户评估灾备的风险。
目前通常的灾备解决方案是,一方面利用数据快照,对存储于 Hadoop 的数据进行增量快照,同时利用 BDR 所提供的页面,
33
产品介绍
对数据备份进行定制化,通过将数据快照备份到另一个 Hadoop 集群。当目前运行的 Hadoop 集群出现了严重的问题,数
据丢失或者无法恢复时,可以通过存储在备用集群的数据,进行灾难恢复。
34
3.3.1. HDFS 备份
3.3.1.1. 本地备份:快照模式
CM 支持对 HDFS 文件夹建立快照,并基于快照备份或恢复。如 :
步骤一 :查看集群,示例中 HDFS 只有一个文件 formatdisk.sh :
步骤二 :建立快照。
步骤三 :建立快照后,进行 HDFS 文件操作,比如新增文件 mountdisk.sh :
步骤四 :进行文件恢复,将 HDFS 状态恢复到之前建立的快照 :
35
产品介绍
步骤五 :操作成功后,目录将恢复到之前的状态,即只有一个文件,示例如下 :
3.3.1.2. 异地备份:复制模式
HDFS 备份另外一种方案是将数据拷贝到另外一个集群,操作步骤如下 :
步骤一 :建立远端对等集群信息 :
步骤二 :选择数据备份策略。支持的备份策略包括 :
1. 可以配置立即或延后定时进行备份 :
36
2. 可以进行周期性备份,间隔时间可以按分钟,小时,天,周,月,年等不同策略进行定期计划执行 :
3. 可以配置数据备份时能使用的资源限制,以便降低因数据备份对线上业务的影响 :
4. 其他更多数据备份的策略,比如删除文件如何处理,元数据如何处理等等 :
37
产品介绍
步骤三 :选择数据备份的通知机制,如失败报警等 :
步骤四 :数据备份策略配置完成后,可以管理备份策略 :
38
步骤五 :数据恢复是备份的相反过程。使用相同步骤在备份集群执行,只是把 Source 集群和 Destination 集群的地址对调,
使用单次( Once)运行,将数据从备份集群拷贝到需要恢复数据的集群 :
3.4. 数据审计
Cloudera Navigator 的审计功能支持对于数据的审计和访问,其架构如下 :
一旦配置了 Cloudera Navigator 审计功能,收集和过滤审核事件的插件将会被打开并插入到 HDFS, HBase 和 Hive(也
就是 HiveServer2 和 Beeswax 服务器)服务。该插件负责将审计事件写入到本地文件系统的审计日志中。而 Cloudera
Impala 和 Sentry 则自己收集和过滤审核事件,并直接将其写入审计日志文件。支持的审计事件比如集群资源管理操作节
点操作、用户操作、资源服务的启动和停止、应用程序操作等。
运行在每台服务器上的 CM 代理( Cloudera Manager Agent)会监视审计日志文件,并将这些事件发送到 Navigator 审计
服务器( Navigator Audit Server)。如果任何消息在发送时失败, CM 代理将会自动重试。由于没有使用临时内存缓冲区,
39
产品介绍
一旦审计事件被写入审计日志文件,就可以保证被交付(只要文件系统可用)。 CM 代理记录并跟踪审计日志中当前成功发
送的的审计事件,因此及时出现任何崩溃或重新启动,只需找到上次成功发送审计事件的位置,然后就可以重新开始发送。
审核日志一旦被成功发送到 Navigator 审计服务器,CM 代理会负责清除。如果一个插件无法将审计事件写入审计日志文件,
它可以丢弃事件或停止正在运行的进程(取决于配置的策略)。
Navigator 审计服务器执行以下功能 :
● 跟踪和合并事件
● 存储事件给审计数据库
3.5. 安全集成向导
3.5.1.Kerberos 集成
Hadoop 支持多种安全机制,例如 Kerberos。由于使用这些安全机制的配置工作以及管理工作都非常繁琐且复杂, CM 在
界面上提供了启用 Kerberos、基于角色的访问控制等功能的途径,用户只需要通过简单的页面点击就能够完成复杂的配置
工作。
可以在 Cloudera Manager 界面上方的管理菜单栏的“管理”中找到“ Kerberos”,点击后进入集成向导。界面示例如下 :
或者在 Cluster 的操作下拉菜单中找到“启用 Kerberos”,如下 :
40
点击后进入 Kerberos 集成向导,具体操作步骤如下 :
步骤一 :
步骤二 :
步骤三 :
步骤四 :执行并完成
41
产品介绍
步骤五 :服务监控及配置
3.5.2. 外部安全认证集成
Cloudera Manager 支持通过内部数据库或这外部服务进行用户认证。具体支持的外部服务如下,详细信息参见官方文档
http://www.cloudera.com/documentation/enterprise/latest/topics/cm_sg_external_auth.html
3.5.2.1.Active Directory
3.5.2.2.OpenLDAP 兼容服务器
42
3.5.2.3. 外部程序
3.5.2.4.SAML
4. 重要管理任务介绍
4.1. 多租户资源管理能力
CDH 提供了多租户的统一资源与权限管控,可以满足各个部门的不同应用需求。通过统一的集群管理和资源调度框架,平
台可以动态创建和销毁集群,灵活部署业务。平台具备资源弹性共享能力以提高资源利用率,同时平台的资源隔离性可以
保障服务质量和安全性。
4.1.1. 资源分配运维监控工具
CM 提供了众多的资源 KPI 指标,以及丰富的可视化的资源分配、运维和监控界面。运维人员能在单一管理界面配置、监
控和导出实时的系统集群资源状态、管理规则以及分用户、任务的使用状况。如下图 :
CDH 以及 CM 能同时满足动态以及静态的资源管理 :通过“动态资源池”提供基于 YARN 的动态资源隔离能力,通过“静
态资源池”提供基于 Linux 容器技术的静态资源隔离能力。其中,动态资源池状态监控界面如下图 :
43
产品介绍
4.1.2. 动态资源隔离能力(基于 YARN)
CDH 集成了 YARN 组件,提供了动态资源隔离能力,并对内存资源和 CPU 资源采用了不同的资源隔离方案。 CM 提供了
方便的可视化界面来配置“动态资源池”,同时支持计划模式,对于指定类型的时间使用特定的资源管理策略,能有效的管
理高峰在线业务期以及高峰离线计算期的不同资源负载管理矛盾。
当前 YARN 支持内存和 CPU 两种资源类型的管理和分配。对于内存资源是限制性资源,应用程序到达内存限制,会发
生 OOM,就会被杀死,因此内存直接决定应用程序的运行。 CPU 资源一般用 Cgroups 进行资源控制,内存资源隔离除
Cgroups 之外提供了另外一个更灵活的方案,就是线程监控方案,以获取更加灵活的资源控制效果。默认情况下 YARN 采
用线程监控的方案控制内存使用,每个 NodeManager 会启动一个额外监控线程监控每个 container 内存资源使用量,一旦
发现它超过约定的资源量,则会将其杀死。
在 YARN 中,用户以队列的形式组织,每个用户可属于一个或多个队列,且只能向这些队列中提交 application。每
个队列被划分了一定比例的资源。用户提交应用程序时,可以指定每个任务需要的虚拟 CPU 个数以及内存要求。在
MRAppMaster 中,每个 Map Task 和 Reduce Task 默认情况下需要的虚拟 CPU 个数为 1,对于内存资源, Map Task 和
Reduce Task 默认情况下需要 1024MB。相应配置皆可通过参数修改。
CM 提供了可视化的动态资源池管理界面,如下 :
4.1.3. 静态资源隔离能力(基于 Linux 容器技术)
Linux 容器工具,即 LXC,可以提供轻量级的虚拟化,以便隔离进程和资源。使用 LXC 的优点就是不需要安装太多的软件
包,使用过程也不会占用太多的资源, LXC 是在 Linux 平台上基于容器的虚拟化技术的未来标准,最初的 LXC 技术是由
IBM 研发的,目前已经进入 Linux 内核主线,这意味着 LXC 技术将是目前最有竞争力的轻量级虚拟容器技术。 LXC 项目
44
由一个 Linux 内核补丁和一些用户空间( userspace) 工具组成。这些工具使用由补丁增加的内核新特性,提供一套简化的
工具来维护容器。2.6.29 版本后的 Linux 内核版本已经包含该补丁提供的大部分功能。所以强烈建议使用最新的内核源代码。
LXC 在资源管理方面依赖 Linux 内核的 CGroups (Control Groups) 系统, CGroups 系统是 Linux 内核提供的一个基于进
程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。它最初由 Google 的工程师提出,后来被整合进 Linux
内核。 CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段,可以说没有 CGroups 就没有 LXC。
CDH 也支持基于 CGroups 或者 Linux 容器进行静态资源隔离,保证不同应用、不同任务之间的资源使用独立性。在 CM
中的“静态服务池”集成了可视化的界面,可以对 CPU、 IO、内存等资源进行静态的隔离。为方便配置管理, CM 还提供
了配置向导工具,方便运维管理员以所见即所得的方式轻松的配置集群。
CM 还提供了静态服务的监控和运维界面,能方便的查看和管理静态服务池。界面截图如下 :
45
产品介绍
5. 监控指标
Cloudera Manager 提供多达 102 类监控指标(见下表),覆盖所有的服务及功能,包括集群硬件使用情况(网络、 CPU、
内存以及硬盘等)、服务状态等,同时指标按集群级别、主机级别、用户级别以及表 / 目录级别等等分级统计,总指标项上万,
比如 :集群指标超过 3000 个、 HBase 系统级指标就超过 1000 个、 HDFS 系统级指标超过 300 个等等。具体指标列表可
查阅如下在线网页资料 : http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cm_metrics.html
Cloudera Manager 监控指标分类索引表
Accumulo | History Server | Navigator Metadata Server |
Accumulo 1.6 | Hive | Network Interface |
Activity | Hive Metastore Server | NodeManager |
Activity Monitor | HiveServer2 | Oozie |
Agent | Host | Oozie Server |
Alert Publisher | Host Monitor | Rack |
Attempt | HttpFS | RegionServer |
Beeswax Server | Hue | Reports Manager |
Cloudera Management Service | Hue Server | ResourceManager |
Cloudera Manager Server | Impala | SecondaryNameNode |
Cluster | Impala Catalog Server | Sentry |
DataNode | Impala Daemon | Sentry Server |
Directory | Impala Daemon Pool | Server |
Disk | Impala Llama ApplicationMaster | Service Monitor |
Event Server | Impala Pool | Solr |
Failover Controller | Impala Query | Solr Collection |
Filesystem | Impala StateStore | Solr Replica |
Flume | Isilon | Solr Server |
Flume Channel | JobHistory Server | Solr Shard |
Flume Channel Tier | JobTracker | Spark |
Flume Sink | JournalNode | Spark (Standalone) |
Flume Sink Tier | Kerberos Ticket Renewer | Sqoop 1 Client |
Flume Source | Key Management Server | Sqoop 2 |
Flume Source Tier | Key Management Server Proxy | Sqoop 2 Server |
Garbage Collector | Key Trustee | Tablet Server |
HBase | Key-Value Store Indexer | TaskTracker |
HBase Namespace | Lily HBase Indexer | Time Series Table |
HBase REST Server | Logger | Tracer |
HBase Region | MapReduce | User |
HBase Table | Master | WebHCat Server |
HBase Thrift Server | Monitor | Worker |
HDFS | NFS Gateway | YARN (MR2 Included) |
HDFS Cache Directive | NameNode | YARN Pool |
HDFS Cache Pool | Navigator Audit Server | ZooKeeper |
46
5.1. 部分样例状态指标
5.1.1.HDFS 指标
KPI 名称 | KPI 描述 | 单位 | 级别 |
CPU 占用率 | CPU 平均占用率 | % | 系统级 / 节点级 |
内存占用率 | 内存平均占用率 | % | 系统级 / 节点级 |
系统空间 | 总空间 | MB | 系统级 / 节点级 |
已用空间 | 已用空间 | MB | 系统级 / 节点级 |
可用空间 | 剩余空间 | MB | 系统级 / 节点级 |
空间使用率 | 已用空间与系统空间的比值 | % | 系统级 / 节点级 |
读流量 | 统计周期内读流量统计 | MB | 系统级 / 节点级 |
写流量 | 统计周期内写流量统计 | MB | 系统级 / 节点级 |
读 IOPS | 每秒进行读( I/O)操作的次数 | 个 /s | 系统级 / 节点级 |
写 IOPS | 每秒进行写( I/O)操作的次数 | 个 /s | 系统级 / 节点级 |
5.1.2.MapReduce 指标
KPI 名称 | KPI 描述 | 单位 | 级别 |
提交作业数 | 提交作业数 | 个 | 系统级 |
完成作业数 | 完成作业数 | 个 | 系统级 |
失败作业数 | 失败作业数 | 个 | 系统级 |
正在运行的作业数 | 正在运行的作业数 | 个 | 系统级 |
Map 总任务数 | Map 总任务数 | 个 | 系统级 |
Reduce 总任务数 | Reduce 总任务数 | 个 | 系统级 |
Map 任务完成数 | Map 任务完成数 | 个 | 系统级 |
Reduce 任务完成数 | Reduce 任务完成数 | 个 | 系统级 |
正在执行的 Map 任务数 | 正在执行的 Map 任务数 | 个 | 系统级 |
正在执行的 Reduce 任务数 | 正在执行的 Reduce 任务数 | 个 | 系统级 |
平均 Map 任务执行时间 | 平均 Map 任务执行时间 | 秒 | 系统级 |
平均 Reduce 任务执行时间 | 平均 Reduce 任务执行时间 | 秒 | 系统级 |
最小 Map 任务执行时间 | 最小 Map 任务执行时间 | 秒 | 系统级 |
最小 Reduce 任务执行时间 | 最小 Reduce 任务执行时间 | 秒 | 系统级 |
最大 Map 任务执行时间 | 最大 Map 任务执行时间 | 秒 | 系统级 |
最大 Reduce 任务执行时间 | 最大 Reduce 任务执行时间 | 秒 | 系统级 |
Map 任务执行失败数 | Map 任务执行失败数 | 个 | 系统级 |
Reduce 任务执行失败数 | Reduce 任务执行失败数 | 个 | 系统级 |
Map 任务执行成功数 | Map 任务执行成功数 | 个 | 系统级 |
Reduce 任务执行成功数 | Reduce 任务执行成功数 | 个 | 系统级 |
47
产品介绍
5.1.3.HBase 指标
KPI 名称 | KPI 描述 | 单位 | 级别 |
系统空间 | 系统总空间 | MB | 系统级 / |
已用空间 | NoSQL 系统已用数据量 (系统级); RegionServer 的 Region 个数(节点级) |
MB | 系统级 / 节点级 |
可用空间 | NoSQL 系统可用数据量 | MB | 系统级 / |
空间使用比率 | 已使用的空间与总空间的比值 | % | 系统级 / |
CPU 平均使用率 | NoSQL 系统平均 CPU 使用率 | % | 系统级 / 节点级 |
CPU IOwait 使用率 | NoSQL 系统平均 CPU IOwait 使用率 | % | 系统级 / 节点级 |
压缩合并队列长度 | 数据分区服务器中的压缩合并( Compaction)队列大小, 当存储文件数量达到该数值时将启动压缩合并。 |
个 | 系统级 |
请求时延 10 毫秒次数 | 请求响应时间小于或等于 10 毫秒的请求次数 | 次 | 系统级 / |
请求时延 2000 毫秒次数 | 请求响应时间小于或等于 2000 毫秒的请求次数 | 次 | 系统级 / |
请求时延 2000 毫秒以上次数 | 请求响应时间大于 2000 毫秒的请求次数 | 次 | 系统级 / |
读 IO 次数 | 读 IO 次数 | 次 | 节点级 |
写 IO 次数 | 写 IO 次数 | 次 | 节点级 |
IO 次数 | 节点 IO 次数(读写 IO 次数总和) | 次 | 节点级 |
5.2. 部分样例报警指标
5.2.1.Hive
5.2.1.1. 系统级
告警名称 | 告警描述 | 定位信息 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 系统标识 |
存储系统全部节点 CPU 平均使用率超过门限 | 系统标识 | |
存储系统全部节点内存平均使用率超过门限 | 系统标识 | |
系统状态异常 | 存储系统不可用、只读告警 | 系统标识 |
5.2.1.2. 节点级
告警名称 | 告警描述 | 定位信息 |
节点状态异常 | 节点故障 | 节点 IP/ 主机名 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 节点 IP/ 主机名 |
CPU 使用率超阈值告警 | 存储系统单节点 CPU 平均使用率超过门限 | 节点 IP/ 主机名 |
内存使用率超阈值告警 | 存储系统单节点内存平均使用率超过门限 | 节点 IP/ 主机名 |
进程异常 | 系统重要进程异常 | 节点 IP/ 主机名、进程标识 |
元数据故障 | 元数据写入异常或丢失 | 节点 IP/ 主机名、表标识、索引标识、 元数据条目 |
48
5.2.2.HDFS
5.2.2.1. 系统级
告警名称 | 告警描述 | 定位信息 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 系统标识 |
CPU 使用率超阈值告警 | 存储系统全部节点 CPU 平均使用率超过门限 | 系统标识 |
内存使用率超阈值告警 | 存储系统全部节点内存平均使用率超过门限 | 系统标识 |
系统状态异常 | 存储系统不可用、只读告警 | 系统标识 |
5.2.2.2. 节点级
告警名称 | 告警描述 | 定位信息 |
节点状态异常 | 节点故障 | 节点 IP/ 主机名 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 节点 IP/ 主机名 |
CPU 使用率超阈值告警 | 存储系统单节点 CPU 平均使用率超过门限 | 节点 IP/ 主机名 |
内存使用率超阈值告警 | 存储系统单节点内存平均使用率超过门限 | 节点 IP/ 主机名 |
5.2.3.MapReduce
5.2.3.1. 系统级
告警名称 | 告警描述 | 定位信息 |
CPU 使用率超阈值告警 | 存储系统全部节点 CPU 平均使用率超过门限 | 系统标识 |
内存使用率超阈值告警 | 存储系统全部节点内存平均使用率超过门限 | 系统标识 |
系统状态异常 | 系统不可用 | 系统标识 |
5.2.3.2. 节点级
告警名称 | 告警描述 | 定位信息 |
节点状态异常 | 节点故障 | 节点 IP/ 主机名 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 节点 IP/ 主机名 |
CPU 使用率超阈值告警 | 存储系统单节点 CPU 平均使用率超过门限 | 节点 IP/ 主机名 |
内存使用率超阈值告警 | 存储系统单节点内存平均使用率超过门限 | 节点 IP/ 主机名 |
任务失败 | Task 执行失败 | 节点 IP/ 主机名、 用户标识、作业标 识、任务标识 |
49
产品介绍
5.2.4.HBase
5.2.4.1. 系统级
告警名称 | 告警描述 | 定位信息 |
空间使用比率超阈值告警 | 存储资源空间占用比超过门限 | 系统标识 |
CPU 使用率超阈值告警 | 存储系统全部节点 CPU 平均使用率超过门限 | 系统标识 |
内存使用率超阈值告警 | 存储系统全部节点内存平均使用率超过门限 | 系统标识 |
系统状态异常 | 存储系统不可用、只读告警 | 系统标识 |
5.2.4.2. 节点级
告警名称 | 告警描述 | 定位信息 |
节点状态异常 | 节点故障 | 节点 IP/ 主机名 |
存储资源空间占用比超过门限 | 节点 IP/ 主机名 | |
CPU 使用率超阈值告警 | 存储系统单节点 CPU 平均使用率超过门限 | 节点 IP/ 主机名 |
内存使用率超阈值告警 | 存储系统单节点内存平均使用率超过门限 | 节点 IP/ 主机名 |
肯睿(上海)软件有限公司 I 上海市长宁区延安西路 2299 号世贸商城 2612 室 I 021-62369001
cloudera.com
1 / 43
目录
大数据集群 CDH5.9 安装手册 .............................................................................................................1
1.1 系统环境......................................................................................................................................1
1.2 选择安装方式.............................................................................................................................2
1.3 下载相关包..................................................................................................................................2
1.4 检查安装环境..........................................................................................................................14
1.5 开始安装 CDH 集群管理控制台..........................................................................................15
1.6 CDH5 安装以及集群配置 .....................................................................................................19
1.7 安装过程中常见的问题 ......................................................................................................25
1.8 CDH 集群启动..........................................................................................................................31
1.9 集群安装完成..........................................................................................................................43
大数据集群 CDH5.9 安装手册
文档编号: | |
当前版本: | V1.0 |
编写人: | 黄志荣 |
审核人: | |
编写单位 | 中软国际商业银行线数据应用交付部 |
日期: | 2017-12-14 |
保密级别: |
前言:
本文是参考以下文章整理而来
http://blog.csdn.net/yuebanwa/article/details/54614976
http://www.linuxidc.com/Linux/2017-01/139518.html
1.1 系统环境
Cloudera Manager 是为了简化 hadoop 及其组件的部署,但是由于包含的组件较多,对内存
要求也比较大。所以我们尽量要保持主节点 master 和副节点足够的内存和磁盘空间,否则
会出现一些无法预估的错误。
官方推荐配置
2 / 43
主节点 内存 10G 以上 磁盘 30G
副节点 内存 4G 以上 磁盘 30G
如果不满足条件的话可以适当减一些配置,但不保证能安装成功。我们这里使用三台物理机
来部署。 因为条件限制我的虚拟机创建如下:
管理界面版本 | CDH 版本 | Mysql 数据库 | JDK 版本 |
Cloudera Manager 5.9.0 |
CDH 5.9.0 | Mysql 5.6.26 | JDK 1.8 |
1.2 选择安装方式
第一种使用 cloudera-manager-installer.bin 在线安装
第二种使用 rpm、 yum、 apt-get 方式在线安装
第三种使用是 Tarballs 的方式离线安装
我们前面讲到 cloudera 有三种安装方式,第一种是最方便的,就像安装一个客户端软件一
样就可以了,操作简单。
但是第一种第二种方式都是在线安装,也就是需要网络网速,虚拟机需要连接外网,尤其是
部分资源被墙了,所以在线安装会很慢。。。而且安装中断安装失败的可能性很大。
所以我们还是用第三种方式来安装,离线安装虚拟机不需要连接外网,可实现全离线安装,
但是需要三台虚拟机和 PC 机能相互 ping 通。 我现在的情况是 PC 机能上外网,三台物理机
不能上外网(作了 ip 限制),所以采用完全离线安装。
1.3 下载相关包
1.3.1 下载 CDH 相关文件
Cloudera Manager5.9 :
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
CDH 安装包:
http://archive.cloudera.com/cdh5/parcels/5.9.0/CDH-5.9.0-1.cdh5.9.0.p0.23-
el6.parcel
http://archive.cloudera.com/cdh5/parcels/5.9.0/CDH-5.9.0-1.cdh5.9.0.p0.23-
el6.parcel.sha1
manifest.json 文件
http://archive.cloudera.com/cdh5/parcels/5.9.0/manifest.json
myslq 连接 jar: http://download.softagency.net/MySQL/Downloads/Connector-J/mysqlconnector-java-5.1.40.zip
CDH 安装的 RPM 包:
http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.9.0/RPMS/x86_64/
以下是下载完成用于安装的文件截图
3 / 43
1.3.2 系统安装
我们是使用 3 台服务器安装了 centos6.5 系统做的 CDH 集群, 三台服务器的 IP 分别是
172.16.37.123-125
4 / 43
1.3.3 关闭防火墙
物理机和虚拟机的防火墙和 SElinux 都需要关闭
在安装过程中需要关闭防火墙和 SElinux,否则会异常。
使用 getenforce 命令查看 SElinux 是否关闭
修改/etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled,执行该命令后重启机器生效
service iptables status 查看防火墙状态
chkconfig iptables off
1.3.4 修改主机名和 hosts 文件
修改主机名命令(三台都修改)
vi /etc/sysconfig/network
查看主机名命令
hostname
修改如下(重启后生效)
5 / 43
修改 hosts 文件 hosts 文件主要是把 ip 和主机名映射起来。
vi /etc/hosts
三台虚拟机都在 hosts 文件中增加(根据自己的主机名和设置的 ip):
172.16.37.123 node3
172.16.37.124 node2
172.16.37.125 node1
修改如下:
1.3.5 设置 ssh 无密码登陆(所有节点)
因为 hadoop 集群在安装的时候需要集群中所有机器的权限。 所以我们需要打通所有节
点的 ssh 无密码登陆。 思路是生成每台机子的密钥,集中在一个文件中,再分发到每台机子
上。为了确保下面的命令能顺利执行,请先重启所有节点并且保证所有节点能够通过主机名
ping 通。
三台机子都分别使用
ssh-keygen -t rsa
然后一直回车生成密钥。
我们可以看到/root/.ssh 目录下有了密钥文件 id_rsa 以及公钥文件 id_rsa.pub。
cd /root/.ssh
ls
三个节点中分别把公钥 id_rsa.pub 复制一份命名为
authorized_keys_node1、 authorized_keys_node2、 authorized_keys_ node3。
也就是 node1 中执行
cp id_rsa.pub authorized_keys_ node1
也就是 node2 中执行
6 / 43
cp id_rsa.pub authorized_keys_ node2
也就是 node3 中执行
cp id_rsa.pub authorized_keys_ node3
把从节点 node1 和 node2 的公钥传送到 node3 节点的/root/.ssh 文件夹中
node1 使用命令(截图仅供参考,非本次实验截图)
scp authorized_keys_ node1 root@ node3:/root/.ssh
node2 使用命令
scp authorized_keys_ node2 root@ node3:/root/.ssh
这 个 时 候 我 们 在 node3 中 的 root/.ssh 目 录 会 看 到 authorized_keys_node1 、
authorized_keys_ node2、 authorized_keys_node3 三个文件。
把它们合并追加到 authorized_keys 文件中。
cat authorized_keys_node1 >> authorized_keys
cat authorized_keys_ node2 >> authorized_keys
cat authorized_keys_ node3 >> authorized_keys
我们可以看到这个通行证 authorized_keys 中已经有了三台机子的公钥。
7 / 43
把这个通行证 authorized_keys 分发到其他节点----node1 和 node2 中。
scp authorized_keys root@node1:/root/.ssh
scp authorized_keys root@node2:/root/.ssh
检查看看 node1 和 node2 中已经有通行证了
测试节点之间相互 ssh
例如在 node1 中
ssh nod2
exit
ssh node3
exit
例如在 node2 中
ssh node1
exit
ssh node3
exit
1.3.6 各个节点分别安装 JDK(两种方法)
1.3.6.1 使用 rpm 包的形式安装 JDK
8 / 43
CentOS 自带 OpenJdk,不过运行 CDH5 需要使用 Oracle 的 Java 7 以上的 jdk 支持。
所以我们需要把 OpenJdk 卸载,然后安装 Oracle 的 java7 以上的 jdk,我们使用的 jdk1.8
的版本;
查看最低需要支持的 jdk 版本链接:
http://www.cloudera.com/documentation/cdh/5-1-x/CDH5-Requirements-andSupported-Versions/cdhrsv_jdk.html
卸载 OpenJdk
使用
rpm -qa | grep java
查询 java 相关的包,使用
rpm -e --nodeps 包名
卸载。
图中我们可以看到有 3 个 java 相关的包,使用命令
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
都卸载之后 jdk 卸载成功了。
安装 oraclejdk
9 / 43
我们之前已经下载了 oracle 的 java jdk1.8.现在用 ssh 工具把文件传到这几台虚拟机中。
连接之后我们新建一个目录用来安装 jdk,目录新建为/usr/local/java,然后把 jdk-8u111-
linux-x64.rpm 拉过去。
进入该目录使用命令
rpm -ivh 包名
安装。
我们这里也就是
cd /usr/local/java
rpm -ivh jdk-8u111-linux-x64.rpm
由于是 rpm 包并不需要我们来配置环境变量,我们只需要配置一个全局的 JAVA_HOME 变量
即可,执行命令:
JAVA_HOME 的目录对应我们的安装目录,我们这里放 rpm 的目录是/usr/local/java/,但是
用 rpm 安装的 jdk 默认路径是 usr/java/latest。
所以我们的 JAVA_HOME 变量应该是/usr/java/latest/。
echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
然后用
java -version
检查是否安装成功。
10 / 43
其他两台 node2 和 node3 也类似操作安装即可。
1.3.6.2 使用压缩包的方式安装 JDK
解压 jdk-8u151-linux-x64.tar.gz 到/usr/local 目录下, -C 是指改变解压的路径,不解压
在当前路径下
#tar -xzvf jdk-8u151-linux-x64.tar.gz -C /usr/local
#vi /etc/profile | 在环境变量文件下配置 JAVA_HOME 的路径 |
export JAVA_HOME=/usr/local/jdk1.8 //注意改变解压出来都目录名称,不一定是 jdk1.8 | |
export PATH=$JAVA_HOME/bin:$PATH | |
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar | |
# source /etc/profile | |
然后使用 |
#java –version 验证是否设置成功
1.3.7 主节点安装数据库 mysql
注意,仅在 server 节点也就是 master 节点 node3 安装 mysql(我把 node3 作为主节点)
CentOS 自带了 mysql,但是版本较低是 5.1 的。
使用命令
rpm -qa | grep mysql
查看系统之前是否已安装 MySQL。
11 / 43
查看组件需要需要的 mysql 版本链接
http://www.cloudera.com/documentation/cdh/5-1-x/CDH5-Requirements-andSupported-Versions/cdhrsv_db.html
所以 我们还是需要把原 mysql 卸载,安装新的 mysql5.6 以上。
卸载旧 mysql
我们还是使用命令
rpm -e --nodeps 包名
卸载旧的 mysql,我们这里也就是使用
rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64
命令来进行卸载。
rpm -qa | grep mysql
验证一次是否删除成功。
安装 mysql
然后把我们之前下载好的 mysql 安装文件 MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpmbundle.tar 用 ssh 工具上传到虚拟机中。
我们还是新建一个目录/usr/local/mysql
详细安装步骤查看
CentOS6.4 离线安装 mysql5.6.22(百度一下相关文章)
1.3.8 安装 mysql 其他相关组件
12 / 43
除了安装 mysqlsever 和 client 之外我们还需要安装其他相关的 mysql 组件,这些组
件都在解压出来的目录中。
解压 mysql 文件的目录里发现了除了
MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm
这两个安装文件之外另外的 rpm 包。
我们把其他几个关联 rpm 包也安装一下。
rpm -ivh MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm
1.3.9 修改密码和创建数据库并授权
旧版 mysql 才安装完 root 密码为空,新版 mysql 的 root 密码为随机密码保存在
/root/.mysql_secret 中。
修改密码
使用
service mysql start
13 / 43
启动 mysql
使用
netstat -ntlp | grep 3306
查找 3306 端口确认是否已经启动成功。
cat /root/.mysql_secret
查看随机密码
mysql -u root -p mysql
然后输入随机密码首次登录 mysql 并且选择 mysql 数据库
使用以下命令设置 root 的新密码
mysql> SET PASSWORD = PASSWORD('123456');
mysql>create database roger;
mysql> quit
我这里新密码设置为 123456.
然后
mysql -u root -p
使用 123456 登陆成功。
1.3.10 创建数据库并授权
我们需要创建 cdh5.9.0 组件中会使用到的数据库,创建语句如下:
mysql -u root -p 输入密码进入 mysql 命令行,创建以下数据库:
#hive
mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
mysql>create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie
mysql>create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue 数据库
mysql>create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
设置 root 授权访问以上所有的数据库:
14 / 43
#授权 root 用户在主节点拥有所有数据库的访问权限---'123456' 对应刚才设置的 root 的
密码。 (其中 node3 是我安装 mysql 数据库的机器,下面命令是对它进行授权)
mysql>grant all privileges on *.* to 'root'@'node3' identified by '123456' with
grant option;
mysql>flush privileges;
1.4 检查安装环境
1.4.1 检查 java,mysql 等是否正常安装
在正式开始安装 CDH 之前最好先检查一下能不能相互免密 ssh,以及防火墙是否关闭,
集群中的时间是否统一, java 版本是否是 oracle 的版本,主节点 mysql 是否安装正确等。
ssh 测试
例如在 node1 中
ssh node2
exit
ssh node3
exit
例如在 node2 中
ssh node1
exit
ssh node3
exit
例如在 node3 中
ssh node1
exit
ssh node2
exit
时间是否统一
每台机子中使用
date
命令查看当前时间,最好是完全一样或者差距不大即可。(集群机器时间差距 5 分钟内即可)
可以在 node3 节点上使用命令:
#date;ssh node1 date;ssh node2 date;
15 / 43
java 的版本
每个机子中使用
java -version
命令查询 jdk 的版本。只要不是自带的 openJDK 即可。
1.4.2 检查系统的防火墙
每个机子中使用
#service iptables status
查看防火墙状态(如果防火墙启动,就关闭防火墙)
mysql 状态和数据库
#mysql -u root -p
使用 123456 登陆成功后。
show databases;
看看是否新建需要用到的数据库
1.5 开始安装 CDH 集群管理控制台
1.5.1 主节点安装 Cloudera Manager Server 和所有节点配置 Agent
16 / 43
主节点安装 cloudera manager 在主节点 node3 中解压安装 cloudera manager。
首先把我们下载好的 cloudera-manager-*.tar.gz 包和 mysql 驱动包 mysql-connectorjava-*-bin.jar 放到主节点 node3 的/opt 中。如图:
我下载的版本分别是: cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
和 mysql-connector-java-5.1.40.zip。
cloudera manager 的目录默认位置在/opt 下
所以我们在 opt 目录解压安装文件,命令如下:
# cd /opt
# tar xzvf cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
使用命令
#ls
确保 cm-5.9.0 和 cloudera 目录在/opt 目录下。
1.5.2Cloudera Manager 建立数据库
我们把 mysql-connector-java-5.1.40.zip 也解压一下。 (也可以先在 window 上解压然后
上传到服务器上)
# unzip mysql-connector-java-5.1.40.zip
# ls
# cd mysql-connector-java-5.1.40
发现 jar 包 mysql-connector-java-5.1.40-bin.jar 已经解压出来了。
使用 cp 命令将文件拷贝到/opt/cm-5.9.0/share/cmf/lib 目录下
17 / 43
cp mysql-connector-java-5.1.40-bin.jar /opt/cm-5.9.0/share/cmf/lib
把 mysql-connector-java-5.1.40-bin.jar 放到/opt/cm-5.9.0/share/cmf/lib 中。
# cd /opt/cm-5.9.0/share/cmf/lib
# ls | more
确认已经放进去了。
1.5.3 在主节点初始化 CM5 的数据库
使用命令
在命令里 scm_prepare_database.sh 后面的参数分别是:数据库类型 数据库名称(可以随便
起一个名称) 数据库主机名 数据库用户名 密码 --scm-host 主节点机名 scm scm scm
#/opt/cm-5.9.0/share/cmf/schema/scm_prepare_database.sh mysql cm -h node3 -u
root -p 123456 --scm-host node3 scm scm scm
Agent 配置
主节点修改 agent 配置文件。
/opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini 中的 server_host 为主节点的主机名。
使用命令
vim /opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
18 / 43
在主节点 node3 用命令同步 Agent 到其他所有节点
scp -r /opt/cm-5.9.0 root@node1:/opt/
scp -r /opt/cm-5.9.0 root@node2:/opt/
在所有节点创建 cloudera-scm 用户
在每台机子中, 如下使用命令
useradd --system --home=/opt/cm-5.9.0run/cloudera-scm-server/ --no-create-home
--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
启动 cm 和 agent
主节点 noode3 使用命令启动 server 服务
/opt/cm-5.9.0/etc/init.d/cloudera-scm-server start
启动服务端。
所有节点通过命令
/opt/cm-5.9.0/etc/init.d/cloudera-scm-agent start
启动 Agent 服务。 (所有节点都要启动 Agent 服务,包括服务端)
我们启动的其实是个 service 脚本,需要停止服务将以上的 start 参数改为 stop 就可以了,
重启是 restart。
19 / 43
Cloudera Manager Server 和 Agent 都启动以后,就可以进行尝试访问了。
http://master:7180/cmf/login
我这里 master 是主节点 node3,也就是应该访问
http://172.16.37.123:7180
安装 CM 成功。
安装到此处,可以考虑备份节点,为将来的节点拓展做准备
1.6 CDH5 安装以及集群配置
Cloudera Manager Server 和 Agent 都启动以后,就可以进行 CDH5 的安装配置了。
准备文件
把 CDH5 需要的安装文件放到主节点上,新建目录为
/opt/cloudera/parcel-repo
把我们之前下载的三个文件放到这个目录下
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1
manifest.json
需要注意的是
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1
需要重命名成 CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha
安装 parcel
访问 CM 的主页(主节点)
http://172.16.37.123:7180
用户名和密码均为 admin
20 / 43
登录之后同意条款
右下角点击继续。
选择版本然后右下角继续(这里选择安装免费版本的,也就是第 1 个)
21 / 43
点击继续,各个 Agent 节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选
择要安装的节点,点继续。(截图非本次实验的,但是实际也是类似)
接下来,出现以下包名,说明本地 Parcel 包配置无误,直接点继续就可以了
22 / 43
如果此处发现不到 parcel 包,就重启所有节点的 agent 服务,和 master 的 server 服务,
然后重新尝试。并且确认 CDH 版本小于或者等于 CM 的版本
本地通过 Parcel 安装过程与本地通过 Package 安装过程完全一致,不同的是两者的本
地源的配置。
区别如下:
Package 本地源:软件包是.rpm 格式的,数量通常较多,下载的时候比较麻烦。通
过”createrepo .” 的命令创建源,并要放到存放源文件主机的 web 服务器的根目录下,详
见创建本地 yum 软件源,为本地 Package 安装 Cloudera Manager、 Cloudera Hadoop 及
Impala 做准备
Parcel 本地源:软件包是以.parcel 结尾,相当于压缩包格式的,一个系统版本对应
一个,下载的时候方便。如 centos6.x 使用的 CDH 版本为 CDH-X.X.X-1.cdhX.X.X.p0.22-
el6.parcel,而 centos7.x 使用的 CDH 版本为 CDH-X.X.X-1.cdhX.X.X.p0.22-el7.parcel。
这些文件放好之后, CM 会获取这个包,并出现在主机->包裹的页面。出现的快慢跟你设置
的包的刷新频率有关,默认是 1 小时。也可以重启 CM 服务和 agent 服务识别。
可以在管理页面的属性标签下的包裹种类里修改。
正常情况下 内网网速速好的话 10 分钟左右激活完毕,最多不超过 30 分钟 如果卡住了,
建议看看日志
安装过程中有什么问题 可以用
/opt/cm-5.9.0/etc/init.d/cloudera-scm-agent status
/opt/cm-5.9.0/etc/init.d/cloudera-scm-server status
查看服务器客户端状态
23 / 43
也可以通过
/var/log/cloudera-scm-server/cloudera-scm-server.log
/var/log/cloudera-scm-agent/cloudera-scm-agent.log
查看日志
如果上面的路径找不到则在
日志文件夹"/opt/cm-5.9.0/log"查看日志,里面包含 server 和 agent 的 log,使用命令
如下:
tail -f /opt/cm-5.9.0/log/cloudera-scm-server/cloudera-scm-server.log
tail -f /opt/cm-5.9.0/log/cloudera-scm-agent/cloudera-scm-agent.log
例如我这里 NTP 因为没有外网,所以会报错,不过有些错误不影响的话不需要管
成功激活后继续右下角点击继续
主机检查
24 / 43
会进入自动检查主机(耗时 2 分钟左右)然后给出报告,包括需要修改的部分和组件的版本
25 / 43
1.7 安装过程中常见的问题
解决警告
这里有 2 个警告需要解决一下,至于版本里的不可用不适用不需要管。
1.7.1 警告一
Cloudera 建议将/proc/sys/vm/swappiness 设置为最大值 10 ,当前设置为 60。
使用 sysctl 命令在运行时更改该设置并编辑
#vim /etc/sysctl.conf
然后重启后保存该设置。
您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不
良。以下主机将受到影响解决方法,在每台受影响的主机运行以下命令
echo 10 > /proc/sys/vm/swappiness 即可解决。
1.7.2 警告二
已 启 用 透 明 大 页 面 压 缩 , 可 能 会 导 致 重 大 性 能 问 题 。 请 运 行 “echo never >
/sys/kernel/mm/transparent_hugepage/defrag” 以禁用此设置,然后将同一命令添加到
/etc/rc.local 等初始脚本中,以便在系统重启时予以设置。以下主机将受到影响
解决方法
在每台受影响的主机运行命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag
并且
vim /etc/rc.local
加入 echo never > /sys/kernel/mm/transparent_hugepage/defrag 这条命令。
26 / 43
然后点击重新运行进行重新检查
全部绿勾了,然后点击右下角的完成。
选择安装哪些组件服务--这里根据需求选择即可。
选择组件服务
右下角点击继续,然后配置角色。一般情况下保持默认就可以了(Cloudera Manager 会根
据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了)。
我这里使用默认配置,所以直接点击继续就可以了。
27 / 43
1.7.3 配置数据库
配置数据库,这里需要输入自己的 mysql 的对应数据库名称和用户名以及密码。 我们之
前在 mysql 中新建的数据名分布对应填入 然后点击测试连接。
hive root 123456
oozie root 123456
hue root 123456
如果测试连接全部是 Successful,则点击右下角的继续。
28 / 43
1.7.4 遇到 hue unable to verify 的问题
查看日志后发现原因是
Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object
file: No such file or directory
29 / 43
这个是因为 cm 的服务端是用 java 编写的, cm 的客户端是 Python 编写的,这里测试连
接时是用 python 去连接数据库。但是 CentOS 系统本身会缺少一些 python 连接数据库需要
的关联库。
解决方法
在 mysql 的安装目录找到系统缺少的这个包,关联到系统即可。
根据最后提示,应该是找不着一个交 libmysqlclient_r.so.16 的文件,于是到 mysql
安装目录里找到这个文件并且做一个软连接到/usr/lib
如 果 是按 照我 们之 前的离 线 安装 mysql 步 骤安装 的 话 默认 的 mysql 安 装 目录 是
/var/lib/mysql/
ln -s /var/lib/mysql/lib/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16
但是/var/lib/mysql/ 目录下没有找到 lib 目录
使用
find / -name libmysqlclient_r.so.16
whereis libmysqlclient_r.so.16
也找不到 libmysqlclient_r.so.16
我们在之前解压 mysql 文件的目录里发现了除了
MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm
这两个安装文件之外另外的 rpm 包。
我们把其他几个关联 rpm 包也安装一下。
rpm -ivh MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
30 / 43
rpm -ivh MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm
安装完成后再查找
whereis libmysqlclient_r.so.16
发现已经有了 libmysqlclient_r.so.16 而且已经在/usr/lib64 路径下了
再次点击测试连接,成功。
1.7.5 审核更改
审核更改中列出相关目录和配置,如果有需要的话就修改,无特殊需求使用默认的即可,点
击右下角的继续。
另外如果需要自己设定文件夹,一定要先 mkdir 文件夹,否侧 hdfs 会无法启动,并且报错
文件夹不存在,并确保访问权限。
31 / 43
1.8 CDH 集群启动
集群会首次运行所有的组件,这过程中可能会有一些错误,不要担心,解决重试即可。
下面会依次给出我遇到的情况供大家参考,基本上都是权限或者驱动问题。
正确首次启动后如下图(是不是很激动^^)
32 / 43
右下角继续,离成功安装一步之遥。
1.8.1 HDFS 启动失败--创建/tmp 目录失败
可能遇到的问题---hdfs 启动失败--创建/tmp 目录失败
Directory /tmp does not currently exist
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODEcreatetmp/supervisor.conf: Permission denied.
报错信息
Mon Nov 28 14:20:59 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp
as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp does not currently exist.
33 / 43
+HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-
shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-
5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugincdh57-2.7.2-shaded.jar
+ set -x
+ replace_conf_dir
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp
-type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfsNAMENODE-createtmp/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name
'*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scmagent/process/61-hdfs-NAMENODE-createtmp#g' '{}' ';'
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODEcreatetmp/supervisor.conf: Permission denied.
+ make_scripts_executable
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp
-regex '.*\.py∥sh$' -exec chmod u+x '{}' ';'
+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'
+ ulimit -l
+ export HADOOP_IDENT_STRING=hdfs
+ HADOOP_IDENT_STRING=hdfs
+ '[' -n '' ']'
+ acquire_kerberos_tgt hdfs.keytab
+ '[' -z hdfs.keytab ']'
+ '[' -n '' ']'
+ '[' validate-writable-empty-dirs = mkdir ']'
+ '[' file-operation = mkdir ']'
34 / 43
+ '[' bootstrap = mkdir ']'
+ '[' failover = mkdir ']'
+ '[' transition-to-active = mkdir ']'
+ '[' initializeSharedEdits = mkdir ']'
+ '[' initialize-znode = mkdir ']'
+ '[' format-namenode = mkdir ']'
+ '[' monitor-decommission = mkdir ']'
+ '[' jnSyncWait = mkdir ']'
+ '[' nnRpcWait = mkdir ']'
+ '[' -safemode = supergroup -a get = 1777 ']'
+ '[' monitor-upgrade = mkdir ']'
+ '[' finalize-upgrade = mkdir ']'
+ '[' rolling-upgrade-prepare = mkdir ']'
+ '[' rolling-upgrade-finalize = mkdir ']'
+ '[' nnDnLiveWait = mkdir ']'
+ '[' refresh-datanode = mkdir ']'
+ '[' mkdir = mkdir ']'
+ '[' 5 -ne 5 ']'
+ DIR=/tmp
+ USER=hdfs
+ GROUP=supergroup
+ PERMS=1777
+ RET=0
+ /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop-hdfs/bin/hdfs --
config /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp
dfs -test -d /tmp
1.8.2 HDFS 启动失败解决方法
原因是 hdfs 用户或者 cm 用户对这个文件没有操作权限。我们进入这个目录查看
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
ls -l
发现确实是这个文件只有 root 才能读写,那么我们应该设置一下权限,因为 cm 是用 hdfs
用户在操作的。
35 / 43
使用命令
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
chmod 666 supervisor.conf
ls -l
然后点击右下角的重试
1.8.3 启动 Key-Value Store Indexer, YARN (MR2 Included)---Create Job History Dir
失败
启动 Key-Value Store Indexer, YARN (MR2 Included)仅完成 0/2 个步骤。首个失败:
在服务 Key-Value Store Indexer 上执行命令 Start 失败, 仅完成 0/2 个步骤。首个失
败:在服务 YARN (MR2 Included) 上执行命令 Create Job History Dir 失败, 使用用户
mapred 组 hadoop 和权限 1777 创建 DFS 目录 /tmp/logs, 主机运行状况变成不良时,
主机 cm0 (id=3) 上的进程 dfs-create-dir (id=72) 被标记为失败
Mon Nov 28 14:53:18 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp/logs does not currently exist.
Created directory /tmp/logs.
Changed ownership of /tmp/logs to mapred:hadoop.
36 / 43
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf:
Permission denied.
+HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-
shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-
5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugincdh57-2.7.2-shaded.jar
+ set -x+ replace_conf_dir+ find /opt/cm-5.8.2/run/cloudera-scmagent/process/72-dfs-create-dir -type f '!' -path '/opt/cm-5.8.2/run/clouderascm-agent/process/72-dfs-create-dir/logs/*' '!' -name '*.log' '!' -name
'*.keytab' '!' -name '*jceks' -exec perl -pi
-e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfscreate-dir#g' '{}' ';'Can't open /opt/cm-5.8.2/run/cloudera-scmagent/process/72-dfs-create-dir/supervisor.conf: Permission denied.+
make_scripts_executable+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-
dfs-create-dir
-regex '.*\.py∥sh$'
-exec chmod u+x '{}' ';'+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'+ ulimit -
l+ export HADOOP_IDENT_STRING=hdfs+ HADOOP_IDENT_STRING=hdfs+ '[' -n '' ']'+
acquire_kerberos_tgt hdfs.keytab+ '[' -z hdfs.keytab ']'+ '[' -n '' ']'+ '['
validate-writable-empty-dirs
= mkdir ']'
37 / 43
点击 stderr 看了详细的报错发现仍然是权限问题,解决方法跟之前一样,进入这个路径后
更改下权限即可。
1.8.4 遇到 Solr 问题 --Solr, HBase--Command Start is not currently available for
execution
这种情况界面上没有详细的信息但是在日志中可以看到是超时了,这种情况下确保局域网网
络好的情况下并且 master 服务器服务良好的情况下直接重试。
1.8.5 遇到 hive 的问题---启动 hive---Failed to Create Hive Metastore Database Tables
++ false++ exec /opt/cloudera/parcels/CDH-5.8.0-
1.cdh5.8.0.p0.42/lib/hadoop/bin/hadoop jar /opt/cloudera/parcels/CDH-5.8.0-
1.cdh5.8.0.p0.42/lib/hive/lib/hive-cli-1.1.0-cdh5.8.0.jar
org.apache.hive.beeline.HiveSchemaTool -verbose -dbType mysql -initSchemaJava
HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support
was removed in 8.0org.apache.hadoop.hive.metastore.HiveMetaException: Failed to
load driverorg.apache.hadoop.hive.metastore.HiveMetaException: Failed to load
driverat
org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHel
per.java:79)at
org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.
java:113)at
org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool
.java:159)at
38 / 43
org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:257)at
org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)at
org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja
va:43)at java.lang.reflect.Method.invoke(Method.java:498)at
org.apache.hadoop.util.RunJar.run(RunJar.java:221)at
org.apache.hadoop.util.RunJar.main(RunJar.java:136)Caused by:
java.lang.ClassNotFoundException:
com.mysql.jdbc.Driverat
java.NET.URLClassLoader.findClass(URLClassLoader.java:381)at
java.lang.ClassLoader.loadClass(ClassLoader.java:424)at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at
java.lang.ClassLoader.loadClass(ClassLoader.java:357)at
java.lang.Class.forName0(Native Method)at
java.lang.Class.forName(Class.java:264)at
org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHel
per.java:70)...
11 more*** schemaTool failed ***
这是 hive 的 lib 包中缺少 mysql 的驱动导致的。我们之前已经把 mysql 驱动包 mysqlconnector-java-*-bin.jar 放 到 主 节 点 cm0 的 /opt 中 , 现 在 复 制 一 份 到
39 / 43
/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib ( 这里 CDH-5.8.0-
1.cdh5.8.0.p0.42 要跟自己的版本对应)
使用命令如下
cd | /opt/mysql-connector-java-5.1.40cp | mysql-connector-java-5.1.40-bin.jar |
/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib | 把 | mysql |
connector-java-5.1.40-bin.jar | 放 到 | /opt/cloudera/parcels/CDH-5.8.0- |
1.cdh5.8.0.p0.42/lib/hive/lib 中。 cd
/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/libls|more 确认已经
放进去了。
然后点击右下角的重试。
可能遇到的问题---启动 Oozie, Impala---Create Oozie Database Tables 失败
Error: Could not connect to the database: java.lang.ClassNotFoundException:
com.mysql.jdbc.DriverStack trace for the error was (for debug purposes):-------
-------------------------------java.lang.Exception: Could not connect to the
database: java.lang.ClassNotFoundException:
com.mysql.jdbc.Driverat
org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:905)at
org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:185)at
org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:129)at
org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:80)Caused
by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat
java.Net.URLClassLoader.findClass(URLClassLoader.java:381)at
java.lang.ClassLoader.loadClass(ClassLoader.java:424)at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at
java.lang.ClassLoader.loadClass(ClassLoader.java:357)at
java.lang.Class.forName0(Native Method)at
java.lang.Class.forName(Class.java:264)at
org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:894)at
org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:901)... 3
more--------------------------------------
40 / 43
+ '[' 0 = 1 ']'+ '[' CLOUDERA_MYSQL_CONNECTOR_JAR '!=' '' ']'+ eval
'JAR_LOCATION=$CLOUDERA_MYSQL_CONNECTOR_JAR'++
JAR_LOCATION=/usr/share/java/mysql-connector-java.jar+ echo 'Copying JDBC jar
from /usr/share/java/mysql-connector-java.jar to /var/lib/oozie'+
cp /usr/share/java/mysql-connector-java.jar /var/lib/oozie/cp: cannot stat
`/usr/share/java/mysql-connector-java.jar': No such file or directory+
OOZIECPPATH=
跟 hive 启动的问题一样,缺少驱动。
Oozie的 lib 包中缺少 mysql 的驱动导致的。我们之前已经把 mysql 驱动包 mysql-connectorjava-*-bin.jar 放到主节点 cm0 的/opt 中,现在复制一份到/opt/cloudera/parcels/CDH-
5.8.0-1.cdh5.8.0.p0.42/lib/Oozie/lib(这里 CDH-5.8.0-1.cdh5.8.0.p0.42 要跟自己的
版本对应)
再复制一份到/var/lib/oozie/
使用命令如下把 mysql-connector-java-5.1.40-bin.jar
放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib 中。
cd /opt/mysql-connector-java-5.1.40
cp mysql-connector-java-5.1.40-bin.jar /opt/cloudera/parcels/CDH-5.8.0-
1.cdh5.8.0.p0.42/lib/oozie/lib
cp mysql-connector-java-5.1.40-bin.jar /var/lib/oozie
cd /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib
ls|more
确认已经放进去了。
41 / 43
cd /var/lib/oozie
ls|more
点击右下角重试。
1.8.6 JAVA_HOME 竟然找不到了,但只是 spark 找不到,其它 hdfs、 yarn 等都好的
42 / 43
我做了 2 个尝试,就好了,也不知道到底是哪个是有效操作,还是 2 个操作是有依赖的。
尝试一:
cat /etc/environment
然后在 web 上点“重试” 试试看。不行的话:
尝试二:
find / -type f -name "*.sh" | xargs grep "as ALT_NAME"
定位到/opt/program/cm-5.9.0/lib64/cmf/service/client/deploy-cc.sh
直接在上面加上
JAVA_HOME=/opt/java
export JAVA_HOME=/opt/java
scp 到每个节点(我们这里不一定有 scp.sh 这个脚本,但是可以通过 scp 的命令, 把 deploycc.sh 这个命令分别发到 node1,, node2 上去)
#./scp.sh /opt/program/cm-5.9.0/lib64/cmf/service/client/deploy-cc.sh
/opt/program/cm-5.9.0/lib64/cmf/service/client/
再搞一遍这个
cat /etc/environment
然后再点“重试” 就好了
1.8.6 如果有更多的问题可以参考如下帖子去解决
http://www.linuxidc.com/Linux/2017-01/139518.html
点击完成后会进入监控界面。如果有红色的话,还是需要我们去解决的。。。
43 / 43
1.9 集群安装完成
到这里我们的安装就算完成了。为了以后的修复方便,我们可以对分别对 linux 系统进行备
份。虚拟机的就很方便,直接复制压缩虚拟机文件即可。