10倍性能提升!DLA SQL推出基于Alluxio的数据湖分析加速功能

简介: 在存储计算分离的场景下,通过网络从远端存储读取数据是一个代价较大的操作,往往会带来性能的损耗。以OSS为例,OSS数据读取延时通常较本地磁盘大很多,同时OSS对单个用户使用的带宽上限做了限制,这都会对数据分析的延时造成影响。在云原生数据湖分析(DLA)SQL引擎中,我们通过引入本地缓存机制,将热数据缓存在本地磁盘,拉近数据和计算的距离,减少从远端读取数据带来的延时和IO限制,实现更小的查询延时和更高的吞吐。

背景

在数据上云的大背景下,随着网络和存储硬件能力的提升,存储计算分离逐渐成为了大数据处理的一大趋势。相比于存储和计算耦合的架构,存储计算分离可以带来许多好处,例如允许独立扩展计算和存储、提高资源的利用率、提高业务的灵活性等等。特别是,借助云上的基础设施,存储可以选择便宜的对象存储OSS,计算资源可以按需付费和弹性扩缩容,这些都使得存储计算分离架构可以很好的发挥云计算的成本优势和灵活性。

但是在存储计算分离的场景下,通过网络从远端存储读取数据仍然是一个代价较大的操作,往往会带来性能的损耗。以OSS为例,OSS数据读取延时通常较本地磁盘大很多,同时OSS对单个用户使用的带宽上限做了限制,这都会对数据分析的延时造成影响。在云原生数据湖分析(DLA)SQL引擎中,我们通过引入本地缓存机制,将热数据缓存在本地磁盘,拉近数据和计算的距离,减少从远端读取数据带来的延时和IO限制,实现更小的查询延时和更高的吞吐。

DLA SQL引擎基于弹性的Presto,采取计算与存储完全分离的架构,支持对用户存储在OSS、HDFS等介质上的各种文件格式进行Adhoc查询、BI分析、轻量级ETL等数据分析工作。此次推出数据湖分析加速,DLA与开源大规模数据编排系统厂商Alluxio合作,借助Alluxio提供的缓存加速能力,解决存储计算分离场景下从远端读取数据带来的性能损耗。未来双方将继续在数据湖技术领域开展全方位合作,为客户提供一站式、高效的数据湖分析与计算服务。

DLA SQL数据湖分析加速方案

基于Alluxio的缓存加速原理

架构

在DLA SQL引擎中,负责从远端数据源读取数据的角色是Worker节点。因此,一个自然的想法就是在Worker节点缓存热数据,来实现查询加速的效果。如下图所示:
image.png

这里主要的挑战是在大数据量场景下面如何提高缓存的效率,包括:如何快速定位和读取缓存数据,如何提高缓存命中率,如何快速从远端加载缓存数据等。为了解决这些问题,在单机层面,我们使用Alluxio来实现对缓存的管理,借助Alluxio提供的能力,提高缓存的效率;而在系统层面,使用SOFT_AFFINITY提交策略在worker和数据之间建立对应关系,使得同一段数据(大概率)总是在同一个worker上面读取,从而提高缓存的命中率。

SOFT_AFFINITY提交策略

Presto默认的split提交策略是NO_PREFERENCE,在这种策略下面,主要考虑的因素是worker的负载,因此某个split会被分到哪个worker上面很大程度上是随机的。而在缓存的场景里面则需要考虑“数据本地化”的因素,如果一个split总是被提交到同一个worker上面,对提高缓存效率会很有帮助。
因此,在DLA SQL中,我们使用SOFT_AFFINITY提交策略。在提交Hive的split时,会通过计算split的hash值,尽可能将同一个split提交到同一个worker上面。如下图所示。
image.png

使用_SOFT_AFFINITY_策略时,split的提交策略是这样的:

  1. 通过split的hash值确定split的首选worker和备选worker。
  2. 如果首选worker空闲,则提交到首选worker。
  3. 如果首选worker繁忙,则提交到备选worker。
  4. 如果备选worker也繁忙,则提交到最不繁忙的worker。

如下图:
image.png

