申请试用
HOT
登录
注册
 
2020.11, Apache IoTDB 核心技术剖析. Reporter 孙金城
0 点赞
0 收藏
1下载
Apache IoTDB
/
发布于
/
109
人观看
                                                                                                                                                                                                                                                        13
展开查看详情

1.Apache IoTDB 核心技术剖析 (2020新晋Apache顶级项目) 孙金城 阿里巴巴 Apache Member / Apache IoTDB PMC Jincheng Sun

2. About Me Apache 阿里巴巴 Flink PMC Apache 孙金城, 花名 金 IoTDB 竹 Apache Beam PMC Committer ASF Member Jincheng Sun

3. 目录  IoT领域发展趋势  IoTDB设计的核心  IoTDB 现状及未来  IoTDB 的应用案例 Jincheng Sun

4. IoT领域趋势 – 时代工业浪潮 德国工业4.0 中国工业互联网 美国工业互联网 关键能力 工业互联网本质 关键要素 数据整合分析和使用 数据+模型 先进的分析能力 Jincheng Sun

5. IoT领域趋势 – Gartner战略技术趋势 2018 2019 2020 云向边缘计算挺进 赋权的边缘 赋能性边缘 (让内容/计算/更接近物件) (云边计算一体) (流量和处理保持在本地) Jincheng Sun

6. IoT领域趋势 – 基础设施飞速发展 (国际市场占有率第一) 数据来源: (清华自研并国际开源) https://db-engines.com/en/ranking_categories GE 数据库领域国际权威排名网站DB-Engines发布的产业界关注度 http://www.gov.cn/zhengce/content/2017-11/27/content_5242582.htm 趋势显示,工业物联网时间序列数据库系统连续两年排名第一 Jincheng Sun

7. IoT领域趋势 – 多类时序数据库并存 Jincheng Sun

8. IoT领域趋势 – 读写性能和成本 写入吞吐(千点/秒) 写入吞吐(千点/秒) 耗时(毫秒) 序列条数(百万) 并发客户端数 时间范围过滤查询结果集大小 Jincheng Sun https://iotdb.apache.org/UserGuide/Master/Comparison/TSDB-Comparison.html

9. 目录  IoT领域发展趋势  IoTDB设计的核心  IoTDB 现状及未来  IoTDB 的应用案例 Jincheng Sun

10. IoTDB设计的核心 – 领域问题 底盘部分:10个 臂架系统:93个 液压系统:20个 电控系统:9个 泵送系统:63个 其他部分:51个 信源总数:246个 5400种工况,3万在线设备 设备数:20万 超过20,000个风机 一个风机约有120~510传感器 采集频率从0.00167 Hz 到 50Hz 不等 数据通量大 50Hz,500测点/台,2万台风机, 最高可达 5亿 数据点/秒 (IEC标准) 大规模时序数据的特点 查询 占用空间极大 – 高效压缩 数据总量大/快/不间断 – 写入性能 成本 写入 Airplane Bus Car Train 分析查询设备控制 – 高效分析 Jincheng Sun

11. IoTDB设计的核心 – 领域问题 存在大量乱序数据 由于采集设备、网络阻 数据 数据 乱序时长从0-300分钟不等 塞等原因,导致丢包 乱序 缺失 30分钟以内乱序数据较多 丢包率高达28.1% 乱序 常态 Jincheng Sun

12. IoTDB设计的核心 – 读写架构(索引&LSM tree) 4. Create a new Mem- 1. Binary search in Mem- Table … Table Immutable Mem-Table 3. Successful Mem-Table Read Request response Write Request 4. Immutable and … 内存 5. Flush… and Minor Compaction 磁盘 … … .. … … .. Index 5.1&6.1 Bloom Filters Index 6. Merging|Major IndexCompaction Bloom Filter使用k个独立的hash函数, 构建bitmap. WAL … … .. Jincheng Sun

13. IoTDB设计的核心 – 读写架构 更智能的查询优化  IoTDB存储架构:tLSM 对乱序更友好 tLSM 存储架构 Jincheng Sun

14. IoTDB设计的核心 – TsFile设计细节 存储 如何高效写入? TsFile 怎样快速读取? Jincheng Sun

15. TsFile 设计细节 – 数据抽象 需求: 底盘部分:10个  根据数据查询习惯,我们更希望同一个设备(Device) 臂架系统:93个 的数据放到一起 … 液压系统:20个 电控系统:9个  考虑到压缩效率,我们更希望每一个工况(Measurement) 泵送系统:63个 信息存储在一起… 其他部分:51个 信源总数:246个 设计抽象: 设备数:20万 每个Device数据存放到一个ChunkGroup中,对每个ChunkGroup进行元数据管理 对每个Measurement数据进行抽象设计,每个Measuremen数据集中存放到一个 Chunk中。 Jincheng Sun

16. TsFile 设计细节 – 数据抽象 需求:  时序数据源源不断的产生,用户可能更多的查询某 个时间区间的数据… 设计抽象: 根据时序数据特点将每一个Measurement的数据按照时间区间切片,每一个切片抽象为一个Page,IoTDB按Page加载数据。 索引树 这个数据结构的抽象,本质解决怎  内存利用 样的问题呢?  磁盘I/O Jincheng Sun

