草庐IT

hadoop - 什么时候需要 "no mapper"?

在某些用例中,我已经有一段时间没有使用reducer作业,但我从未遇到过“无映射器”作业。“NoMapper”意味着mapreduce框架仍然会读取输入文件并以某种方式(基于InputFormat?)对它们进行洗牌/排序,这些将成为我的reducer的输入? 最佳答案 “无映射器”是“身份映射器”的委婉说法。如果您不指定一个默认映射器就是这样。至少,身份映射器进程将未更改的输入定向到正确的化简器分区。 关于hadoop-什么时候需要"nomapper"?,我们在StackOverflow

java - 在 Mapper 中检索当前行的文件名

我使用的是Hadoop2.6.4版。我正在编写一个MapReduce作业,它将采用3个参数,即-Keyword,输入文件和输出文件的路径。我理想的输出应该是所有包含关键字的文件的名称。简单的逻辑是遍历文本中的每一行并将其与我们的关键字匹配。如果它返回true打印文件名。经过广泛的谷歌搜索后,我找到了3个获取文件名的选项Context.getConfiguration().get("map.input.file")Context.getConfiguration().get("mapreduce.map.input.file")这两种方法都返回了一个值为“null”的字符串,即它们在我的

hadoop - Mapper 和 Reducer 如何协同工作 "without"排序?

我知道mapreduce是如何工作的以及我有哪些步骤:绘图随机排序减少当然,我有分区、组合器,但现在这些并不重要。有趣的是,当我运行mapreduce作业时,看起来mappers和reducers并行工作:所以我不明白这怎么可能。问题1.如果我有多个节点在做映射操作,reducer如何开始工作?因为Reducer不能在没有排序的情况下开始工作吗?(输入必须为Reducer排序-如果mapper仍在工作,则输入无法排序)。问题2.如果我有多个reducer,最后的数据如何合并在一起?换句话说,最终结果应该排序对吧?这意味着我们要花费额外的O(n*Logn)时间来合并“多个reducer结

hadoop - Mapper 类如何将 SequenceFile 识别为 hadoop 中的输入文件?

在我的一个MapReduce任务中,我将BytesWritable重写为KeyBytesWritable,并将ByteWritable重写为ValueBytesWritable。然后我使用SequenceFileOutputFormat输出结果。我的问题是当我开始下一个MapReduce任务时,我想使用这个SequenceFile作为输入文件。那么如何设置作业类,Mapper类如何识别我之前覆盖的SequenceFile中的键和值?我知道我可以使用SequenceFile.Reader来读取键和值。Configurationconfig=newConfiguration();Pathp

Hadoop 映射器 : Class or Interface

我对Hadoop中的基本Mapper结构有点困惑。在网络上,许多示例实现使用Mapper作为类,因此它们的类扩展了Mapper。据我所见,也就是Hadoop19,Mapper是一个接口(interface)。发生了什么事? 最佳答案 在旧的API中,Mappers实现了您可能期望的接口(interface)。当大修到来时,他们决定将其更改为一个完全成熟的类,以便它可以充当经常需要的IdentityMapper(如果按原样使用或扩展以用于您自己的实现)。这只是您的项目使用旧API还是新API的问题,您不应该混用-org.apache.

java - Hadoop:如何为每个值提供一个全局唯一 ID 号作为 Mapper 中的键?

这是我想做的。现在我有一些这样的文本文件:xxx.example.comxxxabcdefyyy.example.comyyyabcdef...我想读取映射器中的文件拆分并将它们转换为键值对,其中每个值都是一个中的内容>标签。我的问题是关于key的。我可以使用url作为键,因为它们是全局唯一的。但是,由于我的工作背景,我想为每个键值对生成一个全局唯一编号作为键。我知道这在某种程度上违背了Hadoop的水平可扩展性。但是有什么解决办法吗? 最佳答案 如果您要通过MapReduce处理此类文件,我会采取以下策略:逐行使用通用文本输入格式

java - Hadoop 中 Mapper.Context 的 API 文档在哪里?

我很高兴能加快Hadoop的速度,其中包括检查thttps://hadoop.apache.org/docs/current/api/类Mapper的文档广泛引用了类Mapper.Context(org.apache.hadoop.mapreduce.Mapper.Context)。但是,除了旧版本的API之外,我看不到该Mapper.Context类/接口(interface)/无论它是什么的API文档。在当前的API中,我可以在哪里找到特别针对Mapper.Context的文档?我看到它在不同的地方使用(context.write方法,最常见),但我找不到这些方法的当前文档,尽管我

map - 配置Hadoop集群时应该设置多少个mapper/reducer?

配置Hadoop集群时,为集群设置映射器/缩减器数量的科学方法是什么? 最佳答案 没有公式。这取决于你有多少核心和多少内存。mapper的个数+reducer的个数一般不要超过core的个数。请记住,该机器还运行着TaskTracker和DataNode守护进程。一般建议之一是映射器多于缩减器。如果我是你,我会使用合理数量的数据运行我的一项典型工作来尝试一下。 关于map-配置Hadoop集群时应该设置多少个mapper/reducer?,我们在StackOverflow上找到一个类似的

hadoop - 使用零 Reducers 时,我能否从 Hadoop 获得单独排序的 Mapper 输出?

我在Hadoop0.20中有一份工作需要一次处理一个大文件。(这是一个预处理步骤,可将面向文件的数据转换为更适合MapReduce的更清晰、基于行的格式。)我不介意我有多少个输出文件,但每个Map的输出最多只能在一个输出文件中,并且每个输出文件都必须排序。如果我使用numReducers=0运行,它运行得很快,并且每个Mapper写出自己的输出文件,这很好-但文件没有排序。如果我添加一个reducer(普通Reducer.class),这会向单个文件添加一个不必要的全局排序步骤,这会花费很多小时(比Map任务花费的时间长得多)。如果我添加多个reducer,各个map作业的结果会混合在

java - Hadoop 中的作业和任务调度

当我阅读延迟公平调度时,我对Hadoop中的术语“作业调度”和“任务调度”感到有点困惑inthisslide.如果我的以下假设有误,请纠正我:默认调度器、容量调度器和公平调度器仅在用户调度多个作业时在作业级别有效。如果系统中只有一个作业,它们将不起任何作用。这些调度算法构成了“作业调度”的基础每个作业可以有多个map和reduce任务,它们是如何分配给每台机器的?如何为单个作业安排任务?“任务调度”的依据是什么? 最佳答案 在公平调度器的情况下,当有一个作业在运行时,该作业使用整个集群。当提交其他作业时,释放的任务槽将分配给新作业,