草庐IT

glass-mapper

全部标签

java - MapReduce 程序不在 main 和 mapper 之间共享字符串变量

我正在编写一个mapreduce程序,其中必须在Mapper类中共享在Main方法中创建的字符串。这是使用新的mapreduceapi。我正确编码并在main方法中使用配置设置变量,如下所示。Configurationconf=newConfiguration();Jobjob=newJob(conf);SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmsss");Stringdate=sdf.format(newDate());StringImagesDir="/user/srini/images/"+date;conf.set

hadoop - mapper和reducer类是否需要部署在一个Hadoop集群的所有节点上

是否需要将包含我的Mapper/Reducer类的jar文件部署到所有运行Hadoop的节点上?还是只在主节点(NameNode)上? 最佳答案 简短回答:否。开始MapReduce作业的节点/网关机器。您需要将主要的MapReduceDriverjar放入本地文件系统,所有依赖jar都可以放入本地文件系统或HDFS小路。因此,当您开始作业时,您将使用-libjars参数传递依赖库jar路径。HDFSjar将在HDFS中的路径中包含hdfs://前缀。本地系统上需要主MapReducejar才能启动mapreduce作业,这实际上是

hadoop - tasktracker对应的是hadoop中的mapper还是reducer?

我知道mapper总是执行几个map操作,reducer总是执行几个reduce操作。换句话说,mapper(reducer)和map(reduce)操作之间的映射是一对多的。现在有个问题,tasktracker和mapper的映射是一对一还是一对多? 最佳答案 首先,我将向您解释什么是任务跟踪器:ATaskTrackerisanodeintheclusterthatacceptstasks-Map,ReduceandShuffleoperations-fromaJobTracker.每个TaskTracker都配置了一组插槽,这些

hadoop - Hadoop MapReduce 在 mapper 和 reducer 之前如何处理相同的键/值对?

它会留下一个并删除其他的,还是将它们全部传递给mapper和reducer? 最佳答案 相同的键值对映射阶段由于键值对彼此独立,因此Mapper永远不会查找/知道相同的键值对例如:keyvalue121225319map(k,v){emit(k,v)}发射:1,21,22,53,19减少阶段相同的键值对通过对Key上的值进行排序来处理,因此忽略与Key关联的值,因此每个值都被视为唯一。例如:keyvalue1{2,2}2{5}3{19} 关于hadoop-HadoopMapReduce在

java - 有一个 Mapper 类是线程安全的

为了避免在HadoopMapper类的每个实例上分配内存,然后依赖GC清理此内存,我使用静态对象在map方法。我必须关心线程安全吗? 最佳答案 默认情况下,每个maptask将在其自己的JVM上运行。所以你不会从使用静态对象中得到任何好处。我建议不要做奇怪的事情,除非你真的遇到性能问题。 关于java-有一个Mapper类是线程安全的,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

java - 按顺序运行 Hadoop Mapper

我有多个映射器、Map1和Map2的任务。我需要以这种方式专门执行它:Map1->Map2->Reducer。我该怎么做?非常感谢! 最佳答案 请看一下ChainMapperhttp://hadoop.apache.org/docs/stable2/api/org/apache/hadoop/mapred/lib/ChainMapper.htmlTheChainMapperclassallowstousemultipleMapperclasseswithinasingleMaptask.更新OP担心map不是连续的。事实并非如此-正

hadoop - 在 Map-reduce Hadoop 的 Mapper 类的运行方法中使用上下文对象?

这是sourcecode对于映射器publicvoidrun(Contextcontext)throwsIOException,InterruptedException{setup(context);while(context.nextKeyValue()){map(context.getCurrentKey(),context.getCurrentValue(),context);}cleanup(context);}}如您所见,context用于read和write。这怎么可能?即context.getCurrentKey()和context.getCurrentValue()用于

Hadoop map reduce - 只有在所有 maps 运行后才将 mapper 的输出发送到 reduce

只有在所有map运行后,我才需要在单台计算机上发送我的map绘制器的输出。例如:如果计算机#1运行他的map功能1000次,我希望在所有1000次map发生后发送输出。有什么办法吗?编辑-解释我为什么要这样做:我正在实现算法树冠。我的计划是在我拥有的每台机器上运行canopy并找到它的本地数据的质心。一旦找到本地质心,我想将本地质心以及与它们相关的点数发送到reducer。例如:机器#1找到了3个质心,每个质心都有30个View。我想提交减少(质心,View)。但问题是只有在机器的所有map功能运行后我才会知道View。这就是为什么我想在所有运行后发送机器映射器的输出以减少。

hadoop - 了解 mapper 和 reducer 的用法

我正在运行超过550Gb数据的piglatin脚本。reducer默认为1。生成结果大约需要38分钟。我想知道增加reducer的数量是否会更快地执行脚本我们将不胜感激。此外,我想知道设置映射器和缩减器背后的概念。 最佳答案 增加reducer的数量肯定会有所帮助(如果您正在执行的操作具有聚合)。由于实际聚合发生在reduce端,运行多个reducer会提高性能。您可以使用“Parallel”关键字设置pig中的reducer数量。前任:A=LOAD'myfile'AS(t,u,v);B=GROUPABYtPARALLEL18;映射

java - 如何在我的 Hadoop Mapper 中将 String 转换为 Writable 对象

几个小时以来,这是一个非常疯狂的问题。如有任何帮助,我们将不胜感激。我不能publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{if(!value.toString().equals("")){Gsongson=newGson();Booleanflag=true;System.out.println("000000000");while(flag){TexttweetId=newText();Tweettweet=gson.fromJson(value.toStr