jjzjj

hadoop - 在 hadoop 中,跨 mapper reducer 多个输入保存状态的能力是什么意思?

问题的标题解释了我的问题是什么。我一直在阅读多篇文章,遇到这条线的答案Throughuseofthecombinerandbytakingadvantageoftheabilitytopreservestateacrossmultipleinputs,itisoftenpossibletosubstantiallyreduceboththenumberandsizeofkey-valuepairsthatneedtobeshuffledfromthemapperstothereducers.我无法理解这个概念。一个详尽的答案和一个例子的解释会很有帮助。如何培养直觉来理解这些概念?

java - 如何在 hadoop 作业中将 'Text' 作为 Mapper 输入键传递?

我的文件内容是这样的。TestKey,TestValueTestKey1,TestValue1我想将MapperKey作为TestKey传递,将MapperValue作为TestValue传递等等。所以我尝试编写CustomRecordReader来实现这一点。但是它会抛出类似CannotcastLongWritablewithText的错误。我如何将文本作为我的映射器输入键传递?非常感谢对此的任何帮助。谢谢,香卡 最佳答案 看来您需要将输入格式更改为KeyValueTextInputFormat并将分隔符设置为mapreduce.

java - MapReduce 期间的磁盘溢出

我有一个非常基本的问题,我正在尝试寻找答案。我正在查看文档以了解在map阶段、洗牌阶段和减少阶段数据溢出到哪里?就像MapperA有16GB的RAM,但是如果为映射器分配的内存已经超过,那么数据就会溢出。数据是溢出到HDFS还是会溢出到磁盘上的tmp文件夹?在shuffle阶段,数据从一个节点流式传输到另一个节点,并存储在HDFS或临时存储位置。我问这些问题的原因是想弄清楚在工作完成后是否需要清理过程。请帮忙。 最佳答案 Mapper的中间文件(溢出文件)存储在运行Mapper的工作节点的本地文件系统中。类似地,从一个节点流向另一个

r - Hadoop streaming reducer 到 mapper

我正在用R编写Hadoop流作业,我遇到了一个相当奇怪的情况,我找不到任何文档。我想运行一个直接传递给另一个映射器的缩减作业(不需要映射器)。是否可以在没有初始映射器的情况下直接在缩减作业之后堆叠映射作业?如果我编写一个身份映射器将输出传递到我的reduce作业,我能否将reduce输出传递给另一个映射器,如果可以,如何传递?我当前的代码是:$HADOOP_HOME/bin/hadoopjar/opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoo

java - 一个 mapreduce 程序的输出作为另一个 mapreduce 程序的输入

我正在尝试一个简单的示例,其中一个MapReduce作业的输出应该是另一个MapReduce作业的输入。流程应该是这样的:Mapper1-->Reducer1-->Mapper2-->Reducer2(Mapper1的输出必须是Reducer1的输入,Reducer1的输出必须是输入Mapper2的输出。Mapper2的输出必须是Reducer2的输入。Reducer2的输出必须存储在输出文件中)。如何将多个Mappers和Reducers添加到我的程序中,以便像上面那样保持流程?我需要使用ChainMappers还是ChainReducers?如果可以,我该如何使用它们?

java - Hadoop Map-Reduce 并行执行 3 个 Mappers 并输出到 1 个 reducer

我有一个要求,我必须根据每个数据集的不同标准过滤3个不同的数据集,最后将它们联合起来并将它们聚合到一个reducer中。我有一个执行作业的Pig脚本,其中数据集的过滤按顺序发生。我想知道是否有可能为每个数据集并行运行Mappers,并将输出发送到1个reducer类。 最佳答案 尝试使用MultipleInputs和3个映射器来处理3个数据集。请参阅此链接以获取MultipleInputs的API-https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduc

hadoop - 在 MapReduce 的一个 Mapper 中读取下一行

我有一个文本输入文件,它由换行符分隔。在每个映射器中,我需要读取我的键/值的下一行。例如,在这个数据中:L1L2L3我需要这样的东西:L1L2在下一个映射器中:L2L3提前致谢。 最佳答案 除了CustomInputFormat之外,您还可以像Map一样在集合中存储行前,并在每次下次调用时访问它例子: 关于hadoop-在MapReduce的一个Mapper中读取下一行,我们在StackOverflow上找到一个类似的问题: https://stackover

java - Hadoop 上的 MapReduce - 将数据从 Mapper 发送到 Reducer

我正在尝试针对特定问题实现MapReduce算法。假设在我的Mapper中我需要处理一个大型文本对象。以下示例总结了我的问题。我有文本对象:Todayisalovelyday我需要对这些词做一些处理。所以我有两个选择:我可以将以下形式的键值对发送到Reducer:我可以发送键值对到reducer然后处理它,例如标记化字符串对象。这种情况的最佳方法是什么?在第一种情况下,我必须向reducer发送更多数据,但我没有像第二种情况那样要标记化的字符串对象。但是在第二种情况下,Mapper发送的数据量较小。 最佳答案 我认为您不会通过这种方

file - 多个小文件作为 map reduce 的输入

我有很多小文件,比如说20000多个。我想节省花在映射器初始化上的时间,那么是否可以只使用500个映射器,每个处理40个小文件作为其输入?如果可能的话,我需要有关如何实现这种输入格式的指导,谢谢!顺便说一句,我知道我应该合并这些小文件,这一步也是需要的。 最佳答案 可以使用CombineFileInputFormat。它在old中和new先生API。这是一个不错的blogentry关于如何使用它。 关于file-多个小文件作为mapreduce的输入,我们在StackOverflow上找

oracle - 如果我们在sqoop中使用6个mapper从oracle中导入数据,那么sqoop和source之间会建立多少个connection

如果我们在sqoop中使用6个mapper从Oracle导入数据,那么sqoop和source之间会建立多少个connection。是单个连接还是每个映射器有6个连接。 最佳答案 根据sqoopdocs:Likewise,donotincreasethedegreeofparallismhigherthanthatwhichyourdatabasecanreasonablysupport.Connecting100concurrentclientstoyourdatabasemayincreasetheloadonthedataba