这里面,“繁忙”的判断根据如下两个参数来确定:

  • node-scheduler.max-splits-per-node参数用来控制每个worker上面最大可以提交多少个split,默认是100。超出这个值则判定这个worker繁忙。
  • node-scheduler.max-pending-splits-per-task用来控制每个worker上面最多可以有多少个split处于Pending状态。超出这个值则判定这个worker繁忙。

通过这样的判断,可以兼顾数据本地化和worker的负载,避免因为split的hash不均匀造成worker之间的负载不平衡,也不会因为某个worker特别慢而导致查询整体变慢。

Alluxio缓存管理

在Worker上面,我们基于Alluxio Local Cache来对缓存进行管理。 Local Cache是一个嵌入在Presto进程中的库,通过接口调用的方式和Presto通信。和使用Alluxio集群相比,Local Cache模式下Presto调用Alluxio带来的成本更小,同时Local Cache具备完整的缓存管理的功能,包括缓存的加载、淘汰、元数据管理和监控。此外,Alluxio支持缓存的并发异步写入,支持缓存的并发读取,这些都对提高缓存效率有很好的帮助。
Alluxio对外暴露的是一个标准的HDFS接口,因此Cache的管理对Presto是透明的。在这个接口内部,当用户查询需要访问OSS数据源时,如果数据存在于本地缓存中,就会直接从缓存读取数据,加速查询;如果没有命中缓存,就会直接从OSS读取数据(并异步写入到本地磁盘)。
image.png

DLA中的进一步优化

提高缓存命中率

为了实现更高的缓存命中率,我们主要做了两方面的工作:

  • 在成本允许的范围内尽量调大用于缓存加速的磁盘空间。
  • 提高数据“本地化”的比例。

前者很好理解,这里重点介绍后者。

我们分析前面讲的SOFT_AFFINITY提交策略就会发现,如果查询进入“繁忙”的状态,split就会回退到和NO_PREFERENCE一样的随机提交,这种情况下数据“本地化”的比例肯定会降低,因此关键是要尽量避免“繁忙”。但是如果简单调大“繁忙”的阈值,又可能造成worker负载不均匀,cache带来的性能提升被长尾效应吃掉了。
在DLA中,我们是这样做的:

  1. 调大node-scheduler.max-splits-per-node的值,使更多的split可以命中缓存。
  2. 修改HiveSplit的hash算法,在计算hash值时不仅使用文件名,也使用split在文件中的位置,这样就可以避免大文件被hash到一个worker上面,split的hash值天然就会有比较均匀的分布。

提高磁盘吞吐

除了缓存命中率,提高缓存效率的另一个关键点是缓存的读写速度。在基于磁盘的缓存方案里面,实现这个目标的一个重要部分就是提高磁盘的吞吐性能。
在DLA中,我们使用高效云盘来作为缓存的数据盘。背后的考虑是我们把缓存加速特性作为CU版的内置产品能力,不额外收取费用,这就要求缓存引入的成本在CU的总成本中占比要足够小,所以我们不能使用价格昂贵的SSD盘。从成本出发,使用高效云盘是必然的选择,但是这样就需要解决高效云盘单盘吞吐低的问题。
我们通过使用多块盘并在缓存写入时打散来实现更高的吞吐,这样就弥补了云盘吞吐不足的问题。目前DLA中的配置,实测单机读写吞吐均可达到接近600MB/s,在降低成本的同时仍然提供了很好的读写性能。

性能测试

我们针对社区版本prestodb和DLA做了性能对比测试。社区版本我们选择了prestodb 0.228版本,并通过复制jar包以及修改配置的方式增加对oss数据源的支持。我们分别对DLA-SQL CU版256核1024GB、512核2048GB、768核3072GB三种规格与同等算力的社区版本集群进行了对比。

测试的查询我们选择TPC-H 1TB数据测试集。由于TPC-H的大部分查询并不是IO密集型的,所以我们只从中挑选出符合如下两个标准的查询来做比较:

  1. 查询中包含了对最大的表lineitem的扫描,这样扫描的数据量足够大,IO有可能成为瓶颈。
  2. 查询中不涉及多个表的join操作,这样就不会有大数据量参与计算,因而计算不会先于IO而成为瓶颈。

