实时计算服务平台_巴别塔实时协作平台_阿里 实时计算

电脑杂谈  发布时间:2019-07-15 03:06:55  来源:网络整理

阿里 实时计算_实时计算服务平台_巴别塔实时协作平台

批处理层(Batch Layer):批处理层承担的任务是对从上游进来的所有被系统认为不可变的原始数据。类比目前的数据平台架构来看, 即离线的那几张保存原始数据的主表。这 3 张主表是所有完整的数据并且是不可变的,基于这几张主表,数据经过 Batch 、ETL,产生供批处理查询的 Batch View。

加速层(Speed Layer):批处理层虽然可以很好地处理离线数据,但它不能很好满足对于时间粒度的需求。对于需要不断实时生成和实时查询处理的数据,通常会放在加速层来进行实时处理和转化。

加速层与批处理层最大的区别在于,加速层只处理最近的数据,而批处理层处理所有数据。另外在数据的读取方面,为了满足最小延迟,加速层不会在同一数据读取所有新数据,而是在收到新数据时更新 Realtime View,所以我们说,在加速层进行的是一种增量的计算。

服务层(Serving Layer):服务层用于响应用户的查询请求,合并 Batch View 和 Realtime View 中的结果数据集到最终的数据集,并向外对用户通过统一接口,提供实时+离线的数据统计服务。

基于 Lambda 的数据平台架构, 可以按照分层集成众多的大数据组件。在对 MES 的架构设计中,我们借鉴了 Lambda 架构的思想来实现更快

更准、鲁棒性更好的特性。

马蜂窝实时计算平台 MES

迅雷网游是由迅雷推出的一款游戏加速软件,帮助玩家有效的解决延迟高、游戏卡顿、常掉线的问题,用国内最的虚拟专网架构,动态路由、实时进行全网监测,让用户玩游戏真正的流畅起来。今天带来《滴滴大数据离线及实时平台架构和实践》的主题分享,主要介绍了滴滴的大数据平台,包括3大平台架构体系,分别是实时平台架构体系、离线平台架构体系、hbase平台架构体系等大数据基础设施和基础平台的技术积累和应用实践。对于目前版本的spark streaming而言,其最小的batch size的选取在0.5~2秒钟之间(storm目前最小的延迟是100ms左右),所以spark streaming能够满足除对实时性要求非常高(如高频实时交易)之外的所有流式准实时计算场景。

整体架构设计

今天带来《滴滴大数据离线及实时平台架构和实践》的主题分享,主要介绍了滴滴的大数据平台,包括3大平台架构体系,分别是实时平台架构体系、离线平台架构体系、hbase平台架构体系等大数据基础设施和基础平台的技术积累和应用实践。作为技术开发的我们,不能一味的追求架构而架构,我们必须在公司业务发展,团队资源中间做一个合适的选择,然后随着业务的发展逐步重构与优化。③对照样品的选择:可选用境内已上市同类产品做为同类产品对照组的样品,建议对照样品的形状、尺寸、适用范围与实验样品一致。

图 2:MES 整体架构图

分钟级别实时提供标签数据,最好能做到秒级别。g7平台连接了30万车辆,传感器一天要采集8000多条数据实时计算服务平台,如果按照30万台设备来计算,一天就会有2.4亿条数据。比较合理的做法是“边算边存”,意思是数据进入实时计算系统后,不一定需要先存储起来,可以直接参与计算,而且这里的计算是把当前新增的数据在之前历史数据的计算结果上做“增量计算”,同一条数据不重复参与计算,计算完成之后,再把计算结果保存起来,供业务使用,这时数据存储的压力也小了很多。

另外一条是 Flink+Druid,用来处理分钟级和小时级的数据;

上面提供一层 Restful API / Thrift API 封装,供 MES 页面或其他业务通过接口的方式来获取数据;

巴别塔实时协作平台_实时计算服务平台_阿里 实时计算

如果实时数据出了问题,我们会通过 HDFS 中的离线主表进行重算,也是有两条路径:

监控系统是 Grafana,它开放了通用接口给 Python、Java 等语言来上报相关信息,只要按照接口上报要想关注的指标并进行简单配置,就可以查询结果,比如 MES 的延迟时间、一些 Restful 接口的调用量等, 如果出现不正常的情况将通过邮件告警;

最右边是贯穿始终的 MES 规则,我们可以抽象地把它看作是实时的配置流。

MES 实时计算引擎

1. 技术选型

expressx引擎是默认是打开,分屏对比效果最实用可以实时对比优化后的结果。用户不再需要学习各种计算引擎的编程接口、不再需要调试分布式计算程序、不再需要自己维护流计算系统,只需要把原来跑在离线平台上的sql迁移到实时流计算平台上,就可以完成复杂的实时计算逻辑。360智能推荐引擎是360智能工程中心研发的一个轻量级可定制的推荐引擎,可以快速的一站式解决端到端的推荐需求,从数据接入到模型训练和上线ab测试,支持业务的快速迭代,包含数据池、离线和实时特征生成,候选集合生成和实时排序等模块,支持的算法有协同过滤、xgboost、dnn和wide&deep。

