草庐IT

Iterator-reducer

全部标签

hadoop - 在 Mapper 或 Reducer 中处理异常的 Hadoop 最佳实践是什么?

想要了解在Mapper/Reducer中处理异常的最佳实践。选项1:不进行任何try/catch,让任务失败,MR将重试最终终止作业的任务。属性ma​​preduce.map/reduce.maxattempts在这里发挥作用。选项2:使用计数器记录catchblock中的失败次数。并根据这些错误的某个阈值终止作业或仅使用计数器显示失败记录的数量。在map-reduce中处理异常的任何(其他)通用/标准做法? 最佳答案 列出的选项1和2是我们在项目中处理的一些方法。请看here.它列出了更多选项

hadoop - 是否可以在 Hadoop Mapreduce 中为单个作业打印 Mapper 和 reducer 输出

对于给定的MR作业,我需要生成两个输出文件。一个文件应该是Mapper的输出另一个文件应该是Reducer的输出(它只是上面Mapper的聚合)我能否将mapper和reducer输出都写在一个作业中?编辑:在作业1中(仅Mapper阶段)输出包含单行中的20个字段,必须将其写入hdfs(file1)。在Job2(Mappernreducer)中,Mapper从Job1的输出中获取输入,删除几个字段以使其成为标准格式(仅10个字段)并将其传递给写入file2的reducer。我需要hdfs中的file1和file2...现在我的疑问是,在Job1映射器中,我是否可以将数据作为file1

hadoop - 在用 Java 编写 MR 代码时,如何决定何时使用 Map-Side Join 或 Reduce-Side?

在用Java编写MR代码时,如何决定何时使用Map-SideJoin或Reduce-Side? 最佳答案 Mapsidejoin在数据到达Map之前执行join。在map端加入数据之前,map功能需要一个强大的先决条件。这两种方法都有一些优点和缺点。Mapsidejoin与reduceside相比效率更高,但它需要严格的格式。先决条件:数据应以特定方式进行分区和排序。每个输入数据都应划分为相同数量的分区。必须使用相同的键排序。特定键的所有记录必须位于同一分区中。Reducesidejoin也称为Repartitionedjoin或R

hadoop - 区 block 链与 HDFS 有何不同,比特币挖掘与 Map reduce 或 spark 有何不同?

我正在研究区block链技术,我发现它将文件保存在多个不同的服务器上。现在根据Hadoop文档,它还在多个服务器上存储文件并在1个主节点上保留1个主副本。它还具有动物园管理员,负责维护主节点和所有辅助节点之间的数据。现在我的问题是,是否还有用于维护主副本的区block链动物园管理员,或者我的理解方式有误? 最佳答案 这些是完全不同的动物。大多数区block链全节点完全独立运行,并花时间验证交易。事实上,比特币协议(protocol)或以太坊中的每个完整节点都有整个链的完整副本——也就是说,自区block零以来发生的每笔交易。它们在共

pdf - 在 Hadoop Map Reduce 中解析 PDF 文件

我必须在Hadoop的MapReduce程序中解析HDFS中的PDF文件。所以我从HDFS获取PDF文件作为Inputsplits,它必须被解析并发送到Mapper类。为了实现这个InputFormat,我经历了这个link.如何解析这些输入拆分并将其转换为文本格式? 最佳答案 在Hadoop中处理PDF文件可以通过扩展FileInputFormat来完成类(class)。让扩展它的类成为WholeFileInputFormat。在WholeFileInputFormat类中,您覆盖了getRecordReader()方法。现在,每

java - 为简单的 hadoop mapreduce 作业运行两个 mapper 和两个 reducer

我只是想更好地理解使用多个映射器和缩减器。我想使用一个简单的hadoopmapreduce字数统计作业来尝试这个。我想为这个字数统计作业运行两个映射器和两个缩减器。有吗我需要在配置文件上手动配置,还是仅对WordCount.java文件进行更改就足够了。我在单个节点上运行这个作业。我正在运行这个作业$hadoopjarjob.jarinputoutput我已经开始了$hadoopnamenode-format$hadoopnamenode$hadoopdatanodesbin$./yarn-daemon.sh启动资源管理器sbin$./yarn-daemon.sh启动资源管理器I'mr

java - 相同的关键不同的 reducer (HADOOP)?

是否可以在不同的reducer上使用相同的键处理值?从所有映射器中我得到了具有相同key的数据,我想用不同的reducer处理它?我的困惑是这本书说所有具有相同键的值都将转到相同的reducer......mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3)andsoon...我不希望所有数据都到同一个reducer......它应该是这样的,reducer1(k1,v1),reducer2(k1,v2)....假设reducer1产生sum1,reducer2产生sum2,我想要那个sum=sum2+sum1我该怎么做?

hadoop - Map reduce 作业卡在 map 0% reduce 0%

我正在运行著名的wordcount示例。我有一个本地和prodhadoop设置。同样的例子在生产环境中工作,但在本地不工作。谁能告诉我应该寻找什么。工作陷入困境。任务日志是:~/tmp$hadoopjarwordcount.jarWordCount/testhistory/outputtest/testWarning:$HADOOP_HOMEisdeprecated.13/08/2916:12:34WARNmapred.JobClient:UseGenericOptionsParserforparsingthearguments.ApplicationsshouldimplementT

hadoop - 是否存在无法通过 map/reduce 解决的典型问题?

我正在尝试了解hadoop和map/reduce的界限,这将有助于了解一个我们知道map/reduce无法解决的重要问题或一类问题。如果改变问题的一个因素可以简化map/reduce,那肯定会很有趣。谢谢 最佳答案 我想到了两件事:任何需要实时/交互式/低延迟响应时间的东西。提交到Hadoop的任何作业都会产生固定成本。任何不是embarrassinglyparallel的问题.Hadoop可以处理许多需要数据之间存在一些简单相互依赖性的问题,因为记录是在减少阶段连接的。然而,某些图形处理和机器学习算法很难用Hadoop编写,因为有

java - Hadoop 中的 Mappers 和 Reducers 必须是静态类吗?

我试图在Hadoop中做一些简单的事情,发现在编写映射器和缩减器时,到处都被定义为静态的。我的任务将被分解成几个map零件和一个finalreduce.如果我想在其他工作中重用我的一个映射器怎么办?如果我将映射器类定义为内部static我可以在其他工作中使用它吗?此外,重要的问题可能需要更多和复杂的映射器,因此在维护时将它们全部放在一个巨大的文件中会变得很糟糕。有什么方法可以让映射器和缩减器作为常规类(甚至可能在单独的jar中)而不是作业本身? 最佳答案 您的问题是类必须是静态的,可以是静态的,还是可以是内部的,或者应该是内部的?H