1 CDH
1.1 生态体系
CDH生态体系中,自底向上归纳为下面四大部分:
- 数据迁移层:通过批量加载处理(Sqoop)、流式实时传输(Flume、Kafka)将数据移入移出Hadoop;
- 数据存储层:主要包括具有高批处理性的HDFS,具有高随机读写性的HBase,以及批处理性和随机读写性介于两者之间的Kudu;
- 资源管理与安全管制层:由Yarn提供资源管理,Sentry提供安全管制;
-
数据处理分析层:
- 数据处理主要由适用于大型数据集离线批处理的MapReduce,以及基于内存快速处理的Spark完成;
- 数据分析主要由适用对于大数据集的批处理作业Hive,以及提供实时交互查询的Impala;
-
此外还包括直接使用简单自然语言访问数据的搜索服务Apache Solr;
CDH.png
1.2 各层相关组件概念及原理
1.2.1 数据迁移层
Sqoop
-
用于将关系型数据库与Hadoop生态(HDFS,HBase,Hive)中的数据进行相互转移;
-
通过MapReduce任务(主要为Map),映射传输关系型数据库与Hadoop中的数据;
-
基于JDBC和关系型数据库进行交互;
Sqoop.png
Kafka
-
一个用于构建实时数据管道和流应用程序的分布式消息系统;
-
客户端和服务器之间的通信是通过TCP协议完成;
-
作为一个集群运行在一个或多个可跨多个数据中心的服务器上;
-
Kafka集群以Topic的形式存储流记录信息;
Kafka.png
Flume
-
一个分布式日志采集系统,同时也采集网络流量数据、社交媒体生成的数据、电子邮件消息等多种信息;
-
Event为数据传输的基本单元,由载有数据的字节数组和可选的headers头部信息构成;
-
使用事务的方式确保Event的可靠传输;
-
Agent 是一个 (JVM) 进程;
Flume.png
1.2.2 数据存储层
HDFS
-
分布式文件存储系统,主从式架构(Master/Slave);
-
每个文件具有多个备份;
-
包括NameNode、SecondaryNameNode、DataNode三大角色;
-
NameNode主要负责文件系统命名控件的管理,存储文件目录的Metadata元数据信息等;
-
SecondaryNameNode主要用于备份NameNode中的元数据信息,加快集群启动时间等;
-
DataNode主要负责存储客户端发送的Blok数据块,执行数据块的读写操作;
-
NameNode与DataNode通过心跳机制进行通信;
HDFS.png
HBase
-
分布式NoSQL数据库,列存储;
-
客户端访问数据时采用三级寻址:ZooKeeper文件---> -ROOT-表---> .META.表--->用户数据表;
-
查询时采用惰性缓存机制,当客户端通过已有的缓存去具体的region服务器中没有找到时,再通过三级寻址,将最新的地址进行缓存;
-
数据先写入MemStore缓存,并在Hlog中记录,系统周期性的将MemStore中的内容写入StoreFile文件,当StoreFile过大时,会触发分裂操作;
HBase.png
1.2.3 资源管理与安全管制层
YARN
- 资源管理调度框架,将资源管理、作业调度/监控分成两个独立的守护进程,分别由ResourceManager、ApplicationMaster负责;
- ResourceManager 包括Scheduler、ApplicationsManager;
- Scheduler 负责为应用程序分配资源;
- ApplicationsManager 负责处理提交的作业,与NodeManager通信 ,要求其为应用程序启动ApplicationMaster,并在任务失败时重新启动ApplicationMaster的服务;
- NodeManager 为所在机器的代理,负责监视Container资源使用情况,并将其报告给Scheduler;
- Container 包括CPU、内存、磁盘、网络等资源,是一个动态资源划分单位,具体资源量根据提交的应用程序的需求而变化;
- ApplicationMaster 为运行应用程序向ResourceManager申请资源、与NodeManager通信以启动或者停止任务、监控所有任务的运行情况;
-
CDH动态资源池默认采用的DRF( Dominant Resource Fairness)计划策略。当内存不够时,空虚的 CPU 不会再被分配任务;当CPU 不够时,多余的内存也不会再启动任务
Yarn.png
Sentry
-
a pluggable authorization engine
-
可自定义授权规则以验证用户或应用程序对Hadoop资源的访问请求
-
高度模块化(pluggable ),可以支持Hadoop中各种数据模型的授权
-
Sentry Server 管理授权元数据,提供安全检索和操作元数据的接口
-
Sentry Plugin 提供操作存储在Sentry Server中的授权元数据的接口,以及 authorization policy engine
Sentry.png
1.2.4 数据处理分析层
MapReduce
-
离线分布式计算框架;
-
分而治之,任务分解,结果汇总;
-
自定义map、reduce函数,输入输出为<key, value>键值对;
-
用户编写MR程序,通过Client提交到JobTracker,JobTracker将任务分发到TaskTrackers执行,JobTracker与TaskTracker间通过心跳机制通信;

