【问题标题】:DB access from a Mapper in MapReduce从 MapReduce 中的 Mapper 访问数据库
【发布时间】:2017-02-15 09:26:55
【问题描述】:

我正在计划我正在开发的下一代分析系统,我想使用MapReduce/Stream-Processing 平台之一来实现它,例如FlinkSpark Streaming 等。

对于分析,映射器必须具有 DB 访问权限。

所以我最担心的是当一个映射器并行时,来自连接池的连接都将被使用,并且可能有一个映射器无法访问数据库。

我应该如何处理? 这是我需要关心的事情吗?

【问题讨论】:

  • 我来自 Spark 背景。我认为您应该避免给您的“映射器”数据库访问权限,这会导致复杂性,并且我认为这不是并行数据分析的最佳方法(至少使用 Spark)。您是否正在研究将数据导入分析管道的最佳方式?
  • 您在计算过程中需要数据库访问权限是什么?数据摄取?查找?
  • @ImDarrenG,是的,我正在研究将数据导入分析管道的最佳方法。和@LiMuBei,我需要处理来自许多传感器的大量数据,每个样本都需要使用数据库中的元数据进行处理(可能会不时更改,否则我会在每个映射器中缓存数据库中的所有数据)

标签: apache-spark parallel-processing mapreduce spark-streaming distributed-computing


【解决方案1】:

正如您所指出的,拉动式策略效率低下和/或复杂。

您从数据库中提取元数据的策略将取决于元数据的数量和元数据更改的频率。无论哪种方式,从在需要时获取元数据,而在元数据发生更改时接收更新,这可能是一个好方法。

一些想法:

  • 定期将元数据转储到平面文件到分布式文件系统中
  • 在写入时将元数据更新流式传输到您的管道,以使内存中的缓存保持最新
  • 使用单独的机制来获取元数据,例如 Akka Actor/s 轮询更改

这将取决于您能够为给定的用例做出的权衡。

如果数据库交互是不可避免的,我想知道 map-reduce 风格的框架是否是解决您的问题的最佳方法。但是框架应该重试任何失败的任务。

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多