草庐IT

mapreduce_shuffle

全部标签

sorting - 为什么 mapreduce 二次排序不在复合键的 compareTo() 上?

要执行二次排序,我们必须创建一个复合键,它扩展了WritableComparable接口(interface)并实现了compareTo()。在“Hadoop:权威指南”一书和几乎所有其他地方的博客中,排序都是基于扩展WritableComparator的单独类(书中的KeyComparator)的compare()方法进行的。compare()和compareTo()具有相同的逻辑。既然WritableComparator的compare()是用来对compositekey进行排序的,那么CompositeKey的compareTo()到底什么时候用到呢?

java - 在 Accumulo 表上运行 mapreduce 作业时出现 TApplicationException 异常

我正在运行一个mapreduce作业,从Accumulo中的一个表中获取数据作为输入,并将结果存储在Accumulo中的另一个表中。为此,我使用了AccumuloInputFormat和AccumuloOutputFormat类。这是代码publicintrun(String[]args)throwsException{Optsopts=newOpts();opts.parseArgs(PivotTable.class.getName(),args);Configurationconf=getConf();conf.set("formula",opts.formula);Jobjob=

hadoop - 使用 TotalOrderPartitioner MapReduce 时遇到错误

我写了下面的程序。我在不使用TotalOrderPartitioner的情况下运行它,并且运行良好。所以我认为Mapper或Reducer类本身没有任何问题。但是当我包含TotalOrderPartitioner的代码时,即编写分区文件然后将其放入DistributedCache时,我收到以下错误:真的不知道如何去做。[train@sandboxTOTALORDERPARTITIONER]$hadoopjartotalorderpart.jaraverage.AverageJobcountiestotpart//counties为输入目录,totpart为输出目录16/01/1804:

c# - MapReduce.SDK : How to wait for MapReduce job?

我正在使用MicrosoftMapReduceSDK启动仅Mapper作业。调用hadoop.MapReduceJob.ExecuteJob立即抛出“响应状态代码不表示成功:404(未找到)”异常。检查HDInsight查询控制台时,作业成功启动并稍后完成。它还会写入正确的输出文件。我的猜测是,ExecuteJob试图在作业完成之前访问输出数据。处理这种情况的正确方法是什么?usingSystem;usingSystem.Linq;usingSystem.Security.Cryptography.X509Certificates;usingMicrosoft.WindowsAzure

java - MapReduce Hadoop StringTokenizer 获取 NoSuchElementException

我正在尝试使用wordcount的输出文件作为MapReduce的输入文件,它将显示每个计数有多少(有多少单词出现一次、两次、三次等)。我想使用每个单词的计数作为键,1作为值,跳过单词本身。如果输入文件是这样的:422apple3fruit2gorilla9monkey3zebra12输出应该是:213291121使用StringTokenizer打散文件,下面map函数中的nextToken()给出NoSuchElementException。publicstaticclassTokenizerMapperextendsMapper{privatefinalstaticIntWrit

Hadoop 和 Mapreduce 配置

我对Hadoop架构有几个疑问在Mapreduce中,我们可以动态修改block大小和映射器的数量,如果可以,我们该怎么做?block是如何在HDFS中创建的。例如,hadoop框架安装在redhatlinux机器上。linux文件系统的默认block大小是4k。HDFSblock是4kblock上的逻辑包装器还是如何创建block。它也是并行的还是顺序的?因为例如一个文件只有32MB,因为block大小是64MB。剩余的32Mb是否可重复使用?我想查看刚刚复制到HDFS的特定文件的所有block的位置(数据节点)。是否有任何命令可以从一个位置执行此操作?如果我将视频文件移动到HDFS

hadoop - 在映射期间替换为 HBase 查找以进行 mapreduce

在mapreduce处理期间,我需要在一次map执行中多次查找hbase。这正在成为一个瓶颈,因为hbase变得非常慢。一个map过程中会多次查找,例如每一行包含多个员工id,员工信息存储在hbase中。什么可以替代这个?对于这样的处理,hbase应该很慢吗?将Hbase作为hdfs文本然后进行连接而不是查找是否更好。 最佳答案 如果不确切知道您的MR工作在做什么,很难给出一个完美的答案,但我会考虑使用TableInputFormatBase(使用MultipleInputs将HBase表与其他数据一起读入映射器),然后加入员工ID

java - 运行 MapReduce 程序时出现 ClassNotFound 异常

我正在编写一个用于矩阵加法的mapreduce程序。因为它需要2个输入文件,所以我使用了MultipleInputs。我有以下类(class)MatAddMapper1.javapackagemapred;importjava.io.IOException;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;publicclassMatA

hadoop - 为什么我们需要知道在 mapreduce 中处理的文件的名称?

我遇到了一个帖子,询问如何获取mapreduce正在处理的文件名。这让我想知道在什么情况下我们需要知道正在处理的文件的名称或路径。FileSplitfileSplit=(FileSplit)context.getInputSplit();StringfileName=fileSplit.getPath().getName();谢谢巴桑 最佳答案 有几种情况文件名很重要,例如:过程中需要文件名中的时间戳。根据文件名,您可以对文件进行不同的处理。就像如果您有两种非常相似的文件类型,需要类似的过程,但差异很小(如果不是,最好有两个不同的m

java - 在 MapReduce 程序中,reducer 没有被 Driver 调用

我根据mapreduce编程模型编写了这个程序,Driver代码如下我的司机类(class)publicclassMRDriverextendsConfiguredimplementsTool{@Overridepublicintrun(String[]strings)throwsException{if(strings.length!=2){System.err.println("usage:");System.exit(0);}Jobjob=newJob(getConf(),"multiplefiles");job.setJarByClass(MRDriver.class);job