一文讲透大数据列存标准格式 - Parquet

大规模分析型数据处理在互联网乃至其他行业公司中都已经应用的越来越广泛,尤其是当前已经可以用廉价的存储来收集和保存海量的业务数据情况下。如何让分析师和工程师便捷的利用这些数据也变得越来越重要。列式存储(Column-oriented Storage)是大数据场景面向分析型数据的主流存储方式。与行式存储相比,列存由于可以只提取部分数据列、同列同质数据拥有更好的编码及压缩方式,因此在 OLAP 场景下能提供更好的 IO 性能。

阅读更多

两阶段提交协议(2PC)

虽然两阶段提交协议只是 Paxos 协议的一个特例(参见 Jim Gray & Leslie Lamport 对两种协议的比较,Consensus on Transaction Commit,2004),但 2PC 在传统的数据库分布式事务处理中有着广泛的应用,因此研究 2PC 及其具体的实现仍具有一定的意义。

阅读更多

Lucene Codec 自定义扩展实现

Codec 是 Lucene 4.0 之后编解码索引信息的一种机制,它解耦了 Lucene 内部复杂的搜索/索引数据结构和外部存储之间的关系。通过对 Codec API 的扩展,用户可以方便的自定义 Lucene 索引数据的编码方式和存储结构。

阅读更多

拜占庭将军问题

拜占庭将军问题解决的是分布式系统中含有作弊节点情况下的分布式一致性(或共识)问题。Lamport 老爷子用一组拜占庭将军商定共同攻城计划形象的描述了这个问题,这里一个拜占庭将军就指代分布式系统中的一个节点。Lamport 老爷子描述的场景大致如下:一组拜占庭将军围困了一座敌城,将军们驻扎在敌城周围,只能通过信使通信,他们必须商定一个一致的作战计划。但是,他们之间可能存在叛徒,叛徒会竭力的干扰达成计划。所以我们需要找到一个算法使那些忠诚的将军们能达成一致协议。目前的结果表明,如果将军们之间使用口头消息通信(oral message,传递过程中内容可能被更改),当且仅当超过 2/3 的将军是忠诚的时候该问题才可解,也就是说 1 个将军可以扰乱 2 个将军。如果使用不可伪造的书面信息通信,则对于任何数目的将军和潜在叛徒,该问题都是可解的

阅读更多

Flink Checkpoint 机制

本文主要根据《Lightweight Asynchronous Snapshots for Distributed Dataflows》论文介绍 Flink 的轻量级异步快照算法。全局一致性快照是有状态分布式系统实现故障恢复机制的基础,在 Flink 中就使用了全局一致性快照机制实现系统的故障容错性(Fault tolerance),并确保有状态数据流的 Exactly-Once 语义。和已有的分布式全局快照算法相比,Flink 团队在论文中提出的异步屏障快照(Asynchronous Barrier Snapshotting/ABS)算法在系统的停顿及快照空间占用方面进行了改进,拥有更好的成本及性能。因此在 Flink 系统中,可以在计算作业运行时频繁的进行快照操作而不会对性能产生很大影响。

阅读更多