首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

打车巨头Uber是如何构建大数据平台?

但是,在我们广泛使用 Apache Hive、Presto®和 Apache Spark 的环境中,如 StackOverflow问题 中所述,在 Parquet 中启用 Delta 编码并非易事。...YARN 调度策略改进 在 Uber,我们使用 Apache YARN 来运行大部分的大数据计算负载(Presto 除外,它直接运行在专用服务器上)。...查询引擎 我们在 Uber 的大数据生态系统中使用了几个查询引擎:Hive-on-Spark、Spark 和 Presto。...当查询被重写为使用内置函数“MAX_BY”时,像 Presto 这样的引擎可以运行得更快。 根据我们的经验,很难预测哪个引擎最适合哪种 SQL 查询。...融合在线和分析存储 我们的很多数据集都存储在线上存储系统(无 schema 存储在闪存上的 MySQL 数据库中)和分析存储系统(存储在硬盘驱动器上的 HDFS 中的 Hive 表)中。

68650

Uber是如何低成本构建开源大数据平台的?

但是,在我们广泛使用 Apache Hive、Presto®和 Apache Spark 的环境中,如 StackOverflow问题 中所述,在 Parquet 中启用 Delta 编码并非易事。...3YARN 调度策略改进 在 Uber,我们使用 Apache YARN 来运行大部分的大数据计算负载(Presto 除外,它直接运行在专用服务器上)。...7查询引擎 我们在 Uber 的大数据生态系统中使用了几个查询引擎:Hive-on-Spark、Spark 和 Presto。...当查询被重写为使用内置函数“MAX_BY”时,像 Presto 这样的引擎可以运行得更快。 根据我们的经验,很难预测哪个引擎最适合哪种 SQL 查询。...融合在线和分析存储   我们的很多数据集都存储在线上存储系统(无 schema 存储在闪存上的 MySQL 数据库中)和分析存储系统(存储在硬盘驱动器上的 HDFS 中的 Hive 表)中。

