Presto+Alluxio数据平台实战

2023-11-25 11:30

本文主要是介绍Presto+Alluxio数据平台实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数新网络,让每个人享受数据的价值icon-default.png?t=N7T8https://xie.infoq.cn/link?target=https%3A%2F%2Fwww.datacyber.com%2F

一、Presto & Alluxio简介

Presto

Presto是由Facebook开发的开源大数据分布式高性能 SQL查询引擎。

起初,Facebook使用Hive来进行交互式查询分析,但 Hive是基于MapReduce为批处理而设计的,延时很高,满足不了用户对于交互式查询想要快速出结果的场景。

为了解决Hive并不擅长的交互式查询领域,Facebook 开发了Presto,它专注于提供低延时、高性能的交互式查询服务。

与Hive等其他批处理的SQL引擎不同,Presto的查询速度非常快,可以在亚秒级或者分钟级内返回结果,让用户能够更加轻松地进行数据分析和查询。同时,Presto还支持多种数据源的查询,包Hive、MySQL、PostgreSQL、Kafka等,提供了丰富的函数库和强大的扩展性,使得它在企业数据分析、数据仓库构建等领域有着广泛的应用。

Alluxio

Alluxio是一个开源的分布式内存文件系统,由UC Berkeley AMPLab实验室开发。

Alluxio最初名为Tachyon,后更名为Alluxio。它主要解决大数据计算中数据访问速度瓶颈的问题。Alluxio将数据缓存在内存中,使大数据应用程序可以更快速地访问数据。

与传统的HDFS不同,Alluxio无需将数据预先写入磁盘,而是直接将数据缓存在内存,大大提升了数据访问速度。对于需要访问同一数据集的不同计算框架如Spark、MapReduce、Hive等,Alluxio只需将数据集缓存到内存一次,之后所有框架都可以共享这份缓存数据,避免了数据的重复加载。

此外,Alluxio支持混合存储架构,可以挂载多种底层存储系统如AWS S3、Azure Blob Store、HDFS等。数据会先被Cache到Alluxio中,如果Cache不足,Alluxio会暂时从底层储存系统中读取数据。

Alluxio作为内存级数据访问层,极大地提升了大数据应用的性能。它被广泛应用于数据分析、机器学习等需要高吞吐访问大数据集的场景。

二、应用Presto + Alluxio 的场景

图片

Presto+Alluxio的使用场景主要在交互式查询的场景中:

1、实时数据分析

Presto可以查询各种实时数据源如Kafka,配合Alluxio内存级缓存,可以实现对实时数据流的秒级交互分析。

2、交叉数据源查询

Presto可以查询多源异构数据,Alluxio提供数据访问统一层,两者配合可以轻松实现交叉数据源的交互查询。

3、数据仓库查询分析

典型的数据仓库查询对交互性要求较高,Presto + Alluxio可实现对云数据仓库中数据的高速查询。

4、海量小文件查询

Alluxio可将海量小文件缓存到内存中,Presto基于内存数据查询速度很快。

5、分布式环境复杂查询

在分布式环境下,复杂查询需要访问全局数据,Presto+Alluxio可通过内存加速解决网络IO问题。

6、多租户环境查询隔离

Alluxio通过缓存空间隔离提供查询隔离,Presto按租户查询,可实现多租户安全可靠查询。

7、持久化短查询结果

对于重复查询,可以将Presto结果持久化到Alluxio,避免重复计算。

8、跨云查询

Presto可查询多云数据,Alluxio统一数据访问层,实现跨云数据高效查询。

Presto和Alluxio在交互查询领域可以良好覆盖各种典型场景,共同解决交互查询面临的关键痛点,为用户提供高性能、灵活、稳定的交互式查询服务。

Presto + Alluxio 部署方式

图片

在生产环境中,Presto+Alluxio可通过两种方式部署,分别是基于K8s和Yarn部署:

Presto + Alluxio on K8s部署

在本部署方案中,将Presto的Coordinator和worker包括Alluxio的master worker和Presto 的网关Gateway都部署在K8s上,由K8s完成负载和高可用的功能;

Presto on Yarn 部署

在Yarn部署方式中,即由Yarn完成原来由K8s完成的工作,在Yarn部署中,需要使用开源组件Apache Slider;在Yarn部署中,将Presto的coordinator和worker部署在Yarn上;在部署中,需要使用混合部署的模式,需要在每一台部署的nodeManager或者宿主机上部署一个AlluxioWorker,使PrestoWorker可以短路读取本地的缓存,其中缓存存储介质建议使用SSD,可实现较好的加速效果。

三、使用Alluxio遇到的问题

问题一:其他业务系统不能识别Alluxio

问题描述: (以访问Hive表为例)

Presto查询前先访问HMS拿到表和分区的location,locationUrl的schema必须是alluxio:/,Presto才会使用alluxio.hadoop.FileSystem去访问Alluxio Master (由core-site.xml中的fsalluxioimpl配置)。

如果拿到的locationUrl的schema是hdfs://,Presto默认使用org.apache.hadoop.hdfs.DistributedFileSystem去访问NameNode(fs.hdfsimpl的默认值)。

但是如果HMS中存的location是alluxio://,其他业务系统无法识别这个schema。

解决方案:

重写一个hadoop兼容的文件系统客户端,配置到core-site.xml中的fs.hdfsimpl,替换掉默认的实现DistributedFileSystem;Presto在拿到hdfs://的location时,就会使用自实现的客户端来处理,直接访问Alluxio,相当于把schema转换成alluxio://。

问题二:如何提高缓存空间的利用效率?

解决方案:

图片

默认配置下,会造成多次远程命中和缓存数据大量几余,数据更容易被淘汰,降低命中率,可通过开启Presto软亲和性,并采用一致性hash算法来分配Split,实现在保持数据本地性的前提下,降低缓存冗余。

其中:集群整体都进入繁忙的时候,软亲和性等于失效,进而降低数据本地性引发缓存冗余、数据淘汰、命中率下降。

四、适合Alluxio的场景

场景一:UFS的文件不宜太小

读取的小文件越小,Alluxio加速收益越低。

同样大小的数据,小文件越多,读取的元数据、创建的split和driver数越多,还要调度更多的driver执行,这些操作都无法被加速。

例如在数仓中采集到ODS层的数据,如果存在大量小文件,进而导致DWDDWS层也有大量小文件这种场景下,使用Alluxio加速交互式查询数仓的效果会比较差。

优化建议:合并掉Hive表的小文件。

场景二:UFS的文件不宜太小

执行的sql查询越复杂,加速收益越低在整体耗时中,IO耗时的占比就会下降,而Alluxio只能加速IO的耗时,所复杂sql的计算耗时较长以在整体耗时的加速上收益会降低。

ETL中的那些复杂sql,使用Alluxio来加速意义不大。

优化建议:过于复杂的sql执行时不要走Alluxio访问数据。

这篇关于Presto+Alluxio数据平台实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423715

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