37

网易大数据体系之时序数据技术

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw%3D%3D&%3Bmid=2247489960&%3Bidx=1&%3Bsn=6aac816e4cce65b23d21bef82ffc8949&%3Butm_source=tuicool&%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ua6Nnua.jpg!web

分享嘉宾:范欣欣 网易大数据技术专家

编辑整理:王吉东

内容来源:AI科学前沿大会

出品社区:DataFun

注:欢迎转载,转载请注明出处。

本次分享内容:

  • 时序数据平台主要业务场景

  • 时序数据平台体系架构

  • 时序数据平台核心技术

PART01 时序数据平台主要业务场景

y2MnQfa.jpg!web

上图为数据的整体架构,大部分公司都是差不多的:

  • 原始数据: 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等。

所以会根据不同的业务使用不同的平台来处理相关的数据,对于我们来说最大的工作是在数据存储端。

V7NjArn.jpg!web

时序数据主要包括时间列、维度列和指标列,这3列缺一不可(特别是时间列)。

工业互联网时代,会源源不断产生各种各样的时序数据,时序数据平台有以下几种典型场景:

1. 系统监控:

• 物理机、云主机、容器:CPU、内存、IO等

•  组件服务:数据库集群、 Kafka集群、HBase集群

2. 任务监控:

• 查看指定hadoop任务耗用内存、CPU、IO利用率等

•  查看集群消耗资源 TopN任务、节点等

•  统计集群任务执行耗时

3. 应用性能监控:

•  应用调用次数,错误占比,页面加载延迟统计、地域统计分析

•  慢加载追踪,慢 SQL

•  异常会话追踪

4. 链路监控:

• 调用链全息排查

•  全局调用拓扑

•  链路依赖项分析梳理

5. 业务监控统计:

a.  电商

•  业务大盘:查看单量,金额,发货等业务指标

•  异常大盘:查看超卖,库存校准耗时,商品回调耗时,各种类型下单错误等异常指标

b.  广告

•  广告曝光点击消耗实时统计

•  流量地域分配

以基础系统监控服务为例,举例描述两个应用场景:

1. 物理机基础硬件指标监控

qUbYVfZ.jpg!web

2. HBase-RegionServe指标监控

VZZ7bqu.jpg!web

直观地看,以上数据的横坐标都是时间戳,即设备随着时间不断吐数据。

时序数据应用场景的核心特征:

1. 时间区间查询,最近时间区的数据的查询频率远大于历史数据;

2. 多维条件查询,即多维字段随机组合查询;

fYZJfqy.jpg!web

3. 支持TTL机制,数据可以自动过期;

4. 支持高压缩率,数据压缩比要达到10以上;

5. 支持高效聚合

6. 支持集群可扩展,服务高可用,数据高可靠。

PART02 时序数据平台架构体系

时序序列平台以监控类系统体系架构为例,如下图所示:

3YB7R3N.jpg!web

将多数据来源的数据(如 Agent采集器,打点日志、流式数据,IoT Hub等),通过Kalfa工具 (分布式消息队列系统) 进行流式处理,汇集到网易时序数据平台上。

PART03 时序数据平台核心技术

在上述架构体系中,数据库作为其核心环节。考虑到DDB(分布式MySQL)实时写入性能不足,HBase/ES等开源NoSQL平台多维查询以及聚合计算等功能不够;针对海量时序数据这类应用场景,因此需要专门的时序数据库。

现有市场上较成熟的时序数据库主要包括Druid、OpenTSDB、InfluxDB等。网易结合以上各类时序数据库的优缺点,自主研发分布式时序数据库平台,支持高性能写入和读取,支持多维条件查询,支持聚合计算,且运行开销较小,可私有化、分布式部署。

uURZvqy.png!web

该时序数据库的分布式集群结构与 hadoop,Hbase,Kudu等 架构非常相似:多台服务器用来存储数据,并通过 Raft保证数据的一致性。数据的分布式计 算是在分布式节点( node)上完成的,每个node上的数据存储计算系统称之 shard server。在Shard Server的底层数据存储中,原始数据存一份,再按照索引的方式再存一份。

IVjIJzA.jpg!web

网易时序数据平台的数据存储方式是这样的:

1. DataBase中建立若干StorePolicy(类似MySQL数据库中的表结构),其作用为:

(1)   指定数据过期时间;

(2)   指定数据副本数量;

(3)   指定分片时间间隔。

2.  每个 StorePolicy中,按照指定的时间间隔建立若干ShardGroup。将最新写入的数据(称之为热数据)存到对应的ShardGroup中,再通过哈希分片的方式将该ShardGroup分片成若干个Shard,这些Shard会分布至整个集群。

iMNneuq.png!web

以上图为例,同一时间段不同shard分布到不同的节点上。例如:左侧大方框中包含的6条记录,代表该时间段的记录分布在6个shard里;右侧小方框中的5和6,代表该shard共有2个副本,分别分布在集群中的5号节点和6号节点。

由此可以看出,同一时间段的多个shard是分布在多个节点上。这样做的好处是:查找指定时间段的数据时,只需要在相应节点中查到对应的shard里的数据即可,避免了全局遍历的情况。

3.  数据在 shard中的存储方式:

(1) 时间线列式存储:

具体来说,SeriesKey相当于原始数据(DataSource),具有不同维度;存储的时候,所有的时间存到一起,所有的value单独存在一起,这种存储方法叫做列式存储。列式存储有两大好处:

  • 每一列数据类型相同,因此压缩率非常高;

  • 方便对列做聚合计算。

fAfMjqN.png!web

什么是列式存储?

传统的关系型数据库如 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机制,支持高压缩率,支持高效聚合,支持集群可扩展,服务高可用,数据高可靠。

作者介绍:

ZJzm22q.jpg!web

范欣欣,网易大数据技术专家,专注于 HBase TSDB 等大数据系统的开发运维,主导网易工业互联网平台建设。

——END——

文章推荐:

网易HBase实践

网易数据基础平台建设

基于Impala平台打造交互查询系统

基于Flink的严选实时数仓实践

加入DataFun社群:

请关注社区公众号,后台回复【 JY

关于DataFun:

DataFun定位于最实用的数据智能社区,主要形式为线下的深度沙龙、线上的内容整理。希望将工业界专家在各自场景下的实践经验,通过DataFun的平台传播和扩散,对即将或已经开始相关尝试的同学有启发和借鉴。

DataFun的愿景是:为大数据、人工智能从业者和爱好者打造一个分享、交流、学习、成长的平台,让数据科学领域的知识和经验更好的传播和落地产生价值。

DataFun成立至今,已经成功在全国范围内举办数十场线下技术沙龙,有超过三百位的业内专家参与分享,聚集了数万大数据、算法相关领域从业者。

nQry6nn.jpg!web

看官点下「在看」再走呗!:point_down:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK