草庐IT

mapReduce

全部标签

java - 控制 hadoop mapper 输出文件的数量

我有一份hadoop的工作。陈述工作后,我启动了一些映射器。每个映射器将一些文件写入磁盘,如part-m-00000、part-m-00001。据我了解,每个映射器创建一个零件文件。我有大量数据,所以必须有多个映射器,但我可以以某种方式控制此输出文件的数量吗?我的意思是,hadoop将启动,例如10个映射器,但只有三个部分文件?我找到了这篇文章Howdomultiplereducersoutputonlyonepart-fileinHadoop?但是有使用旧版本的hadoop库。我使用的类来自org.apache.hadoop.mapreduce.*而不是来自org.apache.ha

hadoop - mapreduce 的哪个部分/类是停止 reduce 任务的逻辑实现

在HadoopMapReduce中,在所有映射器完成之前,没有缩减器启动。有人可以解释一下这个逻辑是在哪个部分/类/代码行实现的吗?我说的是HadoopMapReduce版本1(不是Yarn)。我已经搜索了mapreduce框架,但是类太多了,我不太了解方法调用及其顺序。换句话说,我需要(首先用于测试目的)让reducers开始减少,即使仍然有工作的映射器。我知道这样我得到的工作结果是错误的,但我知道这是更改框架部分的一些工作的开始。那么我应该从哪里开始查看并进行更改? 最佳答案 这是在洗牌阶段完成的。对于Hadoop1.x,请查看

hadoop - 有什么方法可以防止在所有 map task 完成之前 reduce task 开始

我想在Hadoop集群上同时运行多个作业,但我想阻止某些作业在该作业的所有映射任务完成之前开始缩减阶段(使缩减槽繁忙或保留)。是否有任何配置可以像上面那样设置主题限制?谢谢。 最佳答案 减少慢启动默认情况下,调度程序会等待作业中5%的maptask完成为同一工作安排reducetask。对于大型作业,这可能会导致问题集群利用率,因为它们在等待map任务时占用reduce槽完全的。将mapred.reduce.slowstart.completed.maps设置为更高的值,例如0.80(80%),有助于提高吞吐量。引用:Hadoop权

hadoop - 我正在尝试将文件中的所有数字相加,该文件包含以空格分隔的数字,并且使用 MapReduce 包含在多行中

我的输出出错了。输入文件是:12345432输出应该是key:sumvalue:24MapReduce产生的输出:key:sumvalue:34我在Ubuntu14.04中使用OpenJDK7来运行jar文件,而jar文件是在EclipseJuna中创建的,使用的java版本是OracleJDK7来编译它。NumberDriver.java包裹数量和;importjava.io.*;//importjava.util.StringTokenizer;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs

hadoop - hadoop 中的 KeyValueTextInputFormat 和 TextInputFormat 之间的主要区别是什么?

谁能给我一个我们必须使用KeyValueTextInputFormat和TextInputFormat的实际场景?? 最佳答案 TextInputFormat类将源文件的每一行转换为键/值类型,其中BytesWritable键表示记录的偏移量,Text值表示整个记录本身。KeyValueTextInputFormat是TextInputFormat的扩展版本,当我们必须将每个源记录作为文本/文本对获取时,这很有用,其中键/值是通过拆分记录从记录中填充的一个固定的分隔符。考虑以下文件内容,AL#AlabamaAR#ArkansasFL

hadoop - 构建不适合内存的流

这是关于这个问题的后续问题:SparkFlatMapfunctionforhugelists总结:我想在Java8中编写一个SparkFlatMap函数,它生成与一组dna序列匹配的所有可能的正则表达式。对于巨大的字符串,这是有问题的,因为正则表达式集合不适合内存(一个映射器很容易生成千兆字节的数据)。我知道我必须求助于惰性序列之类的东西,我想我必须使用Stream为了这。我现在的问题是如何构建这个流。我在这里看:JavaStreams-Stream.Builder.如果我的算法开始生成模式,则可以使用accept(String)将它们“推送”到流中方法,但是当我尝试链接中的代码(用字

hadoop - 如何在oozie工作流中获取oozie jobId?

我有一个将调用shell文件的oozie工作流,Shell文件将进一步调用mapreduce作业的驱动程序类。现在我想将我的ooziejobId映射到MapreducejobId以供以后处理。有什么方法可以在工作流文件中获取ooziejobId,以便我可以将相同的as参数传递给我的驱动程序类以进行映射。以下是我的示例workflow.xml文件${jobTracker}${nameNode}mapred.job.queue.name${queueName}${jobScript}${fileLocation}${nameNode}${jobId}${jobScriptWithPath}

hadoop - Hadoop MapReduce 的目的

目前我正在阅读一些关于Hadoop和流行的MapReduce算法的论文。但是,我看不到MapReduce的值(value),如果有人能提供一些见解,我会很高兴。具体来说:据说MapReduce接收一个文件并产生键值对。什么是key?只是一个词,词的组合还是其他什么?如果关键是文件中的单词,那么为MapReduce编写代码的目的是什么?MapReduce应该在不实现特定算法的情况下做同样的事情。如果所有内容都转换为键值对,那么Hadoop所做的只是像在JAVA和C#中那样创建字典,赖特?可能是Hadoop可以以更有效的方式创建字典。除了效率之外,Hadoop还提供了普通Dictionar

java - 在 hadoop HDFS 中存储大文件?

我需要在HDFS上存储一个大约10TB的大文件。我需要了解的是HDFS将如何存储该文件。比如说,集群的复制因子是3,我有一个10节点集群,每个节点上有超过10TB的磁盘空间,即集群总容量超过100TB。现在HDFS是随机选择三个节点,把文件存储在这三个节点上。那么这就像听起来一样简单。请确认?或者HDFS是否拆分文件-比如说分成10个1TB的拆分,然后将每个拆分存储在随机选择的3个节点上。拆分也是可能的,如果是,它是否是启用它的配置方面。如果HDFS必须拆分二进制文件或文本文件——它是如何拆分的。简单地按字节。 最佳答案 是的,它会

hadoop - map() 和 reduce() 应该返回相同类型的键/值对吗?

在编写MapReduce作业(如果相关,特别是Hadoop)时,必须定义一个map()和一个reduce()函数,两者都会产生一系列键/值对。键和值的数据类型由应用程序自由定义。在字数统计的典型示例中,这两个函数都产生类型为(string,int)的对,键是一个字,值是出现次数。在这里-以及我见过的所有其他示例-输出的键和值类型在两个函数之间是一致的。map()和reduce()生成的键/值对的类型必须/应该在任何MapReduce应用程序中相同吗?如果是:为什么? 最佳答案 没有。显然,map的输出对类型和reduce的输入对类型