如何在hadoopmapreduce应用程序准备好投入生产之前对其进行测试。我现在能想到的测试视角是:单元测试这是为了确保映射器和还原器中的方法正常工作。看来我们已经有了mrunit,但我想看看我们是否还有其他选择。数据准确性这对我来说是最重要的,因为产生准确和正确的输出是mapreduce应用程序的主要职责。这里的问题是如何生成测试数据集和如何验证输出数据,以及正确的测试数据量是多少?性能我们应该如何对mapreduce应用程序的性能进行基准测试?我们能利用什么工具?我们还需要考虑其他的测试吗? 最佳答案 jumbune是您的工具
在相关问题(HowtosettheprecisemaxnumberofconcurrentlyrunningtaskspernodeinHadoop2.4.0onElasticMapReduce)中,我要求提供将并发运行的映射器/缩减器的数量与YARN和MR2内存参数相关联的公式。事实证明,在ElasticMapReduce上,当我的集群有2到10个c3.2xlarge节点时,那里提到的公式的变体工作正常,每个节点有7-9个并发运行的映射器;但是当c3.2xlarges的数量为20或40时,我发现集群未充分利用:每个节点仅运行1-4个映射器。由于我的工作受CPU限制,这尤其糟糕:MR2
我有一个要求,说明C++和Matlab算法的执行应该从Hadoopmapreduce编程触发。这会映射要分发的执行算法吗。因为我们没有计划使用整个mapreduce程序重写算法 最佳答案 在R2014b中,MATLAB允许从MATLAB内部进行mapreduce并与Hadoop集成。我不能确定你的具体用例,但你可能想检查一下:http://www.mathworks.com/help/matlab/mapreduce.htmlhttp://www.mathworks.com/discovery/matlab-mapreduce-ha
我们正在研究将一个巨大的N维数据结构(NetCDF文件)流式传输作为Mapper函数的输入而无需写入文本文件然后加载到HDFS上的想法。我们有一个应用程序已经拥有这个巨大的数据结构。所以我们想跳过所有涉及写入和读取文本文件的开销。我们需要对以下问题的一些输入..1)第三方应用程序能否将数据直接流式传输到MapReduce?2)如果上述情况可行,MapReduce是否会处理将此DataStructure拆分为输入block,或者我们是否需要明确地执行此操作?3)这是否可能在ApacheSPARK上实现,因为Spark从DRAM运行,而DataStructure也在DRAM上,因此我们不必
有什么方法可以运行现有的mapreduce程序,使其仅从输入文件的给定偏移量开始处理?例如:如果给定的偏移量是500,mapreduce程序应该从第500个字节开始处理输入文件。 最佳答案 这是可能的,但需要Java编码和创建自定义InputFormat。例如,您可以子类化FileInputFormat并覆盖方法publicListgetSplits(JobContextjob)和protectedFileSplitmakeSplit(Pathfile,longstart,longlength,String[]hosts)。要传递起
mapreduce分区内的数据是否已排序,如果是,如何排序?AFAIK,它是根据key分组的。如果它在内部排序,那么对所有分区内的所有数据进行排序不是一种开销吗? 最佳答案 如果您谈论的是映射器作为输入接收的输入拆分,那么不是;它们没有排序,因为这确实会产生不必要的开销。排序在map阶段结束之前开始(仅当使用reducer时),因此reduce函数的输入已排序。Partitioner定义了指定哪个reducer将处理映射器输出的标准。HashPartitioner(默认使用的Partitioner的实现)对映射器的输出键进行哈希处理
我在ubuntu13.10上使用hadoop1.2.1。我正在运行输入文件大小为25GB的排序问题。但是我收到错误:14/09/2912:42:47INFOmapred.JobClient:map51%reduce17%14/09/2912:44:08INFOmapred.JobClient:TaskId:attempt_201409291048_0003_m_000208_0,Status:FAILEDjava.lang.Throwable:ChildErroratorg.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Hadoop天生就是为处理大数据而创建的。但是,如果Mappers的输出也很大,太大而无法容纳Reducers内存,会发生什么情况?假设我们正在考虑要聚类的大量数据。我们使用一些分区算法,它会找到指定数量的元素“组”(簇),这样一个簇中的元素是相似的,但属于不同簇的元素是不同的。通常需要指定簇数。如果我尝试将K-means实现为最著名的聚类算法,一次迭代将如下所示:映射阶段-将对象分配到最近的质心Reducephase-根据集群中的所有对象计算新的质心但是如果我们只有两个集群会怎样?在那种情况下,大数据集将被分成两部分,并且只有两个键,每个键的值将包含大数据集的一半。我不明白的是-
基于Hadoop-权威指南中的wordcount示例,我开发了一个mapreduce作业来计算无序字符串元组的出现次数。输入看起来像这样(只是更大):abccddbaaddd运行mapreduce我希望输出是(对于这个例子):cc1dd1ab2ad1dd1这意味着,我希望元组a,b和b,a被认为是相同的。这个问题已经在这里问过:HadoopMapReduce:TwovaluesaskeyinMapper-Reducer可能在这里解决了https://developer.yahoo.com/hadoop/tutorial/module5.html#keytypes.对于大型输入文件,我得
HadoopMapreduce的新手,我不确定为什么会收到此错误。我目前得到:NotavalidJAR:/nfsdata/DSCluster/home/user/bli1/wordcount/wc.jar这是我的过程:HDFS文件结构:/bli1/wordcountwc.jarWordCount.java/inputfile01/outputfile02在本地机器上创建WordCount.java和wc.jar与jarcfwc.jarWordCount.java在本地机器上创建file01和file02创建/input和/output/wordcount内的目录在hdfs中使用hdfs