Storm

的聚合操作,有了这个merge result操作后,就会把2条记录变成一条记录,但是mycat注解后的执行sql显示注解后,没有这一个merge result的操作,所以是2条记录。时序数据的分布式聚合计算需要多个节点并行计算,逻辑上也是一个p/的过程,p过程需要对原始时序数据进行分片,分别聚合计算。单机聚合计算非常简单,用户查询数据时,计算节点查询获取时间范围内的所有时序数据,节点按照时序使用聚合函数对数据进行计算,生成计算结果。

Storm 的优势是实时性好,可以达到毫秒级。但是它的吞吐量欠佳,并且只能为消息提供「至少一次」的处理机制, 这意味着可以保证每条消息都能被处理,但也可能发生重复。

Spark Streaming

Spark Streaming 不像 Storm 那样一次一个地处理数据流,而是在处理前按时间间隔预先将其切分为一段一段,进行「微批次」处理作业。这样一来解决了吞吐量的问题,但它的实时性就没有 Storm 那么高,不过也可以达到秒级处理。

在流式语义方面,由于 SparkStreaming 容错机制基于 RDD,依靠 CheckPoint,出错之后会从该位置重新计算,不会导致重复计算。当然我们也可以自己来管理 offset,保证 Exactly Once (只算一次的语义) 的处理。

Flink

冰箱冷藏室结冰的原因是:冰箱蒸发器上的冰霜太多,融化后流到了冰箱内冰箱排水口发生堵塞,使融化的水不能流出,存留在冰箱内日常生活中冰箱门没有关紧,使空气进入冰箱内结冰冰箱内存放有含有大量水分的食品,温度下降后,水分成为露流在冰箱内冰箱内的接水盘没有与漏斗连接完好,造成水流入冰箱内部冰箱内的温度过低,造成内面存放的饮料、啤酒瓶等爆炸,流进冰箱内 现在您了解了,冰箱冷藏室内结冰是为什么了吧。发源于尧山,自东北方流抵七星山的北麓,于是向西流出葛老桥而后往西流入漓江。非缓冲信道上如果发生了流入无流出,或者流出无流入,也就导致了死锁。

为了解决流处理的容错问题,Flink 巧妙地运用了分布式快照的设计与可部分重发的数据源实现容错。用户可自定义对整个 Job 进行快照的时间间隔。当任务失败时,Flink 会将整个 Job 恢复到最近一次快照,并从数据源重发快照之后的数据。Flink 同时保证了实时性和吞吐量,流式语义也做得非常好,能够保证 Exactly Once。

巴别塔实时协作平台_阿里 实时计算_实时计算服务平台

在此之外,组件技术选型的时候在满足自己业务现状的同时, 还需要从以前几个方面考虑:

2. 设计

下图描述了 MES 实时计算引擎处理数据的过程:

图 3:MES Streaming

数据从 Kafka 源源不断地过来形成数据流,用户通过 UI 配置的一些规则形成实时配置流,数据流和配置流进入到实时计算引擎 Spark Streaming 后进行聚合计算。计算出的实时数据写入到 Redis,历史数据入库到 HBase。UI 目前通过 Restful API 来获取实时和历史数据。

3. 演进

关于 MES 实时计算的引擎,我们主要经历了两次演进。

第一代 :Spark Streaming + Redis + HBase

在设计第一代 MES 时,我们希望可以支持秒级的计算,并且精确计算每一个用户。所以在当时的现状下,我们综合考虑选择了 Spark Streaming。

这个方案计算出来的 UV 是比较精确的。但它有自己的局限性:

首先,这一套架构用到的几个组件其实对资源都比较依赖, 而且 SparkStreaming 对那种时不时的流量高峰的数据处理不是非常友好。数据先在 Spark Streaming 算好然后再入 Redis,最后再入库到 Hbase,数据链路比较长,不好维护。

另外,第一代 MES 只支持自助配置规则,有了规则才会实时计算。所以对于比较自由的 OLAP 交叉分析不友好。而且如果由于集群不稳定等原因导致的任务失败数据少算, 那么不管是用户自助提交 Presto 还是利用 Spark 批处理全量重算,都是一个消耗集群资源的过程。由于批处理重算需要一定的时间来完成对历史数据的修复,这对一些需要数据准确并及时提供的用户不是非常友好。

我们考虑,在数据量大的情况下,我们是不是可以适当牺牲 UV 精准度的计算,来保障整个系统的性能和稳定性。所以就引入了 Flink + Druid。

第二代:引入 Flink + Druid

巴别塔实时协作平台_实时计算服务平台_阿里 实时计算

刚才我们已经简单了解过 Flink,再来说下 Druid。

