郭斯杰_从文件存储,对象存储到流存储 - 重新思考流计算时代的分布式存储

注脚

展开查看详情

1. E T B . 从⽂文件存储,对象存储到流存储 N P U I T — 重新思考流计算时代的分布式存储 Sijie Guo —- twitter: @sijieg wechat: guosijie_

2.Who am I • Sijie Guo E T • . N 开源项⽬目爱好者:Pulsar, BookKeeper, Hive, HBase, … B • Streamlio联合创始⼈人 P U • I T Yahoo -> Twitter -> Streamlio • 华中科⼤大 -> 中科院计算所

3.Storage E T B . N P U I T

4.批: Hadoop E T B . N P U I T

5.流: Storm + Kafka E T B . N P U I T

6.The Current Mess E T B . N P U I T

7.The Current Mess (2) • Stream Data Silo E T • . N 数据通常以Topics/Streams来进⾏行行组织,消息系统作为“存储” B • Batch Data Silo P U • I T 数据通常以⽂文件、对象来进⾏行行组织,⽂文件系统、对象存储作为其存储 • 两个不不同的Silo,有两套不不同的数据、API和相应的⼯工具

8.Lambda Architecture E T B . N P U I T

9.Kappa Architecture E T B . N P U I T

10.Kappa Architecture E T N 看起来可以解决批流⼀一体的问题 . • • U B 但是Kappa Architecture使⽤用messaging system作为data layer • I TP 这个Data Layer是为“messaging”设计的,⽽而不不是为“Storage”设计的 • 我们需要⼀一个真正意义上的“Stream Storage”

11.流存储 E T N “Stream” Storage: 数据在写⼊入后消费(读)者即可⻅见,Pub/Sub接⼝口 . • • U B Stream “Storage”: 存储系统,可靠、稳定地保存数据。 • I T “Big Data”: ⽔水平扩展性 P • ⾼高吞吐量量

12. E T B . N 什什么是Apache Pulsar P U I T

13. E T B . N P U I T

14. E T . N “Flexible Pub/Sub messaging backed by durable B U log/stream storage” I T P

15.项⽬目状态 T • 2012在Yahoo内部启动,经历了了⽆无数的迭代 • 2016年年九⽉月Yahoo将Pulsar开源 . N E • U B 2017年年六⽉月Yahoo将Pulsar捐献给了了Apache软件基⾦金金会 P 2018年年九⽉月Pulsar毕业成为顶级项⽬目 T • • • I 2353 commits - 22 Yahoo releases - 9 Apache releases 23 committers from 7 companies, 59 contributors • 30+ companies on production

16.跟传统的消息系统不不同在哪⾥里里 E T • 灵活的、统⼀一的消息模型:队列列 + 流 B . N • P U 云原⽣生:存储(storage)和计算(serving/messaging)分离 • 降维:从分区到分⽚片 I T

17.队列列 + 流 E T B . N P U I T

18.流:独占式订阅 E T B . N P U I T

19.流:灾备式订阅 E T B . N P U I T

20.队列列:共享式订阅 E T B . N P U I T

21.存储和计算分离 E T N 分层架构: Brokers & Bookies B . U • 独⽴立扩展 I TP • 灵活容错 • 快速扩容

22.Apache BookKeeper T 分布式⽇日志存储 • 低延时、⾼高吞吐、持久化 . NE • U B 强⼀一致 (repeatable read consistency) • • ⾼高可⽤用 单节点可以存储很多⽇日志 I TP • I/O隔离

23. Apache BookKeeper Source of Truth of Everything … E T • HDFS NameNode B . N • Databases: P U • • Messaging: I T Twitter Manhattan, Salesforce NewSQL Database • Twitter EventBus, Pulsar

24. 分⽚片存储 E T • 分区(Partition)是逻辑上的⼀一个概念 B . N U • 分区按照时间或者⼤大⼩小被切成分⽚片 • (Segment) 分⽚片被打散存放到集群中的所有节点I TP

25.Broker容错 E T B . N P U I T

26.Bookie容错 E T B . N P U I T

27.扩容 E T B . N P U I T

28. 分区 vs 分⽚片 T 物理理分区 逻辑分区 E Segment 1 Segment 2 Segment 3 Segment n N Broker Broker Broker Broker Broker Broker . 分区 存储和计算 紧耦合 分区 分布 B (主副本) (拷⻉贝) (从拷⻉贝) 分离 U Segment 1 Segment 2 Segment 3 Segment 1 P Segment 2 Segment 3 Segment 1 Segment 2 .
. .
. .
. .
. I T Segment n Segment n Segment n Segment n 分区架构 ! 物理理分区 分⽚片架构 ! 存储和计算紧耦合 ! 容错恢复需要拷⻉贝物理理分区 ! 逻辑分区,“物理理”分⽚片 ! 扩容需要迁移物理理分区来达到负载均衡 ! 存储和计算分离 ! 失效处理理相互分离,快速、⽆无痛点 ! 弹性扩容

29.分区 vs 分⽚片 E T B . N P U I T https://jack-vanlightly.com/sketches/2018/10/2/ kafka-vs-pulsar-rebalancing-sketch

30. 层级存储 T • Infinite Stream: 以“流”的⽅方式“永远” 保存原始数据 . NE • 分区的容量量不不再受限 U B • 充分利利⽤用云存储或者现有的廉价存 储(e.g. HDFS) I TP • 数据统⼀一表征:客户端不不需要关⼼心 数据究竟存在哪⾥里里

31. E T . 例例⼦子 B N U “Interactive Queries on Stream Storage” I TP

32.Pulsar SQL 2.2 release的⼀一个预览特性 T • • . N E 对存储在Pulsar上的数据(⽆无论在BK还是层级存储),进⾏行行交互式的 SQL查询 U B • 实时数据和历史数据的交互查询 • I TP 只要数据进⾏行行到Pulsar中,就可以被查 • 具有Interactive SQL的复杂性 + Streaming SQL的实时性

33.Pulsar SQL (2) • 基于Facebook的Presto进⾏行行深度开发 E T • Presto是⼀一个分布式的SQL查询引擎 B . N 不不重复造轮 P U T • • 中再进⾏行行查询。 I Presto可以查询不不同的数据源,你不不需要把所有数据都导⼊入到Pulsar

34. Pulsar SQL (3) E T N … 63 62 61 60 … 43 42 41 40 … 23 22 21 20 … 4 3 2 1 B . U Segment 1 Segment 2 Segment 4 TP Segment 3 Segment 1 Segment 3 Segment 1 I Segment 2 Segment 3 Segment 2 Segment 4 Segment 4 Segment Segment Segment Segment Coordinator Reader Reader Reader Reader

35.Pulsar SQL (4) 与Presto集成 T • • . NE 从BK或者层级存储直接读数据,不不需要访问Brokers • 多对多的数据访问 U B • I TP Pulsar的数据是分⽚片存储的,所以多个Presto worker可以并发访 问同⼀一个分区中的不不同分⽚片 • 时间索引:根据PublishTime快速定位分⽚片,只需要读取相应分⽚片

36.总结 E T N 批(Batch)、流(Streaming)计算⼀一体化 : Spark, Flink, Beam, … . • • U B “Messaging, Storage, or Both” [1]: 同⼀一枚硬币的两⾯面 • I TP “流”是数据最⾃自然的表征态:“流⽔水不不腐,户枢不不蠹” • 流存储是实时时代的分布式存储

37. E T B . N P U I T https://pulsar.apache.org https://bookkeeper.apache.org @apache_pulsar @asfbookkeeper