Hadoop 中的数据处理:Hadoop 组件解释 [2022]
已发表: 2021-01-03随着万维网多年来的指数级增长,生成的数据也呈指数级增长。 这导致创建了大量数据,并且很难使用传统的关系数据库系统处理和存储如此庞大的数据量。
此外,创建的数据不仅是结构化形式,还包括视频、图像等非结构化格式。这种数据不能被关系数据库处理。 为了解决这些问题,Hadoop 应运而生。
在深入研究 Hadoop 的数据处理之前,让我们先了解一下 Hadoop 及其组件。 Apache Hadoop 是一个允许以快速有效的方式存储和处理大量数据的框架。 它可用于存储大量结构化和非结构化数据。 了解有关 hadoop 生态系统和组件的更多信息。
Hadoop 的关键构建块如下:
目录
Hadoop的构建块
1. HDFS(存储层)
顾名思义,Hadoop分布式文件系统是Hadoop的存储层,负责将数据存储在分布式环境中(主从配置)。 它将数据拆分为多个数据块,并将它们存储在不同的数据节点上。 这些数据块也会在不同的数据节点之间复制,以防止在其中一个节点出现故障时丢失数据。
它有两个用于处理数据的主要进程:-

一种。 名称节点
它在主机上运行。 它保存存储在文件系统中的所有文件的位置,并跟踪数据在集群中的位置,即它存储文件的元数据。 当客户端应用程序想要对数据进行某些操作时,它会与 NameNode 进行交互。 当 NameNode 收到请求时,它通过返回所需数据所在的 Data Node 服务器列表来响应。
湾。 数据节点
这个过程在每台从机上运行。 它的功能之一是将每个 HDFS 数据块存储在其本地文件系统中的单独文件中。 换句话说,它包含块形式的实际数据。 它周期性地发送心跳信号并等待来自NameNode的请求访问数据。
2. MapReduce(处理层)
它是一种基于 Java 的编程技术,用于 Hadoop 框架之上,用于更快地处理大量数据。 它使用许多数据节点在分布式环境中处理这些庞大的数据,从而以容错的方式实现并行处理和更快的操作执行。
MapReduce 作业将数据集拆分为多个数据块,这些数据块进一步转换为键值对,以便由映射器处理。 数据的原始格式可能不适合处理。 因此,与映射阶段兼容的输入数据是使用 InputSplit 函数和 RecordReader 生成的。
InputSplit 是要由单个映射器处理的数据的逻辑表示。 RecordReader 将这些拆分转换为采用键值对形式的记录。 它基本上将输入的面向字节的表示转换为面向记录的表示。
然后将这些记录馈送到映射器以进一步处理数据。 MapReduce 作业主要由三个阶段组成,即 Map 阶段、Shuffle 阶段和 Reduce 阶段。
一种。 地图阶段
这是数据处理的第一阶段。 map 阶段的主要任务是处理来自 RecordReader 的每个输入,并将其转换为中间元组(键值对)。 此中间输出由映射器存储在本地磁盘中。

这些键值对的值可能不同于从 RecordReader 接收的输入值。 map 阶段还可以包含组合器,也称为本地化简器。 它们对数据执行聚合,但仅在一个映射器的范围内。
由于计算是在不同的数据节点上执行的,因此与同一键关联的所有值都必须合并到一个 reducer 中。 此任务由分区程序执行。 它对这些键值对执行哈希函数以将它们合并在一起。
它还确保所有任务都均匀地分配给减速器。 当我们使用多个减速器时,分区器通常会出现。
湾。 洗牌和排序阶段
此阶段将从映射器获得的中间输出传输到化简器。 这个过程称为洗牌。 映射器的输出在传输到减速器之前也会进行排序。 排序是根据键值对中的键完成的。 它甚至可以在接收到整个数据之前帮助化简器对数据执行计算,并最终有助于减少计算所需的时间。
随着键的排序,每当reducer 获得不同的键作为输入时,它就会开始对先前接收的数据执行reduce 任务。
C。 减少阶段
map阶段的输出作为reduce阶段的输入。 它采用这些键值对并对它们应用 reduce 函数以产生所需的结果。 键和与键关联的值被传递给 reduce 函数以执行某些操作。
我们可以过滤数据或将其组合以获得聚合输出。 在 reduce 函数执行后,它可以创建零个或多个键值对。 该结果被写回到 Hadoop 分布式文件系统中。
3. YARN(管理层)
Yet Another Resource Navigator 是 Hadoop 的资源管理组件。 每个节点上运行着后台进程(从机上的节点管理器和主节点上的资源管理器),它们相互通信以分配资源。 资源管理器是 YARN 层的核心,它管理所有应用程序之间的资源并将请求传递给节点管理器。

节点管理器监视机器的内存、CPU 和磁盘等资源利用率,并将其传送给资源管理器。 它安装在每个数据节点上,负责执行数据节点上的任务。
必读:面向大数据工程师的 10 大 Hadoop 工具
结论
Hadoop上数据处理的整个工作流程可以总结如下:
- 输入分割; 逻辑上将驻留在 HDFS 上的数据拆分为多个数据块。 如何拆分数据的决定由Inputformat完成。
- RecordReader 将数据转换为键值对。 RecordReader 将面向字节的数据转换为面向记录的数据。 该数据用作映射器的输入。
- 映射器只是一个用户定义的函数,处理这些键值对并生成中间键值对以供进一步处理。
- 这些对通过组合器在本地减少(在一个映射器的范围内),以减少要从映射器传输到减速器的数据量。
- Partitioner 确保所有具有相同 key 的值都合并到同一个 reducer 中,并且任务在 reducer 之间均匀分布。
- 然后将这些中间键值对打乱到 reducer 并根据键进行排序。 这个结果作为输入提供给减速器。
- reduce 函数聚合每个键的值,然后使用 RecordWriter 将结果存储回 HDFS。 在将其写回 HDFS 之前,应写入的数据格式由Outputformat决定。
如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。
从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。