Hive
- 基于Hadoop的一个数据仓库工具,适用于离线批处理作业;
- Hive 本身不存储数据,而是管理存储在HDFS上的数据,其主要是通过Hive Driver将用户的SQL语句解析成对应的MapReduce程序;
- 不支持事务;
- Metastore Database 独立的数据库,依赖于传统的RDBMS,如MySQL或PostgreSQL,保存有关Hive数据库、表、列、分区和Hadoop底层数据文件和HDFS块位置等的元数据;
- Driver:包括编译器、优化器、执行器,根据用户编写的 Hive SQL 语句进行解析、编译优化、生成执行计划,然后调用Hadoop的MapReduce计算框架,形成对应的 MapReduce Job;

Impala
-
对HDFS、HBase中的数据提供交互式SQL查询
-
Hive Metastore 存储Impala可访问数据的元数据信息 (Impala 中表的元数据存储借用的是 Hive中的Metastore)
-
Statestore 监控集群中各个Impala节点的健康状况,提供节点注册,错误检测等
-
Impala Daemon(Impalad) 运行在集群每个节点上的守护进程(与DataNode在同一主机上运行)。每个 Impalad 进程,都包含有Query Planner、Query Coordinator、Query Exec Engine三大模块
-
QueryPalnner 接收来自Clients的SQL语句,并解释成为执行计划
-
Query Coordinator 将执行计划进行优化和拆分,形成执行计划片段,并调度这些片段分发到各个节点上
-
Query Exec Engine 负责执行计划片段,最后返回中间结果,这些中间结果经过聚集之后最终返回给Clients
-
Hive 适合于长时间的批处理查询分析,而 Impala 适合于实时交互式 SQL 查询。 Hive本身并不执行任务的分析过程,而是依赖于MapReduce执行框架。而Impala没有使用 MapReduce 进行并行计算, Impala 把整个查询分析成一个执行计划树,而不是一连串的 MapReduce 任务, 它使用与商用并行关系数据库 MPP 中类似的查询机制

2 Cloudera Manager
2.1 功能简述
- 一个用于管理CDH群集的端到端的应用程序;
- 自动化Hadoop安装过程, 缩短部署时间;
- 提供实时的集群概况,例如节点、服务的运行状况;
- 提供了集中的中央控制台对集群的配置进行更改;
- 整合了各种报告和诊断工具,帮助优化性能和利用率;
2.2 整体架构
- Server:Cloudera Manager的核心,管理Web服务器和应用程序逻辑,负责安装软件,配置,启动和停止服务,以及管理运行服务的集群;
- Agent:安装在集群中的主机上, 负责启动和停止进程,解压缩配置,触发安装和监视主机;
- Management Service: 执行各种监视,警报和报告等功能;
- Database: 存储集群的配置、监控等信息;
- Cloudera Repository: Cloudera Manager分发的软件仓库;
-
Clients:提供与Server交换的接口
- Admin Console:管理员管理集群和Cloudera Manager的Web UI界面;
-
API:提供开发人员创建自定义的Cloudera Manager应用程序;
cm_arch.png
参考资料
-
Cloudera Enterprise 6.2.x Document
-
《Cloudera Hadoop 大数据平台实战指南》
-
各组件官网(Sqoop,Kafka,Flume,Hadoop,Spark,Hive,Impala,Sentry,HBase)
网友评论