Cloudera Hadoop生态概要总结

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函数,输入输出为键值对;

  • 用户编写MR程序,通过Client提交到JobTracker,JobTracker将任务分发到TaskTrackers执行,JobTracker与TaskTracker间通过心跳机制通信;

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

impala_arch.jpeg

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)

你可能感兴趣的:(Cloudera Hadoop生态概要总结)