学习如何在Python中实现MapReduce/Hadoop的出发点?

iRo*_*biv 13 python hadoop mapreduce

我最近开始进入数据分析,我已经学到了很多在过去一年(目前,几乎完全使用Python).我觉得下一步是开始自己在MapReduce/Hadoop中进行培训.我没有正式的计算机科学培训,所以经常不太了解人们写Hadoop时使用的术语,因此我的问题在这里.

我希望的是Hadoop的顶级概述(除非我还应该使用其他东西吗?),也许是对某种教程/教科书的推荐.

例如,如果我想并行化我用Python编写的神经网络,我将从哪里开始?是否有一种相对标准的方法来实现Hadoop算法,或者每种解决方案都是特定于问题的?

Apache wiki页面将Hadoop描述为"在由商用硬件构建的大型集群上运行应用程序的框架".但这意味着什么?我听说过"Hadoop集群"一词,我知道Hadoop是基于Java的.那么这对于上面的例子是否意味着我需要学习Java,在一些亚马逊服务器上设置一个Hadoop集群,然后在最终使用Hadoop在集群上工作之前使用Jython-ify我的算法?

非常感谢您的帮助!

izh*_*hak 15

首先,要将Hadoop与Python一起使用(无论何时在您自己的集群或Amazon EMR上运行它,或者其他任何东西),您都需要一个名为"Hadoop Streaming"的选项.

阅读Hadoop手册的原始章节(更新链接),了解它的工作原理.

还有一个很棒的库 "MrJob",它简化了在Hadoop上运行Python的工作.

您可以设置自己的群集或尝试使用Amazon Elastic Map Reduce.后者可能会花费你一些东西,但有时在开始时更容易运行.有关如何在Amazon EMR上使用Hadoop Streaming运行Python 的精彩教程.它立即显示了一个简单但实​​际的应用.

要了解Hadoop本身,我建议您阅读其中一本书.他们说"Hadoop In Action"更适合那些对Python/Hadoop Streaming感兴趣的人.

另请注意,对于测试/学习内容,您可以在本地计算机上运行Hadoop而无需实际的群集.

更新:

至于理解Map Reduce(即如何在Map Reduce语言中识别和表达不同类型的问题),请阅读Python中的示例" MapReduce模式,算法和用例 ".