按照这两个标准,我们选择了对lineitem单个表进行查询的Q1和Q6,以及lineitem和另一个表进行join操作的Q4、Q12、Q14、Q15、Q17、Q19和Q20。

测试结果如下:
image.png
image.png
image.png

如何使用

目前缓存特性只在CU版提供,新购买的集群自动开通对oss、hdfs数据源的缓存能力。已有集群可以联系我们升级到最新版本。关于CU的开通和使用可以参考我们的帮助文档。
我们现在还有一元1000CU时的优惠套餐,欢迎试用。点击购买套餐

总结与展望

缓存加速特性通过将热数据缓存在本地磁盘,提供更小的查询延时和更高的吞吐,对IO密集的查询有很好的加速效果。在云上普遍计算和存储分离的场景中,缓存一定还具有更广阔的应用场景。未来我们会进一步探索缓存在Maxcompute等其他数据源和场景的使用,为更多类型的数据读取和计算做加速,提供更好的查询性能。

作者:云原生数据湖分析DLA

原文链接 

本文为阿里云原创内容,未经允许不得转载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

80×60长40米的地笼_石家庄Q345矩形方管 220*80*8方管 华东地区

摘要: 石家庄Q345矩形方管 220*80*8方管 华东地区 无锡征图钢业有限公司是一家以生产矩形钢管为主的方管厂作为专业矩管生产,无缝方管生产企业,矩形钢管生产工艺采用先进的热轧钢管生产线生产,产品销往 ,并部分出口&am…

惠普台式计算机型号怎么看,惠普电脑怎么看型号

惠普电脑怎么看型号如今很多人都已经习惯了使用笔记本电脑,然而又有很多人在用了很长时间后很难第一时间说出所使用笔记本电脑的型号,或者是不知道从哪里查看。下面是jy135小编收集整理的win7电脑配置怎么看,欢迎阅读。如今很多人都已经习惯了…

大促密集,CDN如何保障电商体验如丝般顺滑?

简介: 前不久,阿里云技术天团空降CSDN在线峰会,对核心技术竞争力进行解读。其中,阿里云高级技术专家曾福华分享了《双11: CDN如何保障电商大促如丝般顺滑》的议题。俗话说:养兵千日,用兵一时。每一次的战役…

fullcalendar 显示的时间间隔只有四十五分钟_NHR系列智能显示控制仪表RS485通信中应用...

请点击上方蓝字关注我们!01摘要NHR系列智能显示控制仪表是经过多年开发制造经验而设计生产,集诸多全新功能于一身的新一代智能显示控制仪表。针对现场温度、压力、液位、速度、流量等各种信号进行采集、显示、控制、远传、通讯、打印等处理,构…

高德地图驾车导航内存优化原理与实战

简介: 一般APP只需要关注前台内存过高的系统强杀FOOM,高德地图有不少用户使用后台导航,所以也需要关注后台的内存过高导致的系统强杀BOOM,且后台强杀较前台强杀更为严重。为了提升用户体验,内存治理迫在眉睫。 ​​背景…

向下一代互联网迈进 声网发布全链路加速FPA为互联网增加QoS保障

8月19日,声网Agora举办线上产品发布会,正式发布了“全链路加速FPA(Full-Path Accelerator)”。全链路加速FPA基于声网的软件定义实时网络 SD-RTN™,通过覆盖全球的多点端到端传输优化,全面提升了包含最后一…

平果手机桌面计算机,苹果手机便签记事本怎么在Windows电脑桌面上使用?

原标题:苹果手机便签记事本怎么在Windows电脑桌面上使用?互联网时代的今天,手机和电脑成了现代人必备的常用工具。电脑的话,肯定要选Windows电脑了。毕竟,Windows操作系统上自带有Office办公软件,在它上面办…

这是阿里技术专家对 SRE 和稳定性保障的理解

简介: 在技术工作中,对于产品/基础技术研发和 SRE 两种角色,通常会有基于「是否侧重编码」的理解。对于产品研发转做 SRE ,经常会产生是否要「脱离编码工作」的看法,或者认为是否要「偏离对产品/基础技术的推进」。 前…

Flink 助力美团数仓增量生产

简介: 本文由美团研究员、实时计算负责人鞠大升分享,主要介绍 Flink 助力美团数仓增量生产的应用实践。内容包括:1、数仓增量生产;2、流式数据集成;3、流式数据处理;4、流式 OLAP 应用;5、未来规…

PHP与MySQL外文文献译文和原文_读懂外文文献的秘诀在这里丨49周新闻

搜狗AI合成主播雅妮为你带来【2020年第49周】搜狗新闻联播全 文01搜狗翻译「文档翻译」功能新增“医疗”和“金融”专业术语翻译问君能有几多愁,文献查询挠破头。我本无心空对月,外文翻译更加虐。还在因为如何正确翻译文献资料发愁的朋友,请你…

微软云打印将直接与 OneDrive 集成;全球 90 多家组织敦促苹果放弃引入”儿童安全”功能计划……...

NEWS本周新闻回顾百度发布无人车出行服务平台“萝卜快跑”百度发布无人车出行服务平台“萝卜快跑”。截至2021年上半年,百度Apollo自动驾驶出行服务已累计接待乘客超过40万人次,测试里程超过1400万公里,自动驾驶专利数量超过2900件&#xff0…

「直播实录」中英数据库专家谈:数据库的过去、未来和现在

简介: 数据库是什么?未来的数据会被存在DNA里?数据库里的数据湖是什么? 1月16日,扫地僧做了一场直播,请到我的同事——数据库资深专家封神,和来自帝国理工的高级讲师Thomas Heinis(托…

html dom 知乎,知乎登录页 - 粒子运动效果

简介由于群友的号召,清明时节得空,所以仿知乎登录页面,基于canvas实现了一个粒子(Particle)随机运动的动画效果。DemoDemo源码独立包安装 npm i zhihu-particle --save #使用npm安装复制代码 yarn add zhihu-particle #使用yarn安装复制代码基…

alm系统的使用流程_支持MBSE的企业信息管理系统发展与启示

导读:本文介绍了模型管理与MBSE、产品生命周期管理(PLM)的概念及其之间的关系,分析了不同行业的模型管理现状,提出了模型管理的解决方案与技术方向,最后给出了建设企业信息管理系统的建议,以期为企业信息管理系统支持M…

如何快速部署一个Elasticsearch集群?

作者:无敌码农 来源:无敌码农今天的文章给大家介绍下Elasticsearch这一目前在“搜索”和“分析”领域使用十分广泛的技术组件。并演示如何快速构建一个Elasticsearch集群。Elasticsearch概述Elasticsearch是一款非常强大的开源“搜索”及“分析”引擎。除…

对话阿里云李飞飞:下一代企业级数据库6大技术方向

简介: 对话李飞飞,不仅仅是一次简单的采访,对老鱼来说,也是一种收获,因为,在数据库领域李飞飞拥有敏锐的触角,对数据库发展趋势有着独到的见解和洞察。 题图:DTCC 2020大会专访合影&…

云企业网CEN-TR打造企业级私有网络

简介: 为了满足企业大规模、多样化的组网和网络管理需求,云企业网(CEN)提出了转发路由器TR(Transit Router)的概念。在每个地域内创建一个转发路由器,可以连接大量VPC、VBR,作为您在…

孩子不念书了学计算机,李玫瑾教授:孩子是不是学习的料不用等长大,上幼儿园就能看出来...

读书是通往成功的一个捷径,但却并非所有人都能走这个捷径。虽然家长都不信,也不想相信,但有些孩子就是不适合学习,如果走一些其他的路可能还会有不一样的人生,但要是在学习这一条路上一条走到黑,未来一定不…

这个数据仓库,竟然把淘宝和京东干翻了。。

守着金山讨饭吃,乍听有些不可思议,但不少企业正遭遇这样的窘况。大数据被誉为“新石油”,如何管理并洞悉数据的价值,是企业未来发展的核心竞争力。进入大数据时代,数据规模与日俱增。另一方面,数据仓库的市…

如何做好性能压测丨压测环境设计和搭建

简介:一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。 一般来说,保证执行性能…