Apache Kylin 看起来是一个很棒的工具,可以满足大量数据科学家的需求。这也是一个非常复杂的系统。我们正在开发一个内部解决方案,其目标完全相同,即具有低查询延迟的多维 OLAP 多维数据集。 在众多问题中,我现在最关心的是容错。 交易数据量大,立方体必须增量更新,有些立方体是长时间更新的,比如时间维度值为年尺度的立方体。在这么长的时间里,复杂系统的某些部分肯定会失败,系统如何确保所有原始交易记录只聚合到长方体中一次,不多也不少?即使每一 block 都有自己的容错机制,并不意味着它们会自动一起演奏。 为简单起见,我们可以假设所有输入数据都由另一个进程保存在 HDFS 中,并且可以以您希望从任何中断中恢复的任何方式“回放”,无论是自愿的还是强制的。 Kylin 的容错考虑因素是什么,或者这不是真正的问题?
最佳答案
存在数据故障和系统故障。
数据容错:Kylin 将立方体划分为段,并允许在不影响整个立方体的情况下重建单个段。例如,假设每天建立一个新的每日段,并在周末合并到每周段;每周段合并到每月段等。当一周内出现数据错误(或任何变化)时,您只需要重建一天的段。往后的数据更改将需要重建每周或每月的段。
分段策略是完全可定制的,因此您可以平衡数据容错性和查询性能。更多的段意味着对数据更改的容忍度更高,但也意味着每个查询要执行的扫描更多。 Kylin 提供了 RESTful API,外部调度系统可以调用 API 来触发段构建和合并。
多维数据集仍然在线,并且可以在其某些段正在重建时为查询提供服务。
系统容错:Kylin 依赖于 Hadoop 和 HBase 来实现大部分系统冗余和容错。除此之外,Kylin 中的每个构建步骤都是幂等的。这意味着您可以安全地重试失败的步骤而不会产生任何副作用。这确保了最终的正确性,无论构建过程经历了多少次失败和重试。
(我也是 Apache Kylin 的共同创建者和提交者。:-)
关于hadoop - Apache Kylin 容错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062904/