草庐IT

java - 在 Map Reduce 作业 Hadoop 中使用文件中的数据作为 Hash-Map

我有一个包含10,000(“小文件”)行的文件,其中包含键值小文件中的不同键可以具有相同的值。我必须对不同的文件(大文件)进行字数统计。购买我需要用(“小文件”)-inMapper中的值替换(“大文件”)中的键。只有在它在reducer中计数之后。我想在不使用pig/hive的情况下使用单个mapreduce作业来实现它。你能帮我指导我怎么做吗?小文件将在hdfs上,我不确定其他节点将如何从中读取-不认为它甚至被推荐-因为具有小文件的节点将不得不非常努力地向每个节点发送数据maptask。 最佳答案 你可以做一个mapside加入,

java - Hadoop MapReduce : Strange Result when Storing Previous Value in Memory in a Reduce Class (Java)

如果我希望存储迭代器的当前值以与Reduce方法中迭代器的下一个值进行比较,Hadoop要求我克隆它而不是简单地将其引用分配给临时变量。我要将代码发布到我的reducer。你会看到两部分:Eclipse中测试的主要方法在Hadoop中执行的reduce方法你会注意到这两行代码是相同的,除了以下几点:main方法从我硬编码到其中的ArrayList获取Iterator,而reduce方法从mapper方法获取Iterator。main方法当然不会执行context.write。这是两者几乎共享的代码:MMIcurrentMMI=null;MMIpreviousMMI=null;Ultra

java - 在 Windows 上的 Hadoop 2.6.0 上运行 Map reduce 时出错

我使用本教程在我的Windows8.1上设置了一个单节点Hadoop2.6.0集群-https://wiki.apache.org/hadoop/Hadoop2OnWindows.所有守护进程都已启动并正在运行。我可以使用hadoopfs-ls/访问hdfs,但我没有加载任何东西,所以目前没有任何东西可以显示。但是当我运行一个简单的mapreduce程序时,我得到以下错误:log4j:WARNNoappenderscouldbefoundforlogger(org.apache.hadoop.metrics2.lib.MutableMetricsFactory).log4j:WARNP

hadoop - 关于 map reduce 中洗牌的查询

运行映射器的节点处理如何知道它必须将一些键值输出发送到节点A(运行reducer)和一些到节点B(运行另一个reducer)?JobTracker是否在某个地方维护了一个reducer节点列表?如果是,它如何选择一个节点来运行reducer? 最佳答案 Mapper并不知道将数据发送到哪里,它专注于两件事:将数据写入磁盘。最初,map输出缓冲在内存中,一旦它达到某个阈值,它就会被刷新到磁盘。但就在进入磁盘之前,数据通过获取输出键的哈希值进行分区,输出键对应于它将被发送到的Reducer。一旦maptask完成,它将通知父任务跟踪器说

text - 将 ElasticSearch 与 Hadoop Map Reduce 结合使用

我有一个“大数据”文本搜索问题,我曾在此处的Stackexchange网站上寻找一般建议-https://softwareengineering.stackexchange.com/questions/203855/text-search-big-data-problem对于这篇SO帖子,这里有一个特定的问题,即ElasticSearch与Hadoop的集成(但我想我会提供一些背景知识)。问题概述基本上我有大量文本,分成不同的“行”,每行代表一个项目。我有另一个较小的列表,其中包含本文中的搜索词。我想交叉引用两者并进行反向索引查找,然后返回我找到的索引。注意:我知道20GB不是海量数据

hadoop - 为 map-only 作业运行 Hadoop Map Reduce 时出错

我想在HadoopMapReduce中运行一个仅限map的作业,这是我的代码:Configurationconf=newConfiguration();Jobjob=newJob(conf);job.setJobName("import");job.setMapperClass(Map.class);//CustomMapperjob.setInputFormatClass(TextInputFormat.class);job.setNumReduceTasks(0);TextInputFormat.setInputPaths(job,newPath("/home/jonathan/i

hadoop - map reduce 框架如何确定在 map 完全完成之前运行 reduce?

我注意到通常当hadoop集群不忙时,在map端完全完成之前,reduce端开始进行?这怎么可能?我记得在某处读到减少进度指示器有点误导,但记不清了。有人可以阐明这一点吗? 最佳答案 331/3%的任何reduce任务进度指示器正在复制映射输出。(另外331/3%正在对它们进行排序,最后331/3%构成实际调用reduce()方法。)映射器一直在完成,并且您配置的尽可能多的reduce任务会在这些输出准备就绪后立即拉取这些输出,因此最多2/3第一轮的reduce阶段将在任何reduce()调用发生之前完成。

java - 如何在 reduce 阶段工作时启动 map 阶段

我有这种情况。工作A和工作B。是否有机会在JobA减少阶段提供的数据开始JobB映射阶段,同时它仍在工作?谢谢! 最佳答案 我唯一想到的是有一个线程(在您的驱动程序类中启动)永久检查JobA的输出目录。当创建并完全写入特定(一组)part-r-xxxx文件时,您可以启动JobB并将该特定(一组)part-r-xxxx文件作为输入。我现在唯一能确定的问题是与检查part-r-xxxx文件是否已完全写入有关的问题。 关于java-如何在reduce阶段工作时启动map阶段,我们在StackO

hadoop - pig 忽略 maxReducers 并使用 mapred.reduce.tasks 代替

我的pig脚本生成了大约5个MR作业。当它开始执行时,pig打印:BytesPerReducer=1000000000maxReducers=999并继续创建一个只有一个reducer的MR作业:NeitherPARALLELnordefaultparallelismissetforthisjob.Settingnumberofreducersto1但是,对于从同一脚本生成的后续作业,它不会打印此行,并且在其中一个中创建mapred.reduce.tasksreducers,在我的集群中是4992.这是一个已知错误吗?或者我在这里遗漏了什么? 最佳答案

hadoop - 与 Map-Reduce 合并。一个数据集中的多个键

我有两个数据集:Dataset1:Emp1Emp2SalaryDataset2Empadd1add2add3数据集2中的数据由数据集1中Emp1或Emp2中存在的所有员工组成。生成的数据集需要有员工emp1和emp2的每一行Dataset1和add1add2add3变量。Dataset3Emp1Emp2add1(emp1)add2(emp1)add3(emp1)add1(emp2)add2(emp2)add3(emp2)它基本上是对2个数据集的合并,但是当我尝试从第一个数据集中获取key时,我可以在一列中获取Emp1Emp2并在另一列中获取Emp1Emp3。由于键变得困惑,我如何使用m