内容简介:分享嘉宾:范欣欣 网易大数据技术专家编辑整理:王吉东
分享嘉宾:范欣欣 网易大数据技术专家
编辑整理:王吉东
内容来源:AI科学前沿大会
出品社区:DataFun
注:欢迎转载,转载请注明出处。
本次分享内容:
-
时序数据平台主要业务场景
-
时序数据平台体系架构
-
时序数据平台核心技术
PART01 时序数据平台主要业务场景
上图为数据的整体架构,大部分公司都是差不多的:
-
原始数据: MySQL、服务端的Log、APP-Data、Sensor,大家知道现在穿戴设备很多,比如手表等,这样都会产生很多数据,这些数据都称为时序数据,随着时间的变化不断产生数据。
-
数据采集层: sqoop、DataStream、SDK、Gataway
-
数据加工层: 数据存在kafka里,再经过一些流计算处理(Flink、Sparkstreaming)
-
数据存储分析层:
1. 离线存储分析平台: 技术栈包括最底层的 HDFS、Kudu、GP等数据存储,在这之上要做很多的计算,包括Hive、Spark、Impala等,他的应用场景包括数仓报表、机器学习、模型训练等;
2. 在线存储计算平台: 应用的业务场景包括,交易订单,优惠券,用户画像等,这里主要应用的是 HBase;
3. 时间序列存储计算平台: 应用场景包括,业务设备监控,实时广告平台,物联网应用,相关的技术包括 OpenTSDB、Druid、InfluxDB等。
所以会根据不同的业务使用不同的平台来处理相关的数据,对于我们来说最大的工作是在数据存储端。
时序数据主要包括时间列、维度列和指标列,这3列缺一不可(特别是时间列)。
工业互联网时代,会源源不断产生各种各样的时序数据,时序数据平台有以下几种典型场景:
1. 系统监控:
• 物理机、云主机、容器:CPU、内存、IO等
• 组件服务:数据库集群、 Kafka集群、HBase集群
2. 任务监控:
• 查看指定hadoop任务耗用内存、CPU、IO利用率等
• 查看集群消耗资源 TopN任务、节点等
• 统计集群任务执行耗时
3. 应用性能监控:
• 应用调用次数,错误占比,页面加载延迟统计、地域统计分析
• 慢加载追踪,慢 SQL
• 异常会话追踪
4. 链路监控:
• 调用链全息排查
• 全局调用拓扑
• 链路依赖项分析梳理
5. 业务监控统计:
a. 电商
• 业务大盘:查看单量,金额,发货等业务指标
• 异常大盘:查看超卖,库存校准耗时,商品回调耗时,各种类型下单错误等异常指标
b. 广告
• 广告曝光点击消耗实时统计
• 流量地域分配
以基础系统监控服务为例,举例描述两个应用场景:
1. 物理机基础硬件指标监控
2. HBase-RegionServe指标监控
直观地看,以上数据的横坐标都是时间戳,即设备随着时间不断吐数据。
时序数据应用场景的核心特征:
1. 时间区间查询,最近时间区的数据的查询频率远大于历史数据;
2. 多维条件查询,即多维字段随机组合查询;
3. 支持TTL机制,数据可以自动过期;
4. 支持高压缩率,数据压缩比要达到10以上;
5. 支持高效聚合
6. 支持集群可扩展,服务高可用,数据高可靠。
PART02 时序数据平台架构体系
时序序列平台以监控类系统体系架构为例,如下图所示:
将多数据来源的数据(如 Agent采集器,打点日志、流式数据,IoT Hub等),通过Kalfa工具 (分布式消息队列系统) 进行流式处理,汇集到网易时序数据平台上。
PART03 时序数据平台核心技术
在上述架构体系中,数据库作为其核心环节。考虑到DDB(分布式MySQL)实时写入性能不足,HBase/ES等开源NoSQL平台多维查询以及聚合计算等功能不够;针对海量时序数据这类应用场景,因此需要专门的时序数据库。
现有市场上较成熟的时序数据库主要包括Druid、OpenTSDB、InfluxDB等。网易结合以上各类时序数据库的优缺点,自主研发分布式时序数据库平台,支持高性能写入和读取,支持多维条件查询,支持聚合计算,且运行开销较小,可私有化、分布式部署。
该时序数据库的分布式集群结构与 hadoop,Hbase,Kudu等 架构非常相似:多台服务器用来存储数据,并通过 Raft保证数据的一致性。数据的分布式计 算是在分布式节点( node)上完成的,每个node上的数据存储计算系统称之 为 shard server。在Shard Server的底层数据存储中,原始数据存一份,再按照索引的方式再存一份。
网易时序数据平台的数据存储方式是这样的:
1. DataBase中建立若干StorePolicy(类似 MySQL 数据库中的表结构),其作用为:
(1) 指定数据过期时间;
(2) 指定数据副本数量;
(3) 指定分片时间间隔。
2. 每个 StorePolicy中,按照指定的时间间隔建立若干ShardGroup。将最新写入的数据(称之为热数据)存到对应的ShardGroup中,再通过哈希分片的方式将该ShardGroup分片成若干个Shard,这些Shard会分布至整个集群。
以上图为例,同一时间段不同shard分布到不同的节点上。例如:左侧大方框中包含的6条记录,代表该时间段的记录分布在6个shard里;右侧小方框中的5和6,代表该shard共有2个副本,分别分布在集群中的5号节点和6号节点。
由此可以看出,同一时间段的多个shard是分布在多个节点上。这样做的好处是:查找指定时间段的数据时,只需要在相应节点中查到对应的shard里的数据即可,避免了全局遍历的情况。
3. 数据在 shard中的存储方式:
(1) 时间线列式存储:
具体来说,SeriesKey相当于原始数据(DataSource),具有不同维度;存储的时候,所有的时间存到一起,所有的value单独存在一起,这种存储方法叫做列式存储。列式存储有两大好处:
-
每一列数据类型相同,因此压缩率非常高;
-
方便对列做聚合计算。
什么是列式存储?
传统的关系型数据库如 Oracle、MySQL、SQL SERVER 等,都采用的是行式存储法(Row-based),在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,每行中的数据在存储介质中以连续存储形式存在。
不同于行式存储,列式存储以列为基础单元,每列的数据在存储介质中以连续存储的形式存在。
针对海量分布式数据背景的OLAP(on-line analysis processing),列式存储可在内存中高效组装各列数据并形成关系集,可避免全表扫描,显著减少IO消耗。
(2) 倒排索引
支持 sql 语句进行条件筛选;在条件筛选的过程中,使用倒排索引方法,实现快速定位,可“直达用户需求”。
-
正排索引:key-value中,通过key去寻找value;
-
倒排索引:通过value(或包含value)去寻找对应的key。
正排索引需要首先对全局进行扫描遍历,进而从中做筛选;而倒排索引可以仅抽取符合条件的value值,节省大量的资源。
(3) shard自动扩容
数据库作为分布式系统,需要考虑系统的扩容(即增加节点)。
增加节点后,为保证数据存储的均衡,将不再更新的数据(即历史数据)作为cold shard,平均分布到集群的所有节点(包括新增加的节点)中,而实时更新的数据(即hot shard,随时间不断写入)不做任何处理。
(4) 多级存储优化
考虑到时序数据的一个特点:热数据查询概率远大于冷数据。针对这一特性,做了如下两个优化:
A. 考虑到数据文件可能存在多级索引,针对冷数据,只加载一级索引即 root索引;针对热数据,会加载所有索引。
B. 因此针对集群服务器配置方面,每个集群 12块盘,只需要1块ssd用来存储hot shard即可,其余均使用普通hhd即可,最大程度降低硬件成本。
-
cluster是整个集群,包含n个node;
-
node通常掌控独立的资源,包括cpu等;一台机器可以多个node。
-
shard一般是从数据角度来说。例如,1000条数据按id分,存10份,就是10个shard。
-
shards分散在多个node上。
最后通过以上手段,来实现刚刚所说的 时序数据应用场景的核心特征:时间区间查询,多维条件查询,支持TTL机制,支持高压缩率,支持高效聚合,支持集群可扩展,服务高可用,数据高可靠。
作者介绍:
范欣欣,网易大数据技术专家,专注于 HBase 、 TSDB 等大数据系统的开发运维,主导网易工业互联网平台建设。
——END——
文章推荐:
加入DataFun社群:
请关注社区公众号,后台回复【 JY 】
关于DataFun:
DataFun定位于最实用的数据智能社区,主要形式为线下的深度沙龙、线上的内容整理。希望将工业界专家在各自场景下的实践经验,通过DataFun的平台传播和扩散,对即将或已经开始相关尝试的同学有启发和借鉴。
DataFun的愿景是:为大数据、人工智能从业者和爱好者打造一个分享、交流、学习、成长的平台,让数据科学领域的知识和经验更好的传播和落地产生价值。
DataFun成立至今,已经成功在全国范围内举办数十场线下技术沙龙,有超过三百位的业内专家参与分享,聚集了数万大数据、算法相关领域从业者。
看官点下「在看」再走呗!:point_down:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Pandas时序数据处理入门 原 荐
- 时序型数据库InfluxDB前世今生
- Pandas处理时序数据(初学者必会)!
- InfluxDB 1.8.3 发布,开源时序数据库
- InfluxDB 1.7.11 发布,开源时序数据库
- InfluxDB 1.8.5 发布,开源时序数据库
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C Primer Plus
Stephen Prata、云巅工作室 / 云巅工作室 / 人民邮电出版社 / 2005-2-1 / 60.00元
《C Primer Plus(第5版)(中文版)》共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处......一起来看看 《C Primer Plus》 这本书的介绍吧!