的伸长量(含回缩量)等数据,实时将数据传输给系统主机进行分析判断,同时张拉设备实现张拉力及加载速度的实时精确控制。提供的主要功能:1、实时查询2、定时查询3、轨迹查询4、无线考勤5、历史查询功能特点:1、多种查询方式:短信、web、wap等多种查询方式2、不限时限地查询:可以做到任何时间、任何地点都可查询3、查询精确:网上查询,通过地图全面的展示位置信息,直观精确。张拉系统是通过传感技术采集每台张拉设备的工作压力和钢绞线的伸长量等数据,并实时将数据传输给系统主机进行分析判断,同时张拉设备接收系统指令,实时调整变频电机工作参数,达到高精度实时调控油泵电机的转速,从而实现张拉力及加载速度的实时精确控制“智能张拉系统非常成熟可靠,很有推广价值。

图 4:关于 Druid

Flink + Druid 部分主要是用来处理数据量大、维度多,且不需要精确到秒级的业务数据,比如 Page logdata、mobile page、以及 Server Push。在最近 15 天的数据是可以精确到分钟级别查询的,对于历史数据,粒度越精确,持久化到 Druid 里面的数据量就越大。

上文提及了离线批量计算模型和实时增量计算模型是有差异的,当sql语言分别作用于批量计算和流式计算时,其语义也发生了变化。实时增量一般是tail文件来实时跟踪文件变化实时计算服务平台,批量或者多线程往导出,这种方式的架构类似。今天带来《滴滴大数据离线及实时平台架构和实践》的主题分享,主要介绍了滴滴的大数据平台,包括3大平台架构体系,分别是实时平台架构体系、离线平台架构体系、hbase平台架构体系等大数据基础设施和基础平台的技术积累和应用实践。

对比一下两代计算引擎,Flink + Druid 的引入很好地解决了因为大量数据的 UV 计算带来的压力:

图 5:两代实时计算引擎

MES 优化历程

为了更好地满足业务需求,提升整个系统的性能,我们也在不断对 MES 进行优化,主要包括实时计算集群、计算引擎、查询接口和监控方面。这里主要和大家分享两点。

1. 实时计算集群优化

2.实时计算引擎优化

数据结构和计算逻辑

12课程设计模块分配:总学时100,总学分6序号教 学 内 容课时分配理论实验小计1程序设计和c语言2242程序的灵魂--算法223最简单的c程序设计-顺序程序设计64104选择结构程序设计66125循环结构程序设计88166利用数组处理批量数据68147用函数实现模块化程序设计88168善于利用指针66129用户自己建立数据类型461010文件的输入输出224合计505010013课程设计重 点:结构化程序设计数组函数指针数据类型难 点:循环结构数组函数指针数据类型结构体14教学实施教学组织:本课程教学分为理论和实训两部分,均在一体化实训室完成。一个指向一段内存的指针,除非确定这段内存原先就分配为某种结 构或类型,或者这种结构或类型的数组,否则不要将它转换为这种结构或类型的指针,而应 该将这段内存拷贝到一个这种结构或类型中, 再访问这个结构或类型。简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。

巴别塔实时协作平台_阿里 实时计算_实时计算服务平台

计算逻辑的部分也要考虑好。比如写 Redis 的时候是事先规划好要存入 Redis 中的数据结构来利用 Akka 并发每条来写入,还是在 Streaming 中算好一批结果最后来一次性写入 Redis,这 2 种方式在性能上还是有很大区别的。

参数优化

(1) 序列化方式首先是 Kyro 的方式,其次才是 Java,序列化的方式不同对网络的传输以及处理起来的性能是有影响的。

机器人集群能够提高故障冗余度,单一的大型机器人可能会因故障失效从而影响任务执行,但是集群中即使有几个机器人失效,集群整体也能继续工作不影响工效,这一特点对于执行空间探索任务特别有吸引力,因为高昂的成本带来的单节点失效常常导致昂贵的损失。集群渲染系统采用分布式渲染技术,系统将自动确定网络中可用的渲染节点和资源,并将任务按照需求分发到相应渲染节点。简单来说当用户提交一个新的请求,比如期望集群里面跑 5 个 tikv 节点,而目前正在跑的只有 3 个,那么 reconcile 机制就会发现这个差异,首先由 kubernetes 的调度器根据集群整体资源情况,并结合 tidb 节点分配的亲和性原则和资源隔离原则来分配节点。

(3) 数据本地化。分布式计算有一个经典的理念是:移动数据不如移动计算。比如说我把一个任务分成很多并行的任务,有可能获得的任务刚好需要处理的数据就在处理的节点上,也有可能不是。所以这里有一个本地化等待时间的参数可以控制数据本地化的处理等级并对性能产生很大影响。

另外还用一些关于并行度控制、JVM GC 方面的调优就比较细节了,如果大家感兴趣可以留言给我们交流。

下面是优化前后结果对比的一个简单展示:

图 6:优化结果对比

未来规划

马蜂窝实时计算平台的发展还需要不断探索,未来我们主要会在以下几个方面重点推进:

1. 实时计算任务统一资源管理和任务调度

2. 支持复杂的实时 SQL OLAP 计算

3. 实时数据血缘关系及监控预警

4. 复杂实时 CEP 规则系统


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-113072-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 高帝萧道成
        高帝萧道成

        假货和山寨货横行

      热点图片
      拼命载入中...