17. TsFile 设计细节 – 索引树构建 层级数据抽象: device -> Measurement -> Time Range 超过20,000个风机 一个风机约有120~510传感器 采集频率从0.00167 Hz 到 50Hz 不等 数据通量大 50Hz,500测点/台,2万台风机, 最高可达 5亿 数据点/秒 (IEC标准) 考虑的原则: IoTDB 内存大小一定的情况下,内存中的 从哪一层面 Device chunkGroupMeta1 … 构建索引比 索引信息越完整越好,根本目的是 较合适呢? 为了一次查询的磁盘IO最少。 Measurement chunkMeta1 chunkMeta2 … PageMeta page1 page2 page3 page4 page5 … 面对工业领域海量的指标数据,以及考虑边缘设备的资 源配置,将所有的Page元数据或者将所有的Chunk元 Jincheng Sun 数据加载到内存是奢侈的…

18. TsFile 设计细节 – Meta构建V0.8版 2 1 4 - 3 - … 1.读取某个tfFile,读4字节MetaSize 2. 读tsFileMeta内容,并二分查询设备,root.vehicle.d0 3. 根据TsDeviceMetadatazindex的offset,定位设备的Meta 数据 4. 读取当前设备下所有的ChunkMeta 实际生产遇到问题(电厂环保 监管平台), 几十万的 Jincheng Sun Measurement  https://issues.apache.org/jira/browse/IOTDB-605

19. TsFile 设计细节 – Meta构建V0.10版 加载尽可能少的ChunkMeta, 比如:查询do,s5信息… (B+ Tree) - 原始150个CM V0.8 -> V0.10 引入中间节点结构 假设有150个 设备Meta Measurement (ChunkMeta) Jincheng Sun

20. TsFile 设计细节 – Meta构建V0.10版 B+Tree 同样对于海量设备 信息的查询优化, 可以用进行类似的 设计… - Jincheng Sun

21. TsFile 设计细节 – TsFileV0.10版数据读取 查询 时间区间在(20,80)的设备d1的s1的采集点信息: SELECT sensor_1 FROM root.device_1 WHERE time > 20 and time < 80 2732-131=2601 7 5 4 2 1 - 7 6 8 5 3  读取TsFile的MetaDataSize信息  根据MetaDataSize和offset获取MetaData的位置 6 7  根据TsFile的MetaData获取IndexNodes的Offset信息  我们要查询device_1的信息,根据device的offset 信息2535读取MetadataIndexNodes的data内容  我们要查询sensor_1的信息,根据sensor_1的offset 信息2175读取TimeseriesMetadata信息  我们要查询时间区间是(20,80)的信息, 根据offset1487,读取Chunk信息  根据ChunkHeader的offset12读取Chunk Header内容  最后顺序读取Chunk里面的PageHeader,如果Page 的时间区间在(20,80),那么就来读取PageData 4 虽然查找的步骤很多,但是内部 是B+Tree的索引结构,并辅助 bloom filter等加速机制,查询性 Jincheng Sun 能非常棒!!!

22. TsFile 设计细节 – 数据写入? Jincheng Sun

23. More About IoTDB 应用阶段 - 管理阶段 采集阶段 处理阶段 分析阶段 Jincheng Sun

24. 目录  IoT领域发展趋势  IoTDB设计的核心  IoTDB 现状及未来  IoTDB 的应用案例 Jincheng Sun

25. IoTDB现状及未来 – Apache 顶级项目 全球最大的开源软件基金会 Apache 软件基金会于北京时间 2020 年 9 月 23 日宣布 Apache IoTDB 毕业成为 Apache 顶级项目! Jincheng Sun

26. IoTDB现状及未来 – 工业领域标准高度集成 德国物联网与工业4.0软件开发者大会 Essen, Germany, 2020.3.2-3.4 就IoTDB和PLC4X项目自发进行培训 Jincheng Sun

27. IoTDB现状及未来 – 众多认可 德国IoT与工业4.0开发者大会 Essen, Germany, 2020.3.2-3.4 CMU数据库名录收录 国外工业界用户以 全球最大的钢铁生产公司 Tutorial方式开展培训 (美国ArcelorMittla试用 中国开源云联盟 大数据产业生态联盟 开源中国年度 中国优秀开源项目一等奖 优秀大数据产品称号 最受欢迎开源项目 (工信部主管) (工信部主管) (互联网公开投票) Jincheng Sun

28. IoTDB现状及未来 – 没有最好,只有更好 应用 IoTDB时序数据计算控制台 三方应用(平台) 运维 日志 RESTful Service 集成 API Java Python SQL-like ANSI SQL Other… 监控 prometheus 查 生态 询 Hive 升级 SQL-like SQL-Like Query ANSI SQL CBO Parsing Remotely 优 Optimizer Executor Parsing Optimizer Spark 元 集 数 群 化 据 版 Flink 收缩容 管 本 PLC4x Configurable 理 &… 存 存储引擎 优 优化改进 化 Druid 数据工具 储 改 清理/修正/同步… 本地磁盘 HDFS OSS Memory… 进 … 调试… 部署 Stand-alone Cluster(Common|K8S) 现有的 规划的 未知的 Jincheng Sun

29. 目录  IoT领域发展趋势  IoTDB设计的核心  IoTDB 现状及未来  IoTDB 的应用案例 Jincheng Sun

0 点赞
0 收藏
1下载