将数据上传/插入到 HDFS 时是不是涉及映射器减速器?

Posted

技术标签:

【中文标题】将数据上传/插入到 HDFS 时是不是涉及映射器减速器?【英文标题】:Are mappers reducers involved while uploading/Inserting data to HDFS?将数据上传/插入到 HDFS 时是否涉及映射器减速器? 【发布时间】:2017-04-09 19:29:39 【问题描述】:

我在这里有一个很大的困惑。当我们将数据上传/插入/放入 HADOOP HDFS 时,我们知道数据是根据块大小存储在块中的和复制因子。而且 Map reduce 只在处理数据时起作用。

当我在我的一个表中插入任何数据时,我正在使用 MRV2,我可以看到有 MAP REDUCE 进度条。那么这里的确切图片是什么。实际上,插入时是否涉及映射器和减速器/上传数据到HDFS?

【问题讨论】:

【参考方案1】:

是否需要 MapReduce 取决于写入操作的类型。

hdfs dfs -put-copyFromLocal 等操作在将数据从 LocalFS 写入 HDFS 时不使用 MapReduce。而DistCp,用于执行集群间/集群内 HDFS 数据复制,使用 Mappers。同样,Sqoop 使用映射器将数据导入 HDFS。 Hive 的 LOAD 语句不会,而 INSERT 的语句会。

它们是 Mapper 唯一的 MapReduce 作业。

当我在我的一张表中插入任何数据时,我正在使用 MRV2

我假设,您正在将数据插入 Hive 表。 INSERT Hive 中的语句使用 Mappers。

在插入/上传时是否涉及映射器和缩减器 数据到 HDFS?

并非总是如此。基于写操作,涉及到映射器。

【讨论】:

我尝试了所有的东西。插入,distcp 涉及映射器和减速器。感谢您的时间! @franklinsijo【参考方案2】:

HDFS 客户端在与 namenode 协商块位置后直接写入数据节点。不需要映射器或减速器。

参考:Architecture of HDFS Read and Write

因为有进度条,不代表它是 MapReduce 进程。

如果写入 HDFS 的每个文件都是 MapReduce 进程,那么 YARN ResourceManager UI 会全部记录下来,所以如果你不相信我,请检查那里

【讨论】:

【参考方案3】:

从本地复制数据或将数据放入 HDFS 时不使用 MapReduce。

【讨论】:

以上是关于将数据上传/插入到 HDFS 时是不是涉及映射器减速器?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Pig 将多个文件输入到一个映射器中

将文件从 AWS EMR 集群中的映射器上传到 S3

keycloak 客户端协议映射器(脚本映射器)将请求标头添加到令牌中

根据映射器代码中的某些逻辑,将映射器中的一些数据(行)写入单独的目录

Mapreduce:在单个作业中同时从 mapper 和 reducer 写入

SQL - 数据库表映射器 - 基于选择和连接插入表