One Stack Big Data Platform

Overview

分布式本质论: 高吞吐(high throughput), 高可用(high available), 低延迟(low latency), 可扩展(high scalability).

整合一下个人对于大数据平台, 数据中台, 数据仓库的技术栈, 这里有一个它们之间差异的回答,

- 数据库阶段, 主要是OLTP(联机事务处理)的需求
- 数据仓库阶段, OLAP(联机分析处理)成为主要需求
- 数据平台阶段, 主要解决BI和报表需求的技术问题
- 数据中台阶段, 通过系统来对接OLTP和OLAP的需求, 强调数据业务化的能力

当然, 主要看具体业务需求, 一切脱离业务的架构都是耍流氓. 业务开展到哪里, 架构也要跟着并延展些.

另外, 有些框架经过多年的发展, 已经脱离了单一的技术范畴, 向着多元化的生态圈发展. 当然这也是围城和壁垒.

Structure

下面是一个不大完善的数据栈图, 中台可以在此之上做扩展. db Arch

data collection

image

flume(2011): 采用事务来确保event可靠性, 由sink来确认是否remove channel里的event, via apache

image

libbeat(2015): 通过Scan()来确认新增file, 然后为其new一个harvester发送到libbeat做聚合, via elastic

Reference

data storage(raw)

batch

image

hdfs(2006): 分布式文件系统, 通过master-slave和replica机制来低成本高可靠地存储数据. via bigintellects

stream

image

kafka(2011): file system cache, zero copy(内核态), 顺序写磁盘. via dataflair

image

pulsar(2016): 将无状态的消息服务层broker有状态的消息持久层bookkeeper分离, 无状态可以随时增删, 而有状态却通过replica segment来做HA;当然还有scale out. via streamthoughts

Reference

  1. 技术架构及选型
  2. Dynamo: Amazon’s Highly Available Key-value Store
  3. Pulsar(新一代高性能消息系统)核心总结
  4. BookKeeper 原理浅谈
  5. Comparing Pulsar and Kafka
  6. Understanding How Apache Pulsar Works

data compute

batch

image

spark(2014): lambda(batch-stream分离), master-slave, rdd, lineage, persist, via 0x0fff

image

airflow(2015): high scalability, HA, UI manage, via clairvoyantsoft

image

oozie(2011): server与compute分离, multilayer(bundle), HA, via devstacks

这里scheduler都是通过多server来避免SPOF, 而多server之间的状态同步是通过DB(ZK)来传递.

有别于常规的多server leader-standby模式(eg., kafka broker, DB主从复制)

stream

image

flink(2011): kappa, master-slave, state, window, cp, via apache

Reference

  1. Making Apache Airflow Highly Available
  2. Oozie Architecture and Job Scheduling
  3. Lambda架构 vs Kappa架构
  4. Flink–Checkpoint机制原理
  5. 一文搞懂Flink内部的Exactly Once和At Least Once

data storage

in-memory

image

redis(2009): mem-base, 非阻塞多路IO复用, 事务, proactive expire, HA(sentinel), throughput(cluster), via redislabs

image

ignite(2015): 分布式, KV, mem-disk SQL, 2PC事务, 数据本地性, via apache

timeseries

image

influxdb(2013): TSM, TSI, WAL/cache, rp, via hbasefly

full-text

image

es(2010): master-data, zen discovery , replica, LSM, full text

MOLAP

image

kylin(2013): 预计算cube, SQL, high scalability, MR, via apache

image

druid(2011), role separate(master-query-data), LSM, via apache

ROLAP

image

clickhouse(2016): russia, column oriented, SQL, 主备复制, index(primary key sort), table engine, via altinity

image

greenplum(2015): master-slave, append-optimized, SQL, resource queue, via researchgate

image

tidb(2017): 分布式, SQL, raft, LSM, mysql alternative, via pingcap

query engine

image

presto(2013): master-slave, mem-base MPP, SQL, connector, via slideshare

image

sparksql(2014): catalyst, cost base, rdd, via dataflair

image

hive(2010): SQL, MR, metadata, via andr83

image

pig(2008): pig latin, MR, via dezyre

graph

image

neo4j(2007): 定长记录结构, cypher, HA, via slideshare

Reference

  1. IO多路复用技术(multiplexing)是什么?
  2. 为什么IO多路复用要搭配非阻塞 IO?
  3. Ignite(二): 架构及工具
  4. 数据库如何用 WAL 保证事务一致性?
  5. Every shard deserves a home
  6. Guide to Refresh and Flush Operations in Elasticsearch
  7. Apache Kylin 入门 2 - 原理与架构
  8. apache druid架构、原理、执行流程
  9. 数据结构篇—-B+树与LSM树浅析
  10. ClickHouse表引擎到底怎么选
  11. TiDB整体架构
  12. Presto: SQL on Everything
  13. Presto架构及原理、安装及部署
  14. Spark SQL Catalyst优化器
  15. What is Hive Metastore?
  16. Neo4j_高层架构和应用

data analytics

BI

TODO

TODO