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

学习如何在Python中实现MapReduce/Hadoop的起点?,python,hadoop,mapreduce,Python,Hadoop,Mapreduce,我最近开始从事数据分析,在过去的一年里我学到了很多东西(目前,几乎完全使用Python)。我觉得下一步是开始学习MapReduce/Hadoop。然而,我没有接受过正式的计算机科学培训,因此经常不太理解人们在写Hadoop时使用的行话,因此我的问题就在这里 我所希望的是Hadoop的顶级概述(除非我还应该使用其他东西?),也许是对某种教程/教科书的推荐 例如,如果我想并行化我用Python编写的神经网络,我从哪里开始?是否有一种相对标准的方法来用算法实现Hadoop,或者每个解决方案都是针对特定

我最近开始从事数据分析,在过去的一年里我学到了很多东西(目前,几乎完全使用Python)。我觉得下一步是开始学习MapReduce/Hadoop。然而,我没有接受过正式的计算机科学培训,因此经常不太理解人们在写Hadoop时使用的行话,因此我的问题就在这里

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

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

ApacheWiki页面将Hadoop描述为“在由商品硬件构建的大型集群上运行应用程序的框架”。但这意味着什么?我听过术语“Hadoop集群”,我知道Hadoop是基于Java的。那么,对于上面的例子,这是否意味着我需要学习Java,在几个amazon服务器上建立一个Hadoop集群,然后Jython验证我的算法,最后使用Hadoop在集群上运行


非常感谢你的帮助

为什么不从起点开始?因为其他人都是从这里开始的。对于并行性,有许多不同的选项可供选择,我建议您从下载开始,这是当今许多行业的标准,简化了Hadoop的安装过程。接下来是单词计数示例,它是学习Map/Reduce的标准hello world等效工具

在此之前,了解map/reduce的一个简单方法是尝试python内置的map/reduce函数:

x = [1, 2, 3, 4]
y = map(lambda z: z*z, x]
print y
[1, 4, 9, 16]
q = reduce(lambda m,n : m+n, y)
print q
30

在这里,映射器通过平方每个元素来变换数据,而减缩器将平方相加。Hadoop只是使用它来扩展大规模计算,但您需要找出自己的映射和缩减函数。

首先,要将Hadoop与Python结合使用(无论何时您在自己的集群、Amazon EMR或任何其他平台上运行它),您都需要一个名为“Hadoop Streaming”的选项

阅读Hadoop手册()了解其工作原理

还有一个“MrJob”可以简化在Hadoop上运行Python作业

您可以建立自己的集群,或者尝试使用Amazon Elastic Map Reduce。后者可能会让您付出一些代价,但有时在开始时更容易运行。关于如何在AmazonEMR上使用Hadoop流媒体运行Python有一个详细的介绍。它立即显示了一个简单但实际的应用

要学习Hadoop本身,我建议您阅读其中一本书。他们说,对于那些对Python/Hadoop流媒体感兴趣的人来说,这样做更好

还请注意,为了测试/学习一些东西,您可以在本地机器上运行Hadoop,而不需要实际的集群

更新:

至于理解Map Reduce(即如何在Map Reduce语言上识别和表达不同类型的问题),请阅读带有Python示例的优秀文章“”。

Doug的解决方案不适合Google规模的生产,因为它只是Python多处理池上的一个薄包装器(它只使用一台机器,但可以在该机器上使用多个内核)。但这足以让你开始,而且很容易看到它在做什么

我想并行化一个神经网络

不容易。节点之间的通信将比它的价值更麻烦。但是,您可以运行多个网络实例,以提高吞吐量


ML问题通常很容易并行化——在每个节点上运行不同的神经网络。梯度下降可能有点棘手,因为梯度下降是非常线性的,但你可以使用其他一些优化方法(尝试几种不同的步长,并选择最好的)。

对于那些喜欢将MOOC作为选项的人,Udacity上有一个与Cloudera合作的选项。在本课程中,您有机会在本地安装Cloudera Hadoop分发虚拟机,并在示例数据集上执行一些map/reduce作业。Hadoop流用于与Hadoop集群的交互,编程是在Python中完成的

好吧,我已经连续4天在做这件事了,最后我想我已经开始做了。请查收。我想这会有帮助。

谢谢,不过我想了解的更多的是实际应用。也就是说,为了能够使用Hadoop,我需要设置和了解什么?虽然阅读原著对于一些背景来说是一个好主意,所以谢谢你。谢谢,我会考虑下载这个。太好了。这里有很多有用的东西。谢谢。我很晚才问,但我是Hadoop的一个极端初学者,上面的内容至少能教我用Python开发Hadoop的基本知识吗?我想在本地机器上试试。