Hadoop生态圈

Hadoop框架
Hadoop生态圈

主要服务介绍

软件 解析 备注
HDFS 分布式存储数据,数据分散存储 一个存储文件在HDFS中被分成若干个小块,每个小块被存储在不同的服务器上
MapReduce 第一代分布式计算框架 — 分布式计算(将任务 分布在多个服务器上,服务器越多,计算越快) Map阶段—多台机器同时读取文件内容,分别做统计。Reduce阶段— 将Map结果作为输入,进行汇总,整理,输出结果
Tez、Spark 第二代分布式计算框架 计算框架
Yarn 分布式资源管理器 管理多种计算模型,为各个模型分配资源
Spark 以内存换效率 中间计算结果不落地,在内存中直接进入下一步骤
HBase 分布式列存储数据库(非关系型数据库) 负责HDFS文件的读取,写入,速度快
Hive 数据仓库 类似于SQL实现数据库查询的语言,将SQL转化为MapReduce 程序
Oozie 工作流调度器 对有依赖关系的程序,依次执行
Sqoop 数据库系统的导入 将MYSQL数据库导入到 HDFS中
Pig 数据库导入任务,映射到MapReduce中执行 减少用户自行编写 Java程序
Flume 日志收集工具 节约数据传输开销,同时可以对数据日志进行简单处理,将日志写成各种数据目标
Kafka 分布式消息队列 生产者、消费者
ZooKeeper 分布式协作服务 解决单点故障问题

HDFS(分布式文件系统)

  • 提供分布式存储支持的系统,上层的很多计算框架(Hbase、Spark等)等依赖于HDFS存储
  • 主要由 NameNode、DataNode 两部分组成
  • NameNode 是 HDFS的管理节点,存储数据元(文件对应的数据块、文件大小、文件权限等),同时负责读、写调度和存储分配
  • DataNode 节点是真正的存储节点,用来存储数据和,在DataNode上每个数据块会根据设置副本数进行分级复制,保证同毅文件的每个数据块副本都不在同一个机器上

MapReduce(分布式计算框架) — 离线计算(非实时计算)

  • Map阶段—多台机器同时读取文件内容,分别做统计。Reduce阶段— 将Map结果作为输入,进行汇总,整理,输出结果

Yarn(分布式资源管理器)

  • 支持CPU和内存两种资源管理
  • 资源管理由 ResourceManager(RM)、applicationMaster(AM)、NodeManager(NM) 共同完成
  • RM 负责对NM 上的资源进行统一管理和调度
  • NM 负责 资源的供给 和隔离
  • AM 用户提交应用程序后,会创建一个跟踪和管理这个程序的AM,负责向RM申请资源,并要求NM启动指定资源的任务
  • 可以管理多种计算模型,如Spark、Storm、MapReduce、Flink 都可以放在 Yarn 下进行统一管理

Spark(内存计算) — 内存中分布式计算(内存换效率)

  • MapReduce 是将每一步的中间计算结果存入到磁盘中,下一步进行使用时,在从磁盘中取出。
  • Spark 任务则在计算过程中,中间结果不会落地,直接进入下 一步骤,最终将最后的结果写入磁盘

HBase(分布式列存储数据库)

  • 面向列存储的数据 — 非关系型数据库(NoSQL)
  • 将不同数据的同一属性值存储在一起,在查询时,只遍历需要的数据,实现数据即是索引
  • 内部管理的文件全部存储在HDFS中。
  • 适用场景 — 交易历史查询操作,查询场景简单,检索条件少,每秒几万行数据更新。

Hive(数据仓库)

  • 一种类似 SQL的查询语言(HQL),可以将 SQL 转化为 MapReduce 任务在Hadoop 上执行

Oozie(工作流调度器)

  • 在执行多个任务时,任务之间有依赖关系,一个任务的开启需要依赖另一个任务的完成
  • Oozie 是一个基于共工作流引擎的调度器,是一个运行在Java Servlet容器(如Tomact)中的Javas Web 应用,可运行 Hadoop 的 MapReduce 和Pig等任务
  • 工作流通过 hPDL 定义,工作流操作通过远程系统启动任务,当任务完成后,远程系统会回调通知任务结束,然后再开始下一个操作

Sqoop 和 Pig

  • 将原有 MYSQL数据库文件导入到HDFS系统中。Sqoop (SQL-to-Hadoop)实现
  • Pig 是一种数据流语言,可以完成 排序,过滤,求和,关联等操作,支持自定义函数,将数据映射到MapReduce作业,上传到集群运行,减少用户编写Java 程序的苦恼

Flume(日志收集工具)

  • 数据传输机制,保证数据传输的实时性,完整性,及节约带宽
  • 将数据从生产、传输、处理并最终写入目标路径的过程,抽象为数据流,数据原 支持再 Flume中定制数据发送方,从而支持收集各种不同协议数据
  • 同时提供对 日志数据进行简单处理的能力,如过滤,格式转换。
  • 具有 将日志写往各种数据目标(文件、HDFS、网络)的能力
  • Hadoop 平台主要是通过 Flume 将数据从源服务器写入Hadoop 的HDFS中

Kafka(分布式消息队列)

  • 实时处理大量数据以满足各种需求的场景
  • 作为多种类型的 数据管道和消息系统使用

ZoopKeeper(分布式协作服务)

  • 针对单点故障,一般采用双机热备份处理,但由于网络问题,容易 造成双主节点问题
  • 两个节点启动后 ,都会去ZooKeeper中进行注册信息,ZooKeeper对先注册的节点A进行锁定,对两个节点进行选取,对节点 B 进行阻塞备用,如果 A故障,这时 ZooKeeper 删除 A节点注册 信息,启用 B 节点

Ambari(大数据运维工具)

  • 大数据基础运维平台,实现生态圈各种组件的自动化部署,服务管理和监控警告
  • Ambari 通过 puppet 实现自动化安装和配置
  • 通过 Ganglia 收集监控度量指标
  • 通过 Nagios 实现故障警报
  • Ambari 已支持大多数 Hadoop 组件,包括 HDFS、MapReduce、Oozie、Hive、Pig、 Hbase、ZooKeeper、Sqoop、Kafka、Spark、Druid、Storm 等几十个常用的 Hadoop 组件