1

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

4

2 回答 2

2

有数据故障和系统故障。

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

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

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

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

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

于 2015-03-30T05:19:00.847 回答
1

备注:我是 Apache Kylin 的共同创造者和提交者。

容错点确实很好,当它们具有极大的数据集时,我们实际上会从某些情况下被问到。从头开始重新计算将需要巨大的计算资源、网络流量和时间。

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

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

谢谢。

于 2015-03-25T01:40:30.200 回答