68530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    盘点:SQL on Hadoop中用到的主要技术

    考虑到系统使用的广泛程度与成熟度,在具体举例时一般会拿Hive和Impala为例,当然在调研的过程中也会涉及到一些其他系统,如Spark SQL,Presto,TAJO等。...sql编译过程 Presto与Hive一样,使用Antlr编写SQL语法。...3.1 CPU 在具体的计算执行过程中,低效的cpu会导致系统的瓶颈落在CPU上,导致IO无法充分利用。...4.3 Parquet Parquet的设计原理跟ORC类似,不过它有两个特点: 通用性 相比ORCFile专门给Hive使用而言,Parquet不仅仅是给Impala使用,还可以给其他查询工具使用,如...图中的e跟f在都属于第二层的重复记录(同一个level2),所以f的r值为2,而c跟d则是不同的level2,但属于同一个level1,所以d的r值为1。

    1.3K10

    从 0 到 1 学习 Presto,这一篇就够了

    上的数据统计 6.4.2 查询条件中尽量带上分区字段进行过滤 6.4.3 多多使用 WITH 语句 6.4.4 利用子查询,减少读表的次数,尤其是大数据量的表 6.4.5 只查询需要的字段 6.4.6...由于在单独一台服务器上配置 coordinator ,有利于提高性能,所以在 node01上配置成 coordinator,在 node02,node03 上配 置为 worker(如果实际机器数量不多的话可以将在协调器上部署...将 node01 上配置好的 presto 安装包分发到集群中的其它节点(这里使用的是自己写的分发脚本) [root@node01 servers]# xsync script /export...6.1.2 使用 ORC 格式存储 Presto 对 ORC文件 读取进行了特定优化,因此,在 Hive 中创建 Presto 使用的表时,建议采用 ORC 格式存储。...utm_source=tag-newest 6.4.1 如何加快在Presto上的数据统计 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。

    8.1K55

    Presto 分布式SQL查询引擎及原理分析

    甚至可以实现自定义的Connector,实现索引下推,借助外置的索引能力,实现特殊场景下的 MPP; 6.流水线:Presto 是基于PipeLine进行设计,在大量数据计算过程中,终端用户(Driver...切换当前使用的实例(在同一个数据源内切换无需指定catalog 前缀):use hive.default Presto接入方式 Presto的接入方式有多种:presto-cli,pyhive,jdbc...而 Presto 调度的确就是用了线程,而不是进程。 2.Presto 的Coordinator/Worker 架构更像 Spark Standalone 模式,只在两个进程和服务中完成。...Connector 能根据字段元数据采用一定程度的索引下推,利用底层系统的索引能力,大大减少数据扫描区间和参与计算的数据量。...实际上Presto 可以代理多种数据源,因此可以作为多种数据库的代理层,尤其是需要夸多种数据源执行SQL的场景。

    4.8K21

    湖仓一体:基于Iceberg的湖仓一体架构在B站的实践

    上,用户可以使用SQL、DataSet、FileSystem等各个层次的API使用Hive、Spark、Presto、Python等框架或语言访问数据 数据湖架构的好处是有非常大的灵活性,结构化、半结构化...站的实践上,大部分场景,像ClickHouse对比Spark、Presto也确实有量级上的性能提升。...湖仓一体是近两年大数据一个非常热门的方向,如何在同一套技术架构上同时保持湖的灵活性和仓的高效性是其中的关键。...对比开放的SQL引擎、存储格式如:Presto、Spark、ORC、Parquet和分布式数仓如:ClickHouse、SnowFlake对应层的实现,其实差别不大,开源分布式引擎一直在逐渐补足SQL...在多维分析的实际场景中,一般都会有多个常用的过滤字段,Linear Order只对靠前字段有较好的Data Skip效果,通常会采用将低基数字段作为靠前的排序字段,从而才能保证对于后面的排序字段在过滤时也有一定的

    85310

    Presto在滴滴的探索与实践

    在Gateway层,我们做了一些优化来区分大查询、中查询及小查询,对于查询时间小于3分钟的,我们即认为适合Presto查询,比如通过HBO(基于历史的统计信息)及JOIN数量来区分查询大小,架构图见:...同时,因为使用Gateway,即使SQL查询出错,SQL也会转发到Spark及Hive上,所以我们没有使用Presto的Spill to Disk功能。...Hive Metastore的请求次数,当时Hive Metastore的压力比较大,考虑到成本和稳定性,我们最后选择在Presto引擎层上兼容。...与HDFS混部署,数据和客户端在同一台机器上时,短路读时一直wait锁,导致查询Hang住超时,Hadoop社区已解决 超卖导致Worker Young GC Exhausted,优化GC参数,如设置-...但是如果看最近一个月的CPU使用率会发现,平均CPU使用率比较低,且波峰在白天10~18点,晚上基本上没有查询,CPU使用率不到5%。

    1.6K40

    唯品会亿级数据服务平台落地实践

    数仓的数据在被数据产品使用时,需要为每个表新生成一个单独的接口,应用端需要为每一种访问方式(如 Presto、ClickHouse)区分使用不同的接口,导致数据产品接口暴涨,不方便维护,影响开发及维护效率...不同数据产品中都需要使用一些常用的数据指标,如销售额、订单数、PV、UV 等,而这些数据在不同数据产品的实现口径、实现方式都不一样,无法形成数据共享,每个数据产品都重复进行相同的指标建设。...数据层:业务查询的数据无论在数仓、Clickhouse、MySQL 还是 Redis 中,都可以很好地得到支持,用户都使用同一套 API。 图 2....作业权重 = 1 - (当前时间 - 入队时间) / 超时时间 这个等式表示的意义是:在同一个队列中,如果一个作业的剩余超时时间越少,则意味着此作业将更快达到超时,因此它应该获得更大的选择机会。...这种情况在 Presto 跟 ClickHouse 的函数比较时尤为突出,如 Presto 的 strpos(string,substring)函数,在 Clickhouse 中为 position(haystack

    99910

    唯品会亿级数据服务平台落地实践

    数仓的数据在被数据产品使用时,需要为每个表新生成一个单独的接口,应用端需要为每一种访问方式(如 Presto、ClickHouse)区分使用不同的接口,导致数据产品接口暴涨,不方便维护,影响开发及维护效率...不同数据产品中都需要使用一些常用的数据指标,如销售额、订单数、PV、UV 等,而这些数据在不同数据产品的实现口径、实现方式都不一样,无法形成数据共享,每个数据产品都重复进行相同的指标建设。...数据层:业务查询的数据无论在数仓、Clickhouse、MySQL 还是 Redis 中,都可以很好地得到支持,用户都使用同一套 API。 图 2....作业权重 = 1 - (当前时间-入队时间) / 超时时间 这个等式表示的意义是:在同一个队列中,如果一个作业的剩余超时时间越少,则意味着此作业将更快达到超时,因此它应该获得更大的选择机会。...这种情况在 Presto 跟 ClickHouse 的函数比较时尤为突出,如 Presto 的 strpos(string,substring)函数,在 Clickhouse 中为 position(haystack

    83810

    唯品会亿级数据服务平台落地实践

    数仓的数据在被数据产品使用时,需要为每个表新生成一个单独的接口,应用端需要为每一种访问方式(如 Presto、ClickHouse)区分使用不同的接口,导致数据产品接口暴涨,不方便维护,影响开发及维护效率...不同数据产品中都需要使用一些常用的数据指标,如销售额、订单数、PV、UV 等,而这些数据在不同数据产品的实现口径、实现方式都不一样,无法形成数据共享,每个数据产品都重复进行相同的指标建设。...数据层:业务查询的数据无论在数仓、Clickhouse、MySQL 还是 Redis 中,都可以很好地得到支持,用户都使用同一套 API。 图 2....作业权重 = 1 - (当前时间-入队时间) / 超时时间 这个等式表示的意义是:在同一个队列中,如果一个作业的剩余超时时间越少,则意味着此作业将更快达到超时,因此它应该获得更大的选择机会。...这种情况在 Presto 跟 ClickHouse 的函数比较时尤为突出,如 Presto 的 strpos(string,substring)函数,在 Clickhouse 中为 position(haystack

    84810

    Presto原理&调优&面试&实战全面升级版

    利用这种架构,Presto查询引擎能够并行的在集群的各个机器上,处理大规模数据的SQL查询。Presto在每个节点上都是单进程的服务。...Presto 通过在每个节点并发调度任务来实现多租户,并且使用合作的多任务模型。任何一个 split 任务在一个运行线程中只能占中最大 1 秒钟时长,超时之后就要放弃该线程重新回到队列。...为了避免死锁,一个集群中同一时间只有一个查询可以使用预留池资源,其他的任务的预留池资源申请会被阻塞。这在某种情况下是优点浪费,集群可以考虑配置一下去杀死这个查询而不是阻塞大部分节点。...使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。...Presto 在有赞的应用 有赞在Presto上主要用来进行以下业务支持: 数据平台(DP)的临时查询: 有赞的大数据团队使用临时查询进行探索性的数据分析的统一入口,同时也提供了脱敏,审计等功能。

    2.2K41

    Presto介绍及常用查询优化方法总结

    Presto提供了一套Connector接口,用于读取元信息和原始数据。 Presto 内置有多种数据源,如 Hive、MySQL、Kudu、Kafka 等。...② 使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。...2.2 查询优化 ① select时只选择必要字段,避免使用 * 号 ② 过滤条件加上分区字段,减少查询数据量 ③ 合理安排Group by语句中字段顺序对性能有一定提升 将Group By语句中字段按照每个字段...Rank函数代替row_number函数来获取Top N 在进行一些分组排序场景时,使用rank函数性能更好 2.3 Join优化 ① 使用Join语句时将大表放在左边 Presto中join的默认算法是...② 如果左表和右表都比较大 为防止内存溢出,做如下配置: 1)修改配置distributed-joins-enabled (presto version >=0.196) 2)在每次查询开始使用distributed_join

    2.7K00

    基于AIGC的写作尝试:Presto: A Decade of SQL Analytics at Meta(翻译)

    缓存本地性:为了最大化工作节点(无论是内存还是本地闪存)上的缓存命中率,协调器需要使用哈希函数将同一文件的读取请求调度到同一工作节点上。...本节介绍了在过去几年中新建的Presto过滤和剪枝技术。子字段剪枝:像映射、数组和结构体这样的复杂类型在现代数据仓库中被广泛使用。...读取器将根据列格式(如ORC [38]或Parquet [39])跳过未使用的子字段。在上述数组类型实例的示例中,只有[2]从磁盘中读取;的所有其他索引都被跳过。剪枝是递归的,以支持任意级别的嵌套。...请注意,部分Giraph功能也正在因这些Presto图形扩展而被弃用。图11展示了两个引擎在CPU比率方面在Presto上运行的效率。我们执行了4个图形查询,以说明使用Presto的CPU收益。...我们正在探索一种通用的非SQL API,类似于Snowpark [4]或PySpark [23]中的Python API,以允许在协调器上执行控制流,并在工作进程上使用类SQL语义的数据流。

    4.9K111

    Antlr4实战:统一SQL路由多引擎

    Antlr在Hadoop整个生态系统应用较为广泛,如Hive 词法文件是Antlr3写的;Presto词法文件也Antlr4实现的;SparkSQL词法文件是用Presto的词法文件改写的;还有HBase...4)实现访问器遍历原HSQL生成转换目标语法如Presto逻辑,作为翻译器的返回结果。 这些实现过程因为函数的转换,不同语句转换,调换,裁剪,增加等等逻辑都是在访问器模式遍历语法树的过程中实现的。...语法树片段,如图: 在使用Visitor访问器模式,对语法树进行遍历时,把HQL语法转换为目标引擎的语法如Presto语法。...使用字符串中使用'单引号做字符转义,Hive使用\反斜杠做转义,同一个正则表 达式'[^\\u4e00-\\u9fa50-9]',在Hive中,就写成'[^\\u4e00-...但因Hive天生支持隐式转换,再加上没有标准化建模的数据仓库(没有指定数据标准,同一个通用字段,在不同表中有不同的数据类型等)会给其增加路由其他引擎执行的难度,这里实现部分简单的隐式转换功能,以后会再添加一层语义层

    10K41

    快速学习-Presto上使用SQL遇到的坑

    第5章 Presto上使用SQL遇到的坑 https://segmentfault.com/a/1190000013120454?...utm_source=tag-newest 5.1 如何加快在Presto上的数据统计 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。...在每次查询归档表的时候,要带上分区字段作为过滤条件,这样可以加快查询速度。因为有了分区字段作为查询条件,就能帮助Presto避免全区扫描,减少Presto需要扫描的HDFS的文件数。...5.5 只查询需要的字段 一定要避免在查询中使用 SELECT *这样的语句,换位思考,如果让你去查询数据是不是告诉你的越具体,工作效率越高呢。...5.6 Join查询优化 Join左边尽量放小数据量的表,而且最好是重复关联键少的表 5.7 字段名引用 Presto中的字段名引用使用双引号分割,这个要区别于MySQL的反引号`。

    4.4K30

    构建一个优秀的SQL及优化方案

    必要的查询字段---由于存储的特性,选择需要的字段可加快字段的读取、减少数据量。避免采用*读取所有字段。一般再CTE模式中这种风险不是很明显为什么要避免使用*?它带来的风险?...,如log、IconMD5等之类的无用且超大文本字段,数据传输会几何增涨。...如果服务和应用程序不在同一台机器,这种开销会急剧增长,并且使用它会杜绝索引的覆盖性)正确的使用方式正确的SQL:SELECT id, name FROM tableA错误的SQL:SELECT * FROM...避免使用多LIKE语句---如果是使用的Presto的话,一定要使用regexp_like,这是因为Presto查询优化器没有对多个like语句进行优化,使用regexp_like对性能有较大提升正确的...FROM t错误的SQL:SELECT id ,pv, uv , pv/uv rate FROM tableA虚拟列非常消耗资源浪费性能,拿到pv uv后在CTE构建的临时表中做比率计算。

    82050

    关于Presto避坑的小小指南

    Presto的是什么?优势是什么呢?从官方文档中我们了解到 Presto是一个分布式SQL查询引擎,用于查询分布在一个或多个不同数据源中的大数据集。...遇到过的问题 如何加快在Presto上的数据统计 很多的时候,在Presto上对数据库跨库查询,例如Mysql数据库。...在每次查询归档表的时候,要带上分区字段作为过滤条件,这样可以加快查询速度。因为有了分区字段作为查询条件,就能帮助Presto避免全区扫描,减少Presto需要扫描的HDFS的文件数。...只查询需要的字段 一定要避免在查询中使用 SELECT *这样的语句,换位思考,如果让你去查询数据是不是告诉你的越具体,工作效率越高呢。 对于我们的数据库而言也是这样,任务越明确,工作效率越高。...Join查询优化 Join左边尽量放小数据量的表,而且最好是重复关联键少的表 字段名引用 Presto中的字段名引用使用双引号分割,这个要区别于MySQL的反引号`。 当然,你可以不加这个双引号。

    2.2K10
    领券