要创建MapReduce作业,您可以使用旧org.apache.hadoop.mapred包或org.apache.hadoop.mapreduceMapper和Reducers,Jobs ... 的新包.第一个已被标记为已弃用但同时也已恢复.现在我想知道使用旧的mapred包或新的mapreduce包来创建作业以及为什么更好.或者它只取决于您是否需要像旧的mapred包中可用的MultipleTextOutputFormat之类的东西?
我想使用MapReduce方法分析连续的数据流(通过HTTP访问),所以我一直在研究Apache Hadoop.不幸的是,似乎Hadoop希望以固定大小的输入文件开始工作,而不是在消费者到达时能够将新数据传递给消费者.这是真的吗,还是我错过了什么?是否有一个不同的MapReduce工具可以处理从打开的套接字读入的数据?可扩展性是一个问题,所以我更喜欢让MapReducer处理凌乱的并行化内容.
我玩过Cascading并能够在通过HTTP访问的静态文件上运行作业,但这实际上并没有解决我的问题.我可以使用curl作为中间步骤将数据转储到Hadoop文件系统的某个地方,并编写一个监视程序,以便在每次准备好新的数据块时触发新作业,但这是一个肮脏的黑客行为; 必须有一些更优雅的方式来做到这一点.有任何想法吗?
我正在Hadoop(在亚马逊的EMR上)运行流媒体作业,使用Python编写的映射器和reducer.我想知道如果我在Java中实现相同的mapper和reducer(或使用Pig),我将体验到的速度提升.
特别是,我正在寻找人们从流式传输到自定义jar部署和/或Pig的经验,以及包含这些选项的基准比较的文档.我发现了这个问题,但答案对我来说不够具体.我不是在寻找Java和Python之间的比较,而是在Hadoop中的自定义jar部署和基于Python的流式传输之间进行比较.
我的工作是从Google Books NGgram数据集中读取NGram计数并计算汇总度量.似乎计算节点上的CPU利用率接近100%.(我想听听你对CPU绑定或IO绑定工作的差异的看法).
谢谢!
AMAC
到目前为止,我一直在使用Pig或Java for Map Reduce专门针对Hadoop集群运行作业.我最近尝试通过Hadoop流式传输使用Python Map Reduce,这也非常酷.所有这些对我来说都是有意义的,但是当我想要使用一个实现与另一个实现时,我有点朦胧.Java map reduce,我基本上只在我需要速度时使用,但是什么时候我会想要使用像Python流一样的东西,而不是只用PIG/Hive中更少,更容易理解的行写出相同的东西?简而言之,每个人的利弊是什么?