【大数据】图解 Hadoop 生态系统及其组件

图解 Hadoop 生态系统及其组件

在了解 Hadoop 生态系统及其组件之前,我们首先了解一下 Hadoop 的三大组件,即 HDFS、MapReduce、YARN,它们共同构成了 Hadoop 分布式计算框架的 核心

  • HDFSHadoop Distributed File System):HDFS 是 Hadoop 的 分布式文件系统,它是将大规模数据分散存储在多个节点上的基础。HDFS 主要负责数据的存储和管理,可以将大数据集分成多个数据块,并将这些数据块分配到不同的计算节点上存储,提高数据的可靠性和处理效率。

  • MapReduce:MapReduce 是 Hadoop 的 分布式计算框架,它提供了一种简单的编程模型,通过将大规模数据分解成多个小任务并行处理,可以大大提高数据处理的效率。MapReduce 模型包括 Map 和 Reduce 两个阶段,其中 Map 阶段将数据分解成多个小块进行处理,Reduce 阶段将处理结果合并。

  • YARNYet Another Resource Negotiator):YARN 是 Hadoop 的 资源管理器,它负责为多个应用程序分配和管理计算资源,可以有效地提高计算资源的利用率。YARN 可以将集群中的计算资源划分为多个容器,为不同的应用程序提供适当的资源,并监控和管理各个应用程序的运行状态。

1.HDFS

HDFS 是 Hadoop 的分布式文件系统,旨在在廉价硬件上存储大型文件。它具有高度容错能力,并为应用程序提供高吞吐量。 HDFS 最适合那些拥有非常大数据集的应用程序。

Hadoop HDFS 文件系统提供 Master 和 Slave 架构。主节点运行 Namenode 守护进程,从节点运行 Datanode 守护进程。

2.MapReduce

MapReduce 是 Hadoop 的数据处理层,它将任务分成小块,并将这些小块分配给通过网络连接的许多机器,并将所有事件组装成最后的事件数据集。 MapReduce 所需的基本细节是键值对。所有数据,无论是否结构化,在通过 MapReduce 模型传递之前都需要转换为键值对。在 MapReduce 框架中,处理单元被移至数据,而不是将数据移至处理单元。

3.YARN

YARN 代表 Yet Another Resource Negotiator,它是 Hadoop 集群的资源管理器。 YARN 用于实现 Hadoop 集群中的资源管理和作业调度。 YARN 的主要思想是将作业调度和资源管理拆分到各个进程中进行操作。

YARN 提供了两个守护进程;第一个称为资源管理器(Resource Manager),第二个称为节点管理器(Node Manager)。这两个组件都用于处理 YARN 中的数据计算。资源管理器运行在 Hadoop 集群的主节点上,并协商所有应用程序中的资源,而节点管理器托管在所有从节点上。节点管理器的职责是监视容器、资源使用情况(例如 CPU、内存、磁盘和网络)并向资源管理器提供详细信息。

4.Hive

Hive 是 Hadoop 的 数据仓库 项目。 Hive 旨在促进非正式数据汇总、即席查询和大量数据的解释。借助 HiveQL,用户可以对 HDFS 中的数据集存储执行即席查询,并使用该数据进行进一步分析。 Hive还支持自定义的用户定义函数,用户可以使用这些函数来执行自定义分析。

让我们了解 Apache Hive 如何处理 SQL 查询:

  • 用户将使用命令行或 Web UI 向驱动程序(例如 ODBC / JDBC)提交查询。
  • 驱动程序将借助查询编译器来解析查询以检查语法 / 查询计划。
  • 编译器将向元数据数据库发送元数据请求。
  • 作为响应,Metastore 将向编译器提供元数据。
  • 现在编译器的任务是验证规范并将计划重新发送给驱动程序。
  • 现在驱动程序将向执行引擎发送执行计划。
  • 该程序将作为映射缩减作业执行。执行引擎将作业发送到名称节点作业跟踪器,并为该作业分配一个存在于数据节点中的任务跟踪器,并在此处执行查询。
  • 查询执行后,执行引擎将从数据节点接收结果。
  • 执行引擎将结果值发送给驱动程序。
  • 驱动程序会将结果发送到 Hive 接口(用户)。

5.Pig

Pig 由 Yahoo 开发,用于分析存储在 Hadoop HDFS 中的大数据。 Pig 提供了一个分析海量数据集的平台,该平台由用于通信数据分析应用程序的高级语言组成,并与用于评估这些程序的基础设施相链接。

Pig 具有以下关键属性:

  • 优化机会:Pig 提供了查询优化,帮助用户专注于意义而不是效率。
  • 可扩展性:Pig 提供了创建用户定义函数以进行特殊用途处理的功能。

6.Mahout

Mahout 是一个用于 创建机器学习应用程序的框架。它提供了一组丰富的组件,您可以通过选择的算法构建定制的推荐系统。 Mahout 的开发目的是提供执行、可扩展性和合规性。

