如何在混合云架构中高效运行Presto
如何在混合云架构中高效运行Presto,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
目前创新互联建站已为1000多家的企业提供了网站建设、域名、虚拟空间、网站托管维护、企业网站设计、洪山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
将SQL工作负载从完全的本地环境迁移到云环境中有许多好处,包括降低资源竞争、通过按需购买计算资源来降低费用。当Presto的数据存储在HDFS中时,由于Presto的架构允许存储和计算的组件独立操作,在云环境中的计算与本地的存储之间的分离是显而易见的。在云上通过在Presto检索本地的HDFS数据这样的混合环境里面,一个关键的问题是两个集群之间的网络延迟。
这个关键的瓶颈严重限制了所有工作负载的性能,因为其大部分时间都花在了可能位于地理位置不同的网络之间传输请求的数据上。结果,大多数公司将其数据复制到云环境中并维护该数据副本,也称为Lift and Shift。有合规性和数据主权要求的公司甚至可能阻止组织将数据复制到云中。这种方法不可扩展,需要付出大量的人工才能获得合理的结果。下面介绍了Alluxio充当数据编排层,以帮助将数据高效地提供给Presto,而不是直接查询远程的HDFS集群或将数据的本地化副本手动提供给云集群中的Presto。
采用Alluxio和Presto的混合云架构
在以下架构图中,Presto和Alluxio进程都位于云集群中。就Presto而言,它正在查询数据并将其写入Alluxio,就好像Alluxio是位于同一位置的HDFS集群一样。当Alluxio收到数据请求时,最初会从远程HDFS集群中获取数据,但后续请求将直接从其缓存中获取。当Presto发送数据以将其持久化到存储中时,Alluxio会将数据异步写入HDFS,从而使Presto工作负载免于等待远程写入完成的麻烦。在读取和写入两种情况下,除了初始读取外,Presto工作负载都能够以与HDFS集群在相同的网络中的性能运行(即使不是更快)。请注意,除了部署和配置Alluxio以及在Presto和Alluxio之间建立连接之外,不需要其他配置或其他手动操作即可维护混合环境。
基准测试性能
为了进行基准测试,我们对地理上分离的Hive和HDFS集群中的数据运行SQL查询。
使用Alluxio,我们为所有TPC-DS查询收集两种数据,分别表示为Cold和Warm。
Cold是指在查询执行前,数据没有加载到Alluxio的情况。在这种情况下,Alluxio在查询执行时,按需从HDFS中拉去数据。 Warm是指在Cold类查询执行后数据已经加载到Alluxio中的情况。后续的查询访问相同的数据不需要访问HDFS。
使用HDFS, 我们也收集了两种数据,分别表示为Local和Remote
Local是指Presto和HDFS在同一个区域中。这个数据表示的是计算和数据都在本地(而不需要拉到云环境中)的性能。
Remote是指Presto从另一个区域的存储端读取数据。
我们对比了Presto使用Alluxio(包含Code和Warm)和直接读取HDFS(包含Local和Remote)的性能。基准测试显示,使用Alluxio并且数据缓存在Alluxio中与直接从远程读取HDFS相比,平均性能提升是原来的3倍。
下面的图表分类总结了实验结果。总的来说,使用Alluxio性能提升最大的是q9(7.1倍),提升最小的是q39a(1倍——没有区别)。
在10个节点的计算集群情况下,当从地理上分隔的集群中访问数据时,运行所有查询的峰值网络带宽使用保持在2Gbps以下。使用AWS骨干网络时,网络带宽不是瓶颈。随着计算集群规模的增大,网络带宽使用也会增加。在大型集群中,由于直连网络带宽也存在限制,因此如果不使用Alluxio,网络带宽很可能成为性能瓶颈。
当数据无缝缓存到本地的Alluxio群集中时,使用Alluxio可以看到的大多数性能提升可以通过访问元数据和数据的延迟差异来解释。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
文章名称:如何在混合云架构中高效运行Presto
文章来源:http://cdiso.cn/article/pojjdd.html