草庐IT

mapReduce

全部标签

java - 如何读取每个reduce任务的计数器(例如,输出记录数)

我正在运行迭代hadoop/mapreduce作业来分析某些数据。(apachehadoop版本1.1.0)我需要知道每个reduce任务的输出记录数才能运行M/R作业的下一次迭代。我可以在每个M/R作业后读取合并计数器,但我找不到单独读取每个任务计数器的方法。请就此告诉我。崔 最佳答案 计数器不是这样工作的:每个任务都将其指标报告给一个中心点,因此无法从各个任务中获知计数器值。来自这里:http://www.thecloudavenue.com/2011/11/retrieving-hadoop-counters-in-mapre

hadoop - 随着集群规模的增加,每个节点并发运行的映射器数量在 Elastic MapReduce w/AMI 3.1.0 和 Hadoop 2.4.0 上急剧下降

在相关问题(HowtosettheprecisemaxnumberofconcurrentlyrunningtaskspernodeinHadoop2.4.0onElasticMapReduce)中,我要求提供将并发运行的映射器/缩减器的数量与YARN和MR2内存参数相关联的公式。事实证明,在ElasticMapReduce上,当我的集群有2到10个c3.2xlarge节点时,那里提到的公式的变体工作正常,每个节点有7-9个并发运行的映射器;但是当c3.2xlarges的数量为20或40时,我发现集群未充分利用:每个节点仅运行1-4个映射器。由于我的工作受CPU限制,这尤其糟糕:MR2

hadoop - Sqoop 运行到本地作业运行器模式

当我运行sqoop时,我不确定它为什么会进入本地作业运行器模式,然后说我为LocalJobRunner提供了无效的jobtrackerurl。谁能告诉我这是怎么回事?$bin/sqoopimport-jtmyjobtracker:50070--connectjdbc:mysql://mydbhost.com/mydata--usernamefoo--passwordbar--as-parquetfile--tablecampaigns--target-dirhdfs://myhdfs:8020/user/myself/campaigns14/08/2021:04:50INFOsqoop

java - 如何使用 Hadoop Mapreduce 运行非 Java 程序(首选 C++/Matlab)

我有一个要求,说明C++和Matlab算法的执行应该从Hadoopmapreduce编程触发。这会映射要分发的执行算法吗。因为我们没有计划使用整个mapreduce程序重写算法 最佳答案 在R2014b中,MATLAB允许从MATLAB内部进行mapreduce并与Hadoop集成。我不能确定你的具体用例,但你可能想检查一下:http://www.mathworks.com/help/matlab/mapreduce.htmlhttp://www.mathworks.com/discovery/matlab-mapreduce-ha

hadoop - 一个巨大的DataStructure可以直接交给MapReduce处理而不加载到HDFS上吗?

我们正在研究将一个巨大的N维数据结构(NetCDF文件)流式传输作为Mapper函数的输入而无需写入文本文件然后加载到HDFS上的想法。我们有一个应用程序已经拥有这个巨大的数据结构。所以我们想跳过所有涉及写入和读取文本文件的开销。我们需要对以下问题的一些输入..1)第三方应用程序能否将数据直接流式传输到MapReduce?2)如果上述情况可行,MapReduce是否会处理将此DataStructure拆分为输入block,或者我们是否需要明确地执行此操作?3)这是否可能在ApacheSPARK上实现,因为Spark从DRAM运行,而DataStructure也在DRAM上,因此我们不必

Hadoop namenode 为什么总是需要格式化?

我有一个单节点hadoop1.0.4,它工作正常(我可以运行map-reduce作业)。我遇到的问题是每当我重新启动并执行start-dfs.shnamenode时都没有启动,我必须执行“hadoopnamenode-format”然后start-dfs.sh和start-mapred.sh总是..这迫使我每次加载我的数据。您能否提示我可能需要检查的可能的解决方案或配置问题?谢谢, 最佳答案 看起来你没有覆盖hdfs配置dfs.name.dir,dfs.data.dir,默认情况下它指向/tmp目录将被清除当您的机器重新启动时。您必

java - 是否可以使现有的 mapreduce 程序从输入文件的指定偏移量开始运行

有什么方法可以运行现有的mapreduce程序,使其仅从输入文件的给定偏移量开始处理?例如:如果给定的偏移量是500,mapreduce程序应该从第500个字节开始处理输入文件。 最佳答案 这是可能的,但需要Java编码和创建自定义InputFormat。例如,您可以子类化FileInputFormat并覆盖方法publicListgetSplits(JobContextjob)和protectedFileSplitmakeSplit(Pathfile,longstart,longlength,String[]hosts)。要传递起

java - Hadoop MultipleInputs 因 RuntimeException 而失败

我的现有系统从特定文件夹读取所有文件,并在其上运行MapReduce。代码如下:Pathpath=newPath(inputPath)if(!FileSystem.get(conf).exists(path)){System.out.println("Pathdoesnotexist(skipping):"+path);return1;}FileInputFormat.setInputPaths(conf,inputPath);这运行没有任何问题。现在,最近的文件更改要求我指定将哪些文件用作输入。我将代码更改为:for(StringfileName:filePath.split(","

java - hadoop map reduce作业没有输出

我在Netbeans中编写MapReduce作业并生成(也在NB中)一个jar文件。当我尝试在hadoop(版本1.2.1)中执行此作业时,我执行此命令:$hadoopjarjob.jarorg.job.mainClass/home/user/in.txt/home/user/outdir此命令不显示任何错误,但不创建outdir、outfiles、...这是我的工作代码:映射器publicclassMapperextendsMapReduceBaseimplementsorg.apache.hadoop.mapred.Mapper{privatefinalIntWritableone

sorting - mapreduce 分区内的数据是否已排序,如果是,它是如何发生的?

mapreduce分区内的数据是否已排序,如果是,如何排序?AFAIK,它是根据key分组的。如果它在内部排序,那么对所有分区内的所有数据进行排序不是一种开销吗? 最佳答案 如果您谈论的是映射器作为输入接收的输入拆分,那么不是;它们没有排序,因为这确实会产生不必要的开销。排序在map阶段结束之前开始(仅当使用reducer时),因此reduce函数的输入已排序。Partitioner定义了指定哪个reducer将处理映射器输出的标准。HashPartitioner(默认使用的Partitioner的实现)对映射器的输出键进行哈希处理