我是Hadoop的新手,完成了典型的“计算日志中的IP地址”练习。现在我试图通过在第一个MapReduce作业之后立即运行第二个MapReduce作业来对输出进行排序。几乎所有的东西都在工作,除了输出收集器没有按照我想要的方式处理排序。这是我的输出片段:-10171.59.196.132-11559.103.11.163-117559.93.51.231-119127.0.0.1-1193115.186.128.19-124259.93.64.161-146192.35.79.70我不明白为什么1175被认为是比119低的值。我试过使用比较器,但没有产生任何积极效果。用于数据收集的Ma
当您需要将您的mapper/reducer经常使用的少量数据放入distributedCache时,DistributedCache似乎会派上用场。但在某些情况下,您想要放入映射器的数据会非常大,比如超过300MB。在这种情况下你会怎么做?在这种情况下,分布式缓存的替代方案是什么? 最佳答案 分布式缓存默认是几千兆字节,所以300MB不一定是问题。(您可以在mapred-site.xml中调整大小。)如果您的作业经常运行并且缓存中几乎没有其他改动,那么为节点获取300MB仍然是值得的。另一种选择是将您的文件放在HDFS上,让任务从那
早上好我是ZooKeeper及其协议(protocol)的新手,我对它的广播协议(protocol)Zab很感兴趣。能否提供一个使用Zookeeper的Zab协议(protocol)的简单java代码?我一直在搜索,但没有成功找到显示如何使用Zab的代码。事实上,我需要的很简单,我有一个MapReduce代码,我希望所有映射器在成功找到更好的X值(即更大的值)时更新一个变量(比如说X)。在这种情况下,领导者必须比较旧值和新值,然后将实际最佳值广播给所有映射器。我怎样才能在Java中做这样的事情?提前致谢,问候 最佳答案 您不需要使用
我正在尝试在Hadoop2.2上使用mahout0.9库执行XML解析的mapreduce作业。但我收到以下错误:14/02/2416:03:02INFOmapreduce.Job:TaskId:attempt_1393235568433_0004_m_000000_0,Status:FAILEDError:Foundinterfaceorg.apache.hadoop.mapreduce.TaskAttemptContext,butclasswasexpected14/02/2416:03:12INFOmapreduce.Job:TaskId:attempt_139323556843
是否可以通过每个map函数以某种方式传递一组文件。要求是针对不同的2个操作并行处理每个文件。我是mapreduce的新手,我使用JAVA作为我的编程语言。 最佳答案 如果你想获得相同的文件作为所有映射器的输入,只读访问,是的。您可以将文件从主(驱动程序)类添加到所谓的分布式缓存中。可以找到更多详细信息here. 关于hadoop-通过mapreduce中的map函数的文件,我们在StackOverflow上找到一个类似的问题: https://stackove
我正在实现减少端连接以查找数据库A和B之间的匹配项。数据集中的两个文件每行都包含一个json对象。连接键是每个记录的名称属性,因此,映射器提取json的名称并将其作为键传递,将json本身作为值传递。reducer必须合并相同或相似人名的jsons对象。问题是我需要使用字符串相似性匹配算法对键进行分组,例如,必须将JohnWhite视为等于JohnWhiteLennon。我尝试使用分组比较器来做到这一点,但它没有按预期工作。如何实现?提前致谢! 最佳答案 您在此处请求的内容可以描述为集合相似性连接,集合所在的位置,例如每行的标记集或
我的map函数为相同的数据发出两种不同的键值对。当然,我需要2个独立的reduce函数来处理这个问题。可能吗?比如,我可以在map的末尾有多个output.collect()语句,并附加一个指定reducer的参数吗?我试着查找它,但找不到任何东西。 最佳答案 您应该考虑使用MultipleOutputs类(class)。它有漂亮且不言自明的文档。 关于hadoop-映射后的多个(独立)reduce函数,我们在StackOverflow上找到一个类似的问题:
我正在2节点集群上运行Hadoop作业。复制因子设置为2,因此,每个block都应该出现在所有节点上,所有任务都应该是数据本地的。但是,Web界面显示数据本地任务的数量为0。知道问题出在哪里吗? 最佳答案 我发现了问题出在哪里,很抱歉在提问之前我没有做足够的研究。作业完成后,我查看了控制台日志,发现所有任务实际上都是本地数据。一定是WebUI显示不正确信息的问题。 关于java-Hadoop:没有数据本地任务,我们在StackOverflow上找到一个类似的问题:
我需要向map/reduce(hadoop实现)传递一个类型的参数Set>>对于hadoop类JobConf,我可以使用setInt、setFlot、setString、ecc,但如果我想设置“一个集合”或一个列表,是否可行?怎么办? 最佳答案 我没有找到任何通过“setter”方法来做到这一点的方法。但是,您可以将此Collection写入文件,然后将此文件添加到DistributedCache并从映射器/缩减器的配置中加载它。 关于java-如何将Set>>传递给hadoopmapr
我需要运行WordCount这将给我所有的单词和它们的出现,但按出现次数而不是字母排序我知道我需要为此创建两个作业并一个接一个地运行我使用了SortedwordcountusingHadoopMapReduce中的映射器和缩减器packageorg.myorg;importjava.io.IOException;importjava.util.*;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.*;importorg.apache.hadoop.mapred.*;importorg.apache.hadoop.map