2022 IoTDB Summit:华为王超《Apache IoTDB 在华为云的实践》
12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态,企业如何与开源社区紧密配合,实现共赢。
我们邀请到 Apache IoTDB Committer,华为云 MRS 时序数据库研发负责人王超参加此次大会,并做主题演讲——《Apache IoTDB 在华为云的实践》。以下为内容全文。
目录
社区贡献
企业级特性增强-安全、传输、加密
企业级特性增强-可靠性和运维
企业级特性增强-多模融合技术和案例
大家下午好,我今天演讲题目是《Apache IoTDB 在华为云的实践》,主讲人王超。首先我做个自我介绍,我叫王超,是华为云 MRS 时序数据库研发负责人,同时也是 Apache IoTDB Committer。
IoTDB 背景介绍:IoTDB 是一个面向工业物联网的高性能轻量级时序数据库,它是由清华大学软件学院大数据国家工程实验室发起的。2018 年 11 月经投选进入 Apache 孵化,2020 年 9 月经投票晋升为 Apache 顶级项目。2021 年 1 月份,华为 MRS 启动对 IoTDB 的一个产品化增强。2021 年 6 月,华为持续参与源码贡献,成为 IoTDB Committer。2021 年 9 月 30 号,MRS 时序数据库发布商用版。
MRS 数据库是华为 FusionInsight MRS 大数据套件中的时序数据库产品,在深度参与 Apache IoTDB 社区开源版的基础上推出的高性能企业级时序数据库产品。自 IoTDB 诞生之初,华为就深度参与 IoTDB 的架构设计和核心代码贡献,对 IoTDB 集群版的稳定性、高可用和性能优化投入了大量的人力,并提出了大量的改进设计和贡献了大量的源码。IoTDB 始于中国高校,历练于工业用户,成长成熟于开源社区,开源版底层无任何依赖,100% 自研。MRS 时序数据库荣获 2022 中国国际大数据产业博览会领先科技成果“优秀项目”奖。
接下来我将介绍时序数据库的选型,我们将从几个维度来进行分析。首先是从开源协议,IoTDB 使用的是 Apache 2.0 协议,InfluxDB 使用的是 MIT 协议,OpenTSDB 使用的 LGPL 协议。从协议上去看,IoTDB 的协议更加友好。第二是从 SQL 能力上去看,第一个 IoTDB 是支持 SQL 能力的,下来是从 Spark 集成,IoTDB 支持 Spark 集成,也支持 HDFS 集成,也支持 Hive 集成。
第一个我们从开放性来看,友好的协议能够使我们更好地去开发,不容易被卡脖子。第二个是从易用性,支持 SQL 接口,方便客户开发使用。第三,生态性,IoTDB 跟大数据生态能够高度结合,能够充分利用大数据组件的算力,因此我们选择了 IoTDB 作为时序数据库产品。
接下来我将从以下几个方面来进行介绍。一个是社区贡献,下来是企业级特性增强,安全、传输、加密,下来是企业级特性增强,可靠性和运维。最后是企业级特性增强,多模融合技术和案例。
01
社区贡献
我们看一下在社区 1.0 版本中我们的设计贡献。首先我们贡献了 Procedure 一致性框架。Procedure 一致性框架它提供了包含多步操作的业务提供统一的状态管理接口,使用者可以根据状态编写对应的执行与回滚逻辑。框架将通过统一的调度,保证业务的顺序性和最终状态一致。第二,它提供了一种异步任务的机制,对于耗时较长的任务,不需要阻塞客户端,并且配合客户端轮询与重试,可以用于应对故障场景,比如 Leader 切换和连接超时。第三,目前扩缩容功能、CQ 功能、触发器功能等均已使用了 Procedure 框架。Procedure 框架代码 6000 多行,均已贡献给社区。
接下来是 1.0 版本的设计贡献,ConfigNode 和 DataNode 扩缩容功能。首先我们支持了 ConfigNode 的扩缩容功能,第二支持了 DataNode 的扩缩容功能,第三支持了 Region 迁移功能,第四,利用 Procedure 框架能保证任务的一致性。扩缩容代码 4000 多行均已贡献给社区。
接下来是 ConfigNode 架构设计和框架代码重构。在 ConfigNode 的架构初期,我们识别到了 ConfigNode 的一个架构问题,共识层在 Manager 层之上,每个 Manager 计算的结果会有差异,因此进行了架构重构,只能由 ConfigNode Leader 来进行 Manager 系列操作。我们将共识层放在 Manager 层之下,ConfigNode Leader Manager 通过计算后将不可变的数据通过共识层同步到各个 Follower。ConfigNode 重构代码 4000 多行均已贡献给社区。
1.0 版本社区贡献部分特性,我们支持了输入的命令,支持了在 MPP 框架下面的元数据操作,支持了 DataNode 的元数据缓存,支持了 Show Child Paths 命令,支持了 ConfigNode RPCServer,支持了删除存储组。以上是1.0部分特性贡献,均已贡献给社区,除此之外还有一些 bug 修复也贡献给社区。
接下来是社区贡献的 0.12 版本。我们在 0.12 版本之中主要是做了性能优化,首先我们优化了线程池,我们优化了查询时间范围和元数据拉取,以及批量的去拉取序列读取操作。接下来是我们优化了路由间隔以及线程池,0.12 的分布式查询优化性能提升了 30%,均已贡献给社区。
02
企业级特性增强-安全、传输、加密
接下来是我们的企业级特性增强-安全、传输、加密。我们遇到的问题是社区版本简单的用户名密码认证容易被破解,我们的解决方案是我们通过 Thrift+Kerberos 的认证机制,我们在 DataNode 和 ConfigNode 实例之间进行了 Kerberos 认证,我们在客户端和 DataNode 之间同时支持 Kerberos 认证和用户名/密码认证。第三,Kerberos 认证可以跟 Hadoop 生态圈进行无缝对接。
数据传输和密码加密:问题是密码使用 MD5 加密保存容易被破解,数据在传输过程中没有加密,容易被获取,泄露。我们的解决办法是,首先我们重构了加减密模块,能够可插拔式的进行加减密算法,此重构均已贡献给社区。第二,我们实现了 SHA384 的密码加密,保证密码在本地存储的安全性。我们实现了 Thrift 和 SSL 加密,保证数据在传输过程中进行加密。
03
企业级特性增强-可靠性和运维
接下来是看一下企业级特性增强的可靠性和运维。数据备份恢复:问题是一个机房的集群灾难毁坏之后,数据不可恢复。我们的解决方案是首先是备份,我们实现了 TsFile 的数据快照和数据回收站。第二实现了周期备份和调度任务。第三,我们实现了按照存储组和设备级别进行备份,将数据备份到远端的 HDFS 上面,数据文件可能够从远端的 HDFS 上面来进行加载和恢复。
接下来是数据备份恢复的可视化界面,我们提供了可视化一键式的备份恢复任务,客户可以通过界面来进行配置。
接下来是支持磁盘热插拔。问题是 IoTDB 是个多盘挂载的数据库,单盘坏掉之后,这个盘上面的数据将进行丢失。我们的解决办法是,我们实现了单盘坏掉之后,我们只需要插入空盘,空盘上的数据能够进行补齐。我们实现的办法是,第一,我们实现了一种新的磁盘选择策略,我们将同一个存储组的数据放在一个磁盘上。第二,快照文件被打包发送,并按照个数进行切分,防止文件过多超过内存之后,批量读取 TsFile 到内存,然后进行传输。第三,一批 TsFile 文件转换成 byte 数据之后,将 byte 进行拆分成多个,防止一次传输超过 thrift max size。第四,增加了间歇传输和重试等稳定机制,以确保传输可靠性。
我们支持了滚动重启,问题是 IoTDB 在重启的过程中会中断上层业务的读写流程。我们解决办法是,我们增强了读写过程以及读写故障切换,我们在读的时候请求将转发到其他两个副本所在的节点。在停止服务之前,您需要转移当前节点所在的共识组的 Leader,只有在转移完成之后我们才能停止该进程。
故障隔离和启动恢复:如果 ConfigNode 在一段时间之内无法从节点接收到心跳,那么 ConfigNode 将隔离此 DataNode 节点。DataNode 启动之后,然后再次向 ConfigNode 去注册。
我们支持了 JDBC 的多 IP,问题是客户端可以连接到任何的 DataNode 上面,如果一个 DataNode 发生故障之后,服务将中断。我们的解决办法是,我们可以在 JDBC 的 URL 里面去配置多个 IP,如果一个 IP 地址无法访问的时候,系统可以切换到下个 IP。第三,我们随机连接到一个 IP 上以实现负载均衡并减少单点故障。第四,如果一个节点出现故障之后,客户端可以重试下一个 IP 地址。第五,单点故障不会影响上层业务,从而提高服务的可靠性。
这是我们的 FusionInsightManager 的一个运维界面。我们提供了可视化的一个运维管理,日志级别可视化配置和实时动态配置,可视化的日志下载以及日志的在线检索。我们添加了一个审计日志,我们提供了监控告警的能力,包括 CPU、内存、节点不可用等告警。
04
企业级特性增强-多模融合技术和案例
接下来是我们的企业级特性增强-多模融合技术和案例。多模融合技术的功能背景是,第一个客户需要对结构化数据和时序数据进行联合分析。第二,多模融合技术它弥补了时序数据库的多个序列之间不能 Join 的缺点。我们的预期效果是,通过我们的多模融合技术,MRS HETU 可以联合分析不同数据源和时序数据。右边这张图我们可以清晰地看到,通过我们的 MRS HETU,能够将 HBase、Hive、IoTDB 中的数据来进行关联分析。
我们看一个多模融合的应用场景的例子。我们的服务场景是需要去查询一个城市地区在一个月的平均功耗,我们首先看一下电表的信息是保存在我们的关系库里面去的,比如说保存在 Hive 表里面,我们的电表采集的时序数据我们保存在 IoTDB 里面去。要实现此功能的时候,原始的方案是我们需要在关系库中,比如说 Hive 中,去查找出来某个城市中的电表 ID,然后将电表 ID 下发到我们的时序库里面去求取此电表 ID 在一段时间的平均值。然后在内存中去将所有的电表 ID 的平均值再次求取一个二次计算,再次求取平均值。
MRS 的时序数据库的解决方案是,我们通过我们的 MRS HETU 去下发一个 SQL,可以将 Hive 中的数据跟我们 IoTDB 中数据做关联分析,通过一个 SQL 就可以实现此功能。数据一旦入湖之中就可以进行分析和使用,无需进行二次处理和迁移,我们减少了数据的冗余存储,为客户节省成本。
以上是我的今天的分享,感谢大家的收听。
可加欧欧获取大会相关PPT
微信号:apache_iotdb
相关文章:
2022 IoTDB Summit:华为王超《Apache IoTDB 在华为云的实践》
12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…...
C 语言网络编程 — PF_NETLINK sockets
目录 文章目录目录PF_NETLINK socketsPF_NETLINK sockets Linux 提供了 4 种 User Process 和 Kernel 之间进行通信的 IPC(Inter-Process Communicate,进程间通信)方式: /procioctlsysfsPF_NETLINK sockets(Netlink …...
广州银行冲刺A股上市:不良贷款规模突破100亿元,不良率飙升
又一家城商行平移申报IPO。近日,广州银行股份有限公司(下称“广州银行”)递交招股书,准备在深圳证券交易所主板上市。本次冲刺上市,广州银行计划募资约94.79亿元,国泰君安证券为其保荐机构。 截至目前&…...
【C++】bsearch函数的使用及二分法查找介绍
写程序的时候,肯定避免不了需要从集合中找到符合条件的元素,一般情况下,最简单也最常用的就是循环遍历元素,这种方法虽然写的简单,但是小数据量还行,但是数据过大的话,这样效率就低了。循环的时…...
分布式系统中的补偿机制设计问题
我们知道,应用系统在分布式的情况下,在通信时会有着一个显著的问题,即一个业务流程往往需要组合一组服务,且单单一次通信可能会经过 DNS 服务,网卡、交换机、路由器、负载均衡等设备,而这些服务于设备都不一…...
类成员的方法
初识对象 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据进行对比,在程序中: 设计表格,称之为:设计类(class) 打印表格,称之为:创建对象 …...
华为OD机试真题Python实现【端口合并】真题+解题思路+代码(20222023)
端口合并 题目 有M(1<=M<=10)个端口组, 每个端口组是长度为N(1<=N<=100)的整数数组, 如果端口组间存在 2 个及以上不同端口相同, 则认为这 2 个端口组互相关联,可以合并 第一行输入端口组个数 M,再输入 M 行,每行逗号分隔,代表端口组。 输出合并后的端口组…...
自考本科计算机网络原理(04741)历年大题真题【18年10月-22年10月】
文章目录一、简答题(历年真题)18年10月-22年10月历年简答题出题情况分析2018年10月2019年4月2019年10月2020年8月2020年10月2021年4月2021年10月2022年4月2022年10月二、综合题(历年真题)2018年10月2019年4月2019年10月2020年8月2…...
计算机SCI期刊投稿,除了投稿信,还要做什么准备? - 易智编译EaseEditing
投稿信的准备 期刊的编辑往往需要一些有关作者及其论文的信息。 而作者也希望给编辑提供一些有助于其全文送审及决策的信息。 这些信息都应该包括在投稿信中。 投稿信应包括以下几方面的内容: 文题和所有作者的姓名;稿件适宜的栏目; 为什么此论文适合于在该刊而…...
Allegro如何刷新封装和库里的封装同步操作指导
Allegro如何刷新封装和库里的封装同步操作指导 在做PCB设计的过程中,有时会因为库里的封装有更新,所以PCB上使用到了这个封装时候需要和库里的同步,如下图 如何刷新,具体操作如下 点击Place点击Update Symbols...
基于Vue3手写选课组件(含时区切换,拖拽选择)
环境说明 基于vue3vite 无关联别的ui框架,组件化 初次使用vue3,技术菜,大佬勿喷 main.ts "moment": "^2.29.4","moment-timezone": "^0.5.41",import moment from moment; import momentTz from &…...
准备好了吗?加入 GDE 成长计划,成为下一位谷歌开发者专家!
谷歌开发者专家 (Google Developer Experts,GDE),又称谷歌开发者专家项目,是由一群经验丰富的技术专家、具有社交影响力的开发者和思想领袖组成的全球性社区。通过在各项活动演讲以及各个平台上发布优质内容来积极助力开发者、企业和技术社区…...
搭建帮助中心的 8 个最佳工具
网站帮助中心的作用通过向客户表明您了解他们所面临的问题以及如何提供帮助来建立信任;通过回答常见问题来改善客户服务,增强专业的品牌形象;通过减少重复发送给支持人员的电话和电子邮件,节省时间和金钱;增强您在搜索…...
LQB小板焊接V3版本的小板原理图,PCB图,注意事项和步骤
第一部分,这个部分,可以不焊接,直接用买的下载器进行下载代码,外接一个下载器,网上大概是10元左右,以后学习stm32的芯片的时候,这个下载器就是一个串口转换器,也可以使用。。 当然也…...
华为OD机试真题Python实现【翻转单词顺序】真题+解题思路+代码(20222023)
翻转单词顺序 题目 输入一个英文文章片段 翻转指定区间的单词顺序,标点符号和普通字母一样处理 例如输入字符串 I am a developer. 区间[0,3]则输出 developer. a am I 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 使用换行隔…...
微机原理和计算机组成原理复习
1:冯诺依曼机器的主要特点? 1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部分组成; 2)指令和数据存储在存储器中,并可以按地址访问; 3)指令和数据均以二进制表示&…...
mysql5.7.33安装配置教程【保姆级安装教程】
MySQL5.7.33安装教程 1、官方网站下载 点击这里跳转页面下载 1.1、看下你是什么系统,系统是64位还是32位 2、解压到D盘跟路径或者其下面纯英文路径 2.1、可见它没有data、log等文件夹,不需手动添加(下面执行命令自动初始化)!! …...
每天都和时间序列打交道,我总结了这篇文章!
Datawhale干货 作者:戳戳龍,上海交通大学,量化算法工程师前言🔴 平时工作中每天都在和时间序列打交道,对时间序列分析进行研究是有必要的🟡 分享和交流一些自己的在时序处理方面的心得,提供一…...
【Leetcode——重排链表】
文章目录一、重排链表思路1.思路2.总结一、重排链表 对于这道题,有两种思路: 思路1. 1.使用一个线性表,存储链表中的每个节点,然后按照题目的条件,来链接线性表的各个节点即可。 使用左下标和右下标来定位线性表中的…...
HCIP总结(一)
抽象语言---编码---二进制---电信号----处理电信号 (电脑工作流程) OSI参考模型 ----OSI/RM (核心思想:分层) 应用层----提供各种应用服务,将抽象语言转换成编码,提供人机交互的接口 表示层----将编码转换成二进制 …...
华为OD机试真题Python实现【黑板上色】真题+解题思路+代码(20222023)
题目 疫情过后希望小学终于又重新开学了,3 年 2 班开学第一天的任务是将后面的黑板报重新制作, 黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色, 为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这个颜色中最小的那个数整除, 现在帮小…...
C++中的利器——模板
前文本文主要是讲解一下C中的利器——模板,相信铁子们在学完这一节后,写代码会更加的得心应手,更加的顺畅。一,泛型编程想要学习模板,我们要先了解为什么需要模板,我们可以看看下面这个程序。int add(int&a…...
k8s控制器
目录 一、控制器简介 二、控制器类型 1、RC和RS 2、Deployment 3、DaemonSet 4、Job 5、CronJob 6、StateFulSet 7、HPA 一、控制器简介 在kubernetes中,按照Pod的创建方式可以将其分为两类: 自主式:kubernetes直接创建出来的Pod,…...
嵌入式学习笔记——认识STM32的 GPIO口
寄存器开发STM32GPIO口前言认识GPIOGPIO是什么GPIO有什么用GPIO怎么用STM32上GPIO的命名以及数量GPIO口的框图(重点)输入框图解析三种输入模式GPIO输入时内部器件及其作用1.保护二极管2.上下拉电阻(可配置)3.施密特触发器4.输入数…...
类和对象(中)
文章目录 继承的概念继承的语法父类成员访问super关键字子类构造方法super和this初始化protected关键字继承方式final关键字继承与组合一、继承的概念 继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类…...
Java——单词接龙
题目链接 leetcode在线oj题——单词接龙 题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk: 每一对相邻的单词只差一个字母。 对于 1 < i < k 时ÿ…...
HTML DOM 事件监听器
通过JavaScript,我们可以给页面的某些元素添加事件的监听器,当元素触发相应事件的时候监听器就会捕捉到这个事件并执行相应的代码。addEventListener() 方法实例当用户点击按钮时触发监听事件:document.getElementById("myBtn").ad…...
java基本数据类型取值范围
在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值范围为-128~127,占用1个字节(-2的…...
maven的安装配置
目录 1. Maven的安装配置 1.1检测jdk的版本 1.2下载maven 1.3配置maven环境变量 2.认识maven的目录结构 2.1 创建一个文件夹作为项目的根目录 1.创建如下结构的目录 2. 在pom.xml文件中写入如下内容(不用记忆) 3.在mian-->java--》下边创建java文件编辑 4.cmd下…...
【转载】System Verilog 上下文context的含义以及设置导入函数的作用域
放丢失,转载一下,原文:https://blog.csdn.net/qq_31348733/article/details/1010546251. 上下文(context)的含义导入函数的上下文是该函数定义所在的位置,比如$unit 、模块、program或者package作用域(scope),这一点跟…...
.net开发微信网站流程/企业品牌推广方案
中国银保监会《关于银行业保险业数字化转型的指导意见》政策解读及银行数字化转型课程背景: 很多银行存在以下问题:不知道如何准确理解中国银保监会《关于银行业保险业数字化转型的指导意见》相关政策不清楚中国银保监会《关于银行业保险业数字化转型…...
合肥网站优化/seo建站技术
1. 任务调度线程池 1.1 ScheduledThreadPoolExecutor 延时执行 示例代码(任务都延时1s执行): package com.tian;import java.util.Date; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.con…...
如何开发网站/怎样给自己的网站做优化
udp通信协议,相信大家都知道这个。由于是无连接的协议,所有udp的传输效率比tcp高。但是udp协议传输较大的数据文件得分包 最近写了个分包组包的方法,拿来和大家分享,如果有什么不妥的地方,欢迎点评 分包的方法 1 //每…...
做招生网站/长春网站快速排名提升
upx upx加壳脱壳程序 upx -d 脱壳 objdump -d 反编译整个程序 readelf -r target_elf objdump -R target_elf 查看GOT表中的内容...
不停弹窗的网站怎么做/百度指数峰值查询
1.程序概述:在MainActivity中设置一个按钮,按下按钮时触发监听器,监听器中设置一个intent,通过intent启动OtherActivity,运行OtherActivity显示出一个TextView。 2.设置监听器时,需要引入包,注意到OnClickL…...