以下是定义这些关键抽象的 Mahout 接口的重要包:

  • DataModel
  • UserSimilarity
  • ItemSimilarity
  • UserNeighborhood

7.HBase

HBase 是继 Google Bigtable 之后创建的分布式、开源、版本化、非关系型数据库。它是 Hadoop 生态系统的重要组件,利用 HDFS 的容错功能,提供对数据的实时读写访问。 HBase 尽管是数据库,但也可以称为数据存储系统,因为它不提供触发器、查询语言和二级索引等 RDBMS 功能。

HBase 具有以下功能:

  • 它提供持续的模块化可扩展性。
  • 它提供定期的读取和写入。
  • 直观且可配置的表分片。
  • RegionServer 之间的自动故障转移支持。
  • 它提供中央基类,用于支持带有 Apache HBase 表的 Hadoop MapReduce 作业。
  • 使用 Java API 进行客户端访问很简单。
  • 查询谓词通过服务器端过滤器下推。
  • 它提供了 Thrift 网关和 REST-ful Web 服务,支持 XML、Protobuf 和二进制数据编码选择。

8.Zookeeper

Zookeeper 充当 Hadoop 不同服务之间的协调者,用于维护配置信息、命名、提供分布式同步、提供群组服务。 Zookeeper 用于修复这些新部署在分布式环境中的应用程序的错误和竞争条件。

9.Sqoop

Sqoop 是一个数据传输工具,用于在 Hadoop 和关系数据库之间传输数据。它用于将数据从关系数据库管理系统(MySQL 或 Oracle)或大型机导入到 Hadoop(HDFS),并在 Hadoop MapReduce 中转换数据。它还用于将数据导出回 RDBMS。 Sqoop 使用 map-reduce 来导入和导出数据,因此它具有并行处理和容错特性。

10.Flume

Flume 是一种类似于 Sqoop 的日志传输工具,但它适用于非结构化数据(日志),而 Sqoop 用于结构化和非结构化数据。 Flume 是一个可靠、分布式且可用的系统,用于高效地收集、聚合大量日志数据并将其从许多不同的源移动到 HDFS。它不仅限于日志数据聚合,还可以用于传输大量事件数据。

Flume 具有以下三个组件:

  • Source
  • Channel
  • Sink

11.Oozie

Oozie 是一个 工作流调度框架,用于调度 Hadoop Map / Reduce 和 Pig 作业。 Apache Oozie 工作流程是 Hadoop Map / Reduce 作业、Pig 作业等操作的集合,排列在控制依赖 DAG(有向无环图)中。从一个动作到另一个动作的 "控制依赖性" 表明,除非第一个动作完成,否则另一个动作不会开始。

Oozie 工作流有以下两个节点,即 控制流节点操作节点

  • 控制流节点Control Flow Nodes):这些节点用于提供控制工作流执行路径的机制。

  • 操作节点Action Node):操作节点提供了一种机制,工作流通过该机制触发计算 / 处理任务的执行,例如 Hadoop MapReduce、HDFS、Pig、SSH、HTTP 作业 。

12.Ambari

Ambari 用于配置、管理和监控 Apache Hadoop 集群。

它向系统管理员提供以下任务:

  • Hadoop 集群的配置:它提供了一种在任意数量的节点上安装 Hadoop 服务的媒介。它还处理集群的 Hadoop 服务配置。

  • Hadoop 集群的管理:它提供了一个中央控制来管理 Hadoop 服务,例如整个集群的启动、停止和重新配置。

  • Hadoop 集群监控:它提供了一个用于监控 Hadoop 集群的仪表板(例如节点关闭、剩余磁盘空间不足等)。

13.Spark

Spark 是一个通用且快速的集群计算系统。它是一个非常强大的大数据工具。 Spark 提供了 Python、Scala、Java、R 等多种语言的丰富 API。 Spark 支持 Spark SQL、GraphX、MLlib、Spark Streaming、R 等高级工具。这些工具用于执行不同类型的操作,我们将在 Spark 部分中看到。

相关推荐
金刚猿1 分钟前
简单理解下基于 Redisson 库的分布式锁机制
分布式·分布式锁·redisson
DolphinScheduler社区15 分钟前
大数据调度组件之Apache DolphinScheduler
大数据
SelectDB技术团队16 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
我一直在流浪24 分钟前
Kafka - 消费者程序仅消费一半分区消息的问题
分布式·kafka
panpantt3211 小时前
【参会邀请】第二届大数据与数据挖掘国际会议(BDDM 2024)邀您相聚江城!
大数据·人工智能·数据挖掘
青云交1 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
大数据·性能优化·impala·案例分析·代码示例·跨数据中心·挑战对策
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
soso19682 小时前
DataWorks快速入门
大数据·数据仓库·信息可视化
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
java1234_小锋2 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins