将数据上传/插入到 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 时是不是涉及映射器减速器?的主要内容,如果未能解决你的问题,请参考以下文章
keycloak 客户端协议映射器(脚本映射器)将请求标头添加到令牌中
根据映射器代码中的某些逻辑,将映射器中的一些数据(行)写入单独的目录