什么是最容易使用的分布式地图减少编程系统?

时间:2010-02-17 17:09:21

标签: mapreduce

什么是最容易使用的分布式地图缩减编程系统?

例如。在包含许多用户的分布式数据存储中,每个用户都有许多连接,比方说我想计算连接总数:

Map:
for all records of type "user"
do for each user
    count number of connections
    retrun connection_count_for_one_user

Reduce:
reduce (connection_count_for_one_user)
    total_connections += connection_count_for_one_user

是否有任何mapreduce系统可以让我以这种方式编程?

1 个答案:

答案 0 :(得分:2)

好吧,我会匆匆提出一些建议,但你的问题不太清楚。

那么你如何存储你的数据?存储机制与将MapReduce算法应用于数据的方式分开。我假设你正在使用Hadoop Distributed File System

您说明的问题实际上与典型的Hadoop MapReduce word count example非常相似。而不是单词,而只是计算用户。

将MapReduce应用于存储在HDFS上的数据的一些选项是:

  • Java framework - 如果您对Java感到满意,那就太好了。
  • Pig - 一种高级脚本语言。
  • Hive - Hadoop的数据仓库解决方案,提供类似SQL的接口。
  • Hadoop streaming - 允许您用几乎任何语言编写映射器和缩减器。

哪个最简单?

那么一切都取决于你感觉舒服的东西。如果知道Java,请看一下标准的Java框架。如果您习惯使用脚本语言,则可以使用Pig或流式传输。如果您了解SQL,可以查看使用Hive QL查询HDFS。我会看一下每个文档的起点。