使用AWS EMR进行文件处理
我在处理一个问题,想请教一下架构方面的建议。我每15分钟就会收到一些日志文件,这些文件被压缩在一个gzipped文件夹里。每个文件夹里大约有100,000个需要处理的文件。我有一段Python代码,可以对这些文件进行相同的处理。这里没有使用map reduce的代码,只是简单地在文件夹里重新整理数据。
我想利用Hadoop的并行处理能力,让这些文件处理得更快。那么,我的问题是:我是否总是需要写map/reduce的代码才能使用Hadoop的并行处理能力,还是有办法在EMR实例上直接运行我现有的Python代码,并且并行处理这些文件呢?
谢谢你的帮助,
Amey
1 个回答
0
我可以运行我现在的Python代码吗?
可能可以。
可以看看Hadoop Streaming。
你可以使用Hadoop Streaming来做“仅映射”的任务。只需在启动任务的hadoop命令中添加以下内容:
-D mapred.reduce.tasks=0
我总是需要使用MapReduce吗?
不一定。
MapReduce是一个运行在Hadoop上的框架。即使你使用它,也可以配置任务而不需要reducer。这样的话,基本上会在每个输入上运行映射代码,并输出映射任务的结果。
你也可以在YARN上原生编写应用程序。我对这个不太熟悉,所以建议你查看文档。这个过程看起来比较复杂,而且主要是用Java来做的。
http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html