在Hadoop2.0.0中编写mapreduce程序与之前的版本相比有哪些主要变化。 最佳答案 API现已更改。新包,新类。因此,如果您打算采用新的API,强烈建议为您的map和reduce方法使用@Override注释。否则,您将面临一些奇怪的行为。这是OldAPI的示例这是NewAPI的示例.请记住,这与新的YARN运行时无关。 关于Hadoop:在hadoop2.0.0中编写Mapreduce程序的主要区别是什么,我们在StackOverflow上找到一个类似的问题:
我有一个写入HBase的mapreduce作业。我知道您可以使用TableMapReduceUtil从reducer输出Put和Delete。是否可以发出Increment来增加HBase表中的值,而不是发出Puts和Gets?如果是,怎么做,如果不是,那为什么?我正在使用CDH3publicstaticclassTheReducerextendsTableReducer{publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{///....DOSOMES
我在6个节点的hadoop集群上运行MapReduce作业,配置了4个映射任务和10个缩减任务。Mapper/Reducer在增加map/reduce任务数量时失败很多,如下所示,我遇到以下错误:标准错误日志java.lang.RuntimeException:PipeMapRed.waitOutputThreads():subprocessfailedwithcode143atorg.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)atorg.apache.hadoop.streamin
我有一些数据来自reducer,它们是这样的:9,235,722,301,536,304,227,11我想根据第二列的数字对它们进行排序。像这样:2,306,307,115,724,221,539,23当我在本地运行我的程序时,我使用:sort-k2,2n但我不知道如何在Hadoop上做同样的事情。我尝试了几个不起作用的选项,例如:-Dmapreduce.partition.keycomparator.options=-k2,2n而且,我希望所有具有相同key的数据都可以在同一个reducer上运行。所以在这种情况下:2,30和6,30应该由同一个reducer处理。关于我应该放在ha
我正在使用MapReduce运行RFM分析程序。OutputKeyClass是Text.class,我将以逗号分隔的R(Recency)、F(Frequency)、M(Monetory)作为Reducer的键,其中R=BigInteger、F=Binteger、M=BigDecimal,值也是一个文本代表Customer_ID。我知道Hadoop根据键对输出进行排序,但我的最终结果有点奇怪。我希望输出键首先按R排序,然后是F,然后是M。但由于未知原因,我得到以下输出排序顺序:545,1,7652100000545,23,390159.402343750100001452,13,1325
我必须用Java编写一个MapReduce作业,在其中我获得了位置(城市、州、国家/地区),我需要将它们转换为纬度/经度坐标,其详细信息由外部Web服务提供:GoogleGeocodingAPI-我的问题是是否允许从MapReduce作业的Map函数调用HTTP请求,即:公共(public)类GeoLocator{privatestaticStringgenderCheck="female";publicstaticclassMapextendsMapReduceBaseimplementsMapper{//CALLEXTERNALWEBSERVICEHERE}..}
具体来说,我正在尝试找到一种使用mapreduce计算图中最短路径的方法。我想出的那个似乎需要多轮mapreduce。然而,到目前为止,我在Hadoop上阅读的所有文档似乎都没有清楚地描述运行具有多个阶段的mapreduce作业。从第一阶段的reducer中获取输出,并将其作为输入提供给下一阶段的映射器。我希望Hadoop允许像他这样的东西。 最佳答案 我在这里写了博客:http://codingwiththomas.blogspot.com/2011/04/controlling-hadoop-job-recursion.html
如标题中所述,当我执行我的Hadoop程序(并在本地模式下调试它)时,会发生以下情况:1.我的测试数据中的所有10个csv行都在Mapper、Partitioner和在映射步骤之后调用的RawComperator(OutputKeyComparatorClass)中得到正确处理。但是OutputValueGroupingComparatorClass和ReduceClass的函数之后不会执行。2.我的应用程序如下所示。(由于空间限制,我省略了我用作配置参数的类的实现,直到有人有想法,涉及它们):publicclassRetweetApplication{publicstaticintD
我已经从我的eclipse项目中捆绑了一个jar。我想将参数传递给jar。基本上是jar的输入文件。我想知道如何提供不在Hdfs中的输入文件。我知道那不是现在hadoop的作品,但这是为了测试目的。Eclipse具有本地文件的功能。有没有办法通过命令行来做到这一点? 最佳答案 您可以通过从命令行覆盖作业跟踪器和文件系统属性,以“本地”模式运行hadoop:hadoopjar-fslocal-jtlocal您需要使用GenricOptionsParser(如果您使用ToolRunner来启动您的工作,这是常态。
我试图在map方法中抛出IOExceptions,但MR作业没有停止。在抛出大量IOException后,作业将停止。有没有办法通过抛出异常或一些简单的调用来停止整个工作?谢谢。 最佳答案 这不是Hadoop的理想用例,也不是好的做法,但您可以直接从代码内部扼杀您的工作。因此,每当您达到希望工作停止的状态时,记录需要的内容并终止您的工作。这可以使用旧的mapredAPI或使用Job.killJob()来完成RunningJob.killjob()。您应该分别在configure()或setup()中获取对RunningJob或Job