代码之家  ›  专栏  ›  技术社区  ›  Jay

“采用MapReduce模型”是可伸缩性的通用答案吗?

  •  9
  • Jay  · 技术社区  · 14 年前

    我一直试图理解MapReduce的概念并将其应用到我的当前情况中。我的情况如何?嗯,我这里有一个ETL工具,其中 发生在源和目标数据源(数据库)之外。因此,源数据源纯粹用于提取和加载目标。

    所以,今天的这种转变行为,比如说,一百万条记录需要大约X个小时。我想解决这样一个场景:我有10亿个记录,但我希望在相同的X小时内完成工作。因此,我的产品需要根据数据规模进行扩展(添加更多的商品机器)。如您所见,我只担心通过利用所有这些机器的CPU能力,将我的产品的转换功能分发到不同的机器上。

    这是麻烦开始的时候。我阅读了Hadoop:determinal Guide的副本,我了解到Hadoop的许多常见用例都是在以下场景中:

    • 非结构化数据,需要执行聚合/排序/或类似的操作。
    • 等!

    这里是我的场景,我从一个数据库中提取并加载到一个数据库(其中包含结构化数据),我的唯一目的是以可靠的方式引入更多的CPU,并通过分发我的转换。重新定义我的转换以适应Map和Reduce模型本身就是一个巨大的挑战。下面是我的问题:

    1. 情节?如果是,可以具体说 关于你如何处理 你的转变?你用过吗 CPU功率?

    2. MapReduce概念 分布式的通用答案 好的选择?

    3. 我的理解是 数据集 我的理解对吗?
    3 回复  |  直到 14 年前
        1
  •  5
  •   Niels Basjes    14 年前

    如果要在许多系统上扩展处理问题,必须做两件事:

    1. 确保您可以独立处理这些信息。
    2. 这些部分之间不应该需要共享资源。

    所以,如果你是从一个关系模型开始,那么主要的障碍是你有关系。拥有这些关系在关系数据库中是一项巨大的资产,但在。。。当试图扩大规模时。

    从关系部分到独立部分的最简单方法是跳转并将数据反规范化为包含所有内容的记录,并集中在要处理的部分。然后,您可以将它们分布在一个巨大的集群上,并在处理完成后使用结果。

    回到你的问题:

    #你在ETL场景中使用过Hadoop吗?

    是的,输入是Apache日志文件,加载和转换包括解析、规范化和过滤这些日志行。结果不能放入一个正常的关系数据库!

    #MapReduce概念是分布式计算的普遍答案吗?还有其他同样好的选择吗?

    MapReduce是一个非常简单的处理模型,对于任何能够分割成许多100%独立的小部分的处理问题都非常有用。MapReduce模型非常简单,据我所知,任何可以分割成独立部分的问题都可以写成MapReduce的一系列步骤。

    我不知道此时此刻有一个更好的模型来实现。

    #我的理解是MapReduce应用于大型数据集的排序/分析/分组/计数/聚合等,我的理解是否正确?

    是的,这是最常见的应用程序。

        2
  •  1
  •   Daniel Voina    14 年前

    MapReduce是“一些”类问题的“一个”解决方案。它并不能解决所有的分布式系统问题——把大型的TPS系统想象成银行、电信或电信信号系统——那么MR可能是无效的。但对于非实时数据处理,MR的性能非常出色,您可能会认为这是一种大规模的ETL。

        3
  •  1
  •   Paul Sonier    14 年前

    我个人的理解是,MapReduce对于大量“非结构化”数据特别有用;也就是说,它对于强制使用某种结构(基本上,有效地对大型非结构化数据集提供“一阶”操作)非常有用。然而,对于非常大且相对“紧密绑定”的数据集(即不同数据元素之间的强关联),这(在我的理解中)不是一个很好的解决方案。

    推荐文章