- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
2020.11, Apache IoTDB 核心技术剖析. Reporter 孙金城
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