Presto+Alluxio数据平台实战

news2024/9/22 3:37:08

数新网络,让每个人享受数据的价值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访问数据。

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

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

相关文章

nginx基础篇学习

一、nginx编译安装 1、前往nginx官网获取安装包 下载安装包 2、解压 3、安装 进入安装包 安装准备:nginx的rewrite module重写模块依赖于pcre、pcre-devel、zlib和zlib-devel库,要先安装这些库 安装: 编译: 启动&#xff…

idea自动切换输入法Smart Input

idea搜索后下载 红色表示中文输入法 再ideavim场景下会自动切换成英文非常好用强烈推荐下载一个

堆的实现(堆的插入、堆的删除等)超级全

堆的实现(堆的插入、堆的删除等)超级全 文章目录 堆的实现(堆的插入、堆的删除等)超级全一、前期基础知识1.树结构①树的定义②树的相关概念③二叉树④满二叉树和完全二叉树a.满二叉树b.完全二叉树 ⑤二叉树的性质⑥二叉树顺序结构…

「Java开发中文指南」IntelliJ IDEA插件安装(一)

IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 插件扩展了Intel…

只考数据结构,计算机评级C+,成都信息工程大学考情分析

成都信息工程大学(C) 考研难度(☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、24专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1715字,预计阅读:3分钟 2023考情概况 …

【从浅识到熟知Linux】基本指定之cat、more和less

🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:写完这篇我要去吃晚饭啦!! 文章前言:本文介绍cat、more和less指令三种查看文件的用法并给出示例和截图…

格式化输入输出

跟着肯哥(不是我)学格式化输入输出 C语言格式化输入 在C语言中,格式化输入(Formatted Input)是一种从标准输入读取数据并按照指定格式进行解析的操作,它主要通过使用标准库函数scanf()来实现格式化输入。 …

Go语言的学习笔记2——Go语言源文件的结构布局

用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局,主要分为包名、引入的包和具体函数。下边是main.go示例代码: package mainimport "fmt"func main() { fmt.Println("hello, world") }package main就是表明这个文件…

计算机毕业设计 基于SpringBoot的无人智慧超市管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解+答疑

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

14.docker部署应用的两种企业实践

1.介绍 1.1 说明 这里仅仅说明一下在企业应用的两种简单实践,并不包含自动化这套东西。这里说的两种实践,是我在工作中不同公司使用的两种部署方式,仅供大家参考。 1.2 两种部署方式 第一种:是把环境和app都一起打成一个镜像&…

Javaweb之前端工程化的详细解析

3 前端工程化 3.1 前端工程化介绍 我们目前的前端开发中,当我们需要使用一些资源时,例如:vue.js,和axios.js文件,都是直接再工程中导入的,如下图所示: 但是上述开发模式存在如下问题&#xff…

力扣每日一道系列 --- LeetCode 206. 反转链表

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构探索 ✅LeetCode每日一道 🌅 有航道的人,再渺小也不会迷途。 LeetCode 206. 反转链表 思路一:头插 初始化两个指针,cur 和 newhead。…

数据结构与算法介绍

什么是数据结构 定义: 数据结构就是研究数据的存储方式;数据存储的目的是方便后期对数据的再利用;选择合适的方式来存储数据,是数据结构的核心内容。 数据存储结构的选择:取决于两方面,即数据的逻辑结构和…

metersphere 设置定时任务和查看报告

设置定时任务 设置时间 查看执行后的测试报告 查看报告详情

【报错栏】(Vue) Invalid handler for event “click“: got undefined

Property or method "add" is not defined on the instance but referenced during render. 翻译: 属性或方法“add”未在实例上定义,但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译: …

使用VUE3实现简单颜色盘,吸管组件,useEyeDropper和<input type=“color“ />的使用

1.使用vueuse中的useEyeDropper来实现滴管的功能和使用input中的type"color"属性来实现颜色盘 效果&#xff1a; 图标触发吸管 input触发颜色盘 组件代码部分 &#xff1a;<dropper> ---- vueuse使用 <template><div class"sRGBHexWrap fbc…

DGL在异构图上的GraphConv模块

回顾同构图GraphConv模块 首先回顾一下同构图中实现GraphConv的主要思路&#xff08;以GraphSAGE为例&#xff09;&#xff1a; 在初始化模块首先是获取源节点和目标节点的输入维度&#xff0c;同时获取输出的特征维度。根据SAGE论文提出的三种聚合操作&#xff0c;需要获取所…

2023亚太杯数学建模B题完整原创论文讲解

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2023亚太地区数学建模竞赛B题玻璃温室的微气候调控完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 论文共6…

ZC-OFDM模糊函数原理及仿真

文章目录 前言一、ZC 序列二、ZC-OFDM 信号1、OFDM 信号表达式2、模糊函数表达式三、MATLAB 仿真1、MATLAB 核心源码2、仿真结果①、ZC-OFDM 模糊函数②、ZC-OFDM 距离分辨率③、ZC-OFDM 速度分辨率前言 本文进行 ZC-OFDM 的原理讲解及仿真,首先看一下 ZC-OFDM 的模糊函数仿真…

roseha for windows 11+oracle 11g部署过程

文章目录 一、环境准备关闭防火墙配置hosts共享存储准备 二、部署步骤1.主机A、B安装数据库软件2.主机A进行数据库实例创建3.主机B创建数据库4.安装配置roseha软件 一、环境准备 windows server 2019 oracle 11.2.0.3 EE roseha for windows 11 5个IP地址&#xff1a;2心跳、3…