【问题标题】:Apache Kylin fault toleranceApache Kylin 容错
【发布时间】:2015-03-15 16:10:38
【问题描述】:

Apache Kylin 看起来是一个很棒的工具,可以满足许多数据科学家的需求。这也是一个非常复杂的系统。我们正在开发具有完全相同目标的内部解决方案,即具有低查询延迟的多维 OLAP 多维数据集。 在众多问题中,我现在最关心的一个是容错问题。 随着大量传入的事务数据,立方体必须增量更新,并且一些立方体在很长一段时间内更新,例如那些具有年尺度时间维度值的立方体。在这么长的时间里,复杂系统的某些部分肯定会失败,那么系统如何确保所有原始事务记录恰好一次聚合到立方体中,不多不少?即使每个部分都有自己的容错机制,但这并不意味着它们会自动一起播放。 为简单起见,我们可以假设所有输入数据都由另一个进程保存在 HDFS 中,并且可以以您希望从任何中断(自愿或强制)中恢复的任何方式“回放”。 Kylin 的容错考虑是什么,或者说它不是一个真正的问题?

【问题讨论】:

    标签: hadoop bigdata analytics olap kylin


    【解决方案1】:

    有数据故障和系统故障。

    数据容错:Kylin 将多维数据集划分为多个段,并允许在不影响整个多维数据集的情况下重建单个段。例如,假设每天建立一个新的每日段,并在周末合并到每周段;每周段合并为每月段,依此类推。当一周内出现数据错误(或任何变化)时,您只需重建一天的段。更早的数据更改将需要重建每周或每月的部分。

    分段策略是完全可定制的,因此您可以平衡数据容错性和查询性能。更多段意味着更能容忍数据更改,但也意味着要为每个查询执行更多扫描。 Kylin 提供 RESTful API,外部调度系统可以调用 API 来触发段的构建和合并。

    多维数据集仍处于联机状态,并且可以在其某些段正在重建时提供查询。

    系统容错:Kylin 依赖 Hadoop 和 HBase 来实现大多数系统冗余和容错。除此之外,Kylin 中的每个构建步骤都是幂等的。这意味着您可以安全地重试失败的步骤而不会产生任何副作用。这确保了最终的正确性,无论构建过程经历了多少次失败和重试。

    (我也是 Apache Kylin 的共同创建者和提交者。:-)

    【讨论】:

      【解决方案2】:

      注意:我是 Apache Kylin 的共同创建者和提交者。

      容错点非常好,当它们有非常大的数据集时,我们实际上会被问到。从头开始重新计算将需要大量的计算资源、网络流量和时间。

      但从产品的角度来看,问题是:精准结果和资源哪个更重要?对于交易数据,我认为确切的数字更重要,但对于行为数据,应该没问题,例如,distinct count value 是现在 Kylin 中的近似结果。这取决于您将利用什么类型的案例来利用 Kylin 来满足业务需求。

      如果我们稍后有更明确的线索,会将这个想法放入我们的积压工作中,并将更新到 Kylin 开发邮件列表。

      谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        相关资源
        最近更新 更多