使用AWS EMR进行文件处理

时间:2014-05-27 21:29:35

标签: python hadoop parallel-processing mapreduce amazon-emr

对于我正在研究的这个问题,我需要建筑建议。我在gzip文件夹中每隔15分钟就有一个日志文件。其中每个都有大约100,000个要处理的文件。我有一个python代码,对每个文件执行相同的处理。没有地图缩减代码。只是我们正在重新整理该文件夹中的数据。

我想使用Hadoop的并行处理能力来更快地处理这些文件。所以,我的问题是,我是否总是要写一个map / reduce代码来使用hadoop的并行处理能力,或者有一种方法可以在EMR实例上运行我当前的Python代码并并行处理这些文件?

感谢您的帮助, Amey

1 个答案:

答案 0 :(得分:0)

我可以运行当前的Python代码吗?

可能。

查看Hadoop Streaming。

http://hadoop.apache.org/docs/r2.5.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopStreaming.html

您可以使用Hadoop Streaming执行“仅限地图”作业。将以下内容添加到启动作业的hadoop命令中:

 -D mapred.reduce.tasks=0

我是否总是必须使用MapReduce?

没有。

MapReduce是一个在Hadoop之上运行的框架。即使您使用它,也可以在没有减速器的情况下配置作业。这将基本上在每个输入上运行地图代码并输出任何地图任务输出。

您还可以在YARN之上本地编写应用程序。我对此没有多少经验,所以我会把你推荐给文档。它看起来像一个非常沉重的,以Java为中心的过程。

http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html