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

Spark 的性能调优

下面这些关于 Spark 的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的。...基本概念和原则 首先,要搞清楚 Spark 的几个基本概念和原则,否则系统的性能调优无从谈起: 每一台 host 上面可以并行 N 个 worker,每一个 worker 下面可以并行 M 个 executor...下面给这样一个直观的例子,当前总的 cpu 利用率并不高: 但是经过根据上述原则的的调整之后,可以显著发现 cpu 总利用率增加了: 其次,涉及性能调优我们经常要改配置,在 Spark 里面有三种常见的配置方式...可供参考的文档:官方调优文档 Tuning Spark,Spark 配置的官方文档,Spark Programming Guide,Running Spark on YARN,JVMGC 调优文档,JVM...性能调优文档,How-to: Tune Your Apache Spark Jobs part-1 & part-2,Spark on Yarn: Where Have All the Memory

43710

Spark的性能调优

下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的。 ?...基本概念和原则 首先,要搞清楚Spark的几个基本概念和原则,否则系统的性能调优无从谈起: 每一台host上面可以并行N个worker,每一个worker下面可以并行M个executor,task们会被分配到...其次,涉及性能调优我们经常要改配置,在Spark里面有三种常见的配置方式,虽然有些参数的配置是可以互相替代,但是作为最佳实践,还是需要遵循不同的情形下使用不同的配置: 设置环境变量,这种方式主要用于和环境...有的配置在不同的MR框架/工具下是不一样的,比如YARN下有的参数的默认取值就不同,这点需要注意。 明确这些基础的事情以后,再来一项一项看性能调优的要点。...根据我的测试,独占模式的性能要略好与共享模式。 GC调优。打印GC信息:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps。

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

    大数据spark、hadoop、hive、hbase面试题及解析

    整理的答案 后面继续更新: (1)spark运行流程、源码架构 https://blog.csdn.net/sghuu/article/details/103547937 (2)Hbase主键设计、hbase...主键设计: 1.生成随机数、hash、散列值 2.字符串反转 3.字符串拼接 hbase为何快:https://blog.csdn.net/sghuu/article/details/102955969...调优 spark的四个方面调优 (15)Spark数据倾斜解决方案 spark数据倾斜的6种解决 https://blog.csdn.net/sghuu/article/details/103710145...,zookeeper在其中的作用 (19)spark的内存管理机制,spark1.6前后对比分析 (21)spark rdd、dataframe、dataset区别 (22)spark里面有哪些参数可以设置...,有什么用 (23)hashpartitioner与rangePartitioner的实现 (24)spark有哪几种join (25)spark jdbc(mysql)读取并发度优化 (26)Spark

    65120

    Phoenix边讲架构边调优

    一 基础架构详解 1 概念 讲调优之前,需要大家深入了解phoenix的架构,这样才能更好的调优。...详细操作请参考:实战phoenix 二 调优指引 调优phoenix是非常复杂的,但是假如知道一点它的工作原理,就可以在读写性能方面做出巨大改进。...从本地索引读取有性能损失,所以做性能测试是很重要的。 2.3 哪些列将经常访问 选择通常查询的列作为主键。创建额外的索引来支持常见的查询模式,包括大量访问不在主键中的字段。...3.2 列簇 如果某些列的访问频率比其他列高,则可以创建多个列族,将经常访问的列与很少访问的列分开。这可以提高性能,因为HBase只读取查询中指定的列族。...服务器操作分布在集群中,并行操作,而客户端操作在单个客户端JDBC驱动程序内执行。 尽可能使用RANGE SCAN或SKIP SCAN,而不是TABLE SCAN。 根据主键约束中的前导列进行过滤。

    4K80

    SparkSQL的应用实践和优化实战

    本次演讲介绍了字节跳动基于SparkSQL建设大数据查询统一服务TQS(Toutiao Query Service)的一些实践以及在执行计划调优、数据读取剪枝、SQL兼容性等方面对SparkSQL引擎的一些优化...一些其它优化 执行计划调优 执行计划的自动调优: Spark Adaptive Execution ( Intel®Software),简称SparkAE,总体思想是将sparksql生成的1个job中的所有...基于Parquet数据读取剪枝:BloomFilter&BitMap ? ? ? 整体优化结果: 命中索引平均性能提升 30% 生成时间增加:10% 空间开销增加:5% 如何选取合适的列 ?...基于Parquet数据读取剪枝:Prewhere 基于列式存储各列分别存储、读取的特性•针对需要返回多列的SQL,先根据下推条件对RowId进行过滤、选取。...(省去yarn申请资源耗时) 其他默认走Spark-Submit 标注结果选择不同运行参数: Executor个数/内存 Overhead、堆外内存 调优后使得Adhoc30s以内SQL占比45%,Spark-Submit

    2.5K20

    SparkSql官方文档中文翻译(java版本)

    (Troubleshooting) 4 性能调优 4.1 缓存数据至内存(Caching Data In Memory) 4.2 调优参数(Other Configuration Options) 5...4 性能调优 4.1 缓存数据至内存(Caching Data In Memory) Spark SQL可以通过调用sqlContext.cacheTable("tableName") 或者dataFrame.cache...然后Spark SQL在执行查询任务时,只需扫描必需的列,从而以减少扫描数据量、提高性能。通过缓存数据,Spark SQL还可以自动调节压缩,从而达到最小化内存使用率和降低GC压力的目的。...4.2 调优参数(Other Configuration Options) 可以通过配置下表中的参数调节Spark SQL的性能。...在后续的Spark版本中将逐渐增强自动调优功能,下表中的参数在后续的版本中或许将不再需要配置。 ?

    9.1K30

    Spark SQL,DataFrame以及 Datasets 编程指南 - For 2.0

    由于同一列的数据类型是一样的,可以使用更高效的压缩编码进一步节省存储空间 只读取需要的列,支持向量运算,能够获取更好的扫描性能 Spark SQL 支持读写 Parquet 格式数据。...dbtable 要读取的 JDBC 库和表。...lowerBound 和 upperBound 用来指定分区边界,而不是用来过滤表中数据的,因为表中的所有数据都会被读取并分区 fetchSize 定义每次读取多少条数据,这有助于提升读取的性能和稳定性...如果一次读取过多数据,容易因为网络原因导致失败 一个简单的示例如下: val jdbcDF = spark.read.format("jdbc").options( Map("url" -> "jdbc...:postgresql:dbserver", "dbtable" -> "schema.tablename")).load() 性能调优 对于很多 Application,我们可以通过缓存数据至内存或调整一些选项来进行性能调优

    4K20

    sparksql调优之第一弹

    1,jvm调优 这个是扯不断,理还乱。建议能加内存就加内存,没事调啥JVM,你都不了解JVM和你的任务数据。 spark调优系列之内存和GC调优 2,内存调优 缓存表 spark2....spark.sql.inMemoryColumnarStorage.batchSize 10000 控制列缓存的批量大小。...对于有些公司来说,估计在用的时候会有Spark sql处理的数据比较少,然后资源也比较少,这时候这个shuffle分区数200就太大了,应该适当调小,来提升性能。...Parquet已经可以达到很大的性能了。性能指标,网上一堆,在这里浪尖就不啰嗦了。 7,sql调优 听天由命吧。...关于调优多说一句: 对于Spark任务的调优,要深入了解的就是数据在整个spark计算链条中,在每个分区的分布情况。有了这点的了解,我们就会知道数据是否倾斜,在哪倾斜,然后在针对倾斜进行调优。

    3K80

    从Druid到ClickHouse | eBay广告平台数据OLAP实战

    灵活的数据定义和接入:通过支持SQL语言、JDBC和关系模型,降低学习和迁移成本,可以和其他现有数据的产品无缝集成。 03 为什么迁移?...这方面需要根据业务场景和数据模式反复斟酌和多次试验,因为不同的选择会对存储和性能有数量级的影响,一个错误的选择会导致后期巨大的调优和变更成本。...对不同列选择一种合适的压缩算法和等级,能把压缩和查询的平衡做到性价比最优。 ClickHouse的所有列默认使用LZ4压缩。...3)Spark聚合与分片 为了降低ClickHouse导入离线数据性能压力,我们引入了Spark任务对原始离线数据进行聚合和分片。每个分片可以分别拉取并导入数据文件,节省了数据路由、聚合的开销。...上游应用的同一条SQL只能读取同一分区一个版本的数据,每个分区的数据替换只感觉到一次切换,并不会出现同时读取新旧数据的问题。

    1.7K10

    spark sql 非业务调优

    1,jvm调优 这个是扯不断,理还乱。建议能加内存就加内存,没事调啥JVM,你都不了解JVM和你的任务数据。默认的参数已经很好了,对于GC算法,spark sql可以尝试一些 G1。...必背|spark 内存,GC及数据结构调优 2,内存调优 缓存表 spark2....对于有些公司来说,估计在用的时候会有Spark sql处理的数据比较少,然后资源也比较少,这时候这个shuffle分区数200就太大了,应该适当调小,来提升性能。...Parquet已经可以达到很大的性能了。性能指标,网上一堆,在这里浪尖就不啰嗦了。 7,sql调优 听天由命吧。主要要熟悉业务,熟悉数据,熟悉sql解析的过程。...关于调优多说一句: 对于Spark任务的调优,要深入了解的就是数据在整个spark计算链条中,在每个分区的分布情况。有了这点的了解,我们就会知道数据是否倾斜,在哪倾斜,然后在针对倾斜进行调优。

    1.3K30

    sparkSQL实例_flink sql

    文章目录 需求说明 代码分析 调优 总结 记一次SparkSql ETL 过程 需求说明 1)input:json日志 2)ETL:根据IP解析出 省份,城市 3)stat: 地区分布指标计算,...默认就是parquet + snappy) // 计算 重新去读取etl之后的数据源 val parquetDF = spark.read.parquet("outparquet/xxx.snappy.parquet...splits = cityInfo.split("\\|") var city = "未知" if (splits.length == 5){ city = splits(3) } city }) } 调优...因为ETL清洗出来的是全字段,我们不可能使用到全部字段,所以采用列式存储,用到几列就获取几列,这样就能减少I/O,性能大大提升) Stat ==> 一个非常简单的SQL搞定 ==> 复杂:多个SQL...或者 一个复杂SQL搞定 列式:ORC/Parquet 特点:把每一列的数据存放在一起 优点:减少IO 需要哪几列就直接获取哪几列 缺点:如果你还是要获取每一行中的所有列,那么性能比行式的差 行式

    77320

    基于 Iceberg 打造高效、统一的腾讯广告特征数据湖

    对比项 Iceberg Hudi 引擎支持 Spark / Flink / Presto 等 Spark / Flink / Presto 等 存储模式 元信息文件 + 列存文件 元信息文件 + 列存文件...整体写入耗时基本在分钟级别,没有显著的量级差异;读取时根据不同类型的过滤和聚合条件,无主键、主键小分桶、主键大分桶的表各有优劣: 1. 根据主键去重、过滤、聚合计算时,主键表均比无主键表更优。...业内在多流数据合并方案上,计算层主要通过 Flink State 来实现,使用状态 KV 来缓存和拼接出整行数据,一方面对任务的性能调优要求很高,需要对任务中的一些关键节点进行针对性的配置调优,另一方面方案通用性不强...特征生产需要更加通用化的方案,以避免对计算任务点对点逐个调优,因此考虑将相关的拼接合并逻辑下推到存储侧。...在特征存储迁移至全列存后,将补录特征的读取精确到了特征 ID & 列级别,在抽取时可 DataSkip 掉同一个特征组中无需使用的数据,提高加载性能。

    13210

    Kudu设计要点面面观(下篇)

    欢迎您关注《大数据成神之路》 目录 行事务与数据一致性 与Impala、Spark集成 Benchmarking 当前的主要不足 简单调优方法 参考:《Kudu设计要点面面观(上篇)》,本文适用知识共享...与Impala、Spark集成 Kudu本身并没有SQL外壳,仅仅提供了Java和C++ API。但是Kudu和查询引擎Impala可以近乎无缝地结合在一起,为Kudu提供SQL能力。...可见,Phoenix on HBase的方案只有在基于RowKey的查询时有性能优势,并且领先幅度不大。而Impala on Kudu在执行基于列的查询和全表扫描时,效率远远高于HBase。...以我们生产环境中部署的1.5版本举例如下: 一行的主键组的值不能修改。如果想修改主键,就必须把该行删掉并新插入一行,但这样就无法保证原子性。...以下是我们根据集群实际情况对一些主要参数进行的调优: memory_limit_hard_bytes 该参数是单个TServer能够使用的最大内存量。如果写入量很大而内存太小,会造成写入性能下降。

    2.6K30

    CDP的hive3概述

    Hive集成Spark 您可以使用Hive从Apache Spark应用程序查询数据,而无需解决方法。Hive Warehouse Connector支持从Spark读取和写入Hive表。...您不需要Hive Warehouse Connector即可从Spark读取Hive外部表并从Spark写入Hive外部表。...02 — Apache Hive3性能调优 低延迟分析处理 CDP公共云支持Hive查询的低延迟分析处理(LLAP)。...ORC是Hive数据的默认存储。 出于以下原因,建议使用Hive数据存储的ORC文件格式: 高效压缩:存储为列并进行压缩,这会导致较小的磁盘读取。列格式也是Tez中矢量化优化的理想选择。...在使用表构建表之后,必须重新加载包含表数据的整个表,以减少,添加或删除表分桶,这使表桶调优变得很复杂。 使用Tez,您只需要处理最大的表上的分桶。

    3.1K21

    Apache Hudi 0.11 版本重磅发布,新特性速览!

    多模式索引 在 0.11.0 中,默认为 Spark writer 启用具有同步更新的元数据表和基于元数据表的file listing,以提高在大型 Hudi 表上的分区和文件listing的性能。...我们在元数据表中引入了多模式索引,以显着提高文件索引中的查找性能和数据跳过的查询延迟。...列统计索引包含所有/感兴趣的列的统计信息,以改进基于写入器和读取器中的键和列值范围的文件修剪,例如在 Spark 的查询计划中。 默认情况下它们被禁用。...没有日志文件的 MOR 查询(增量查询除外)表现为在读取数据时利用矢量化 Parquet 读取器,这意味着 Parquet 读取器现在能够利用现代处理器矢量化指令来进一步加快数据解码速度。默认启用。...当使用标准 Record Payload 实现时(例如,OverwriteWithLatestAvroPayload),MOR 表只会在查询引用的列之上获取严格必要的列(主键、预合并键),从而大大减少对数据吞吐量的浪费以及用于解压缩的计算并对数据进行解码

    3.5K30

    Spark调优 | Spark SQL参数调优

    欢迎您关注《大数据成神之路》 前言 Spark SQL里面有很多的参数,而且这些参数在Spark官网中没有明确的解释,可能是太多了吧,可以通过在spark-sql中使用set -v 命令显示当前spark-sql...本文讲解最近关于在参与hive往spark迁移过程中遇到的一些参数相关问题的调优。 内容分为两部分,第一部分讲遇到异常,从而需要通过设置参数来解决的调优;第二部分讲用于提升性能而进行的调优。...异常调优 spark.sql.hive.convertMetastoreParquet parquet是一种列式存储格式,可以用于spark-sql 和hive 的存储格式。...性能调优 除了遇到异常需要被动调整参数之外,我们还可以主动调整参数从而对性能进行调优。...当设为true,parquet会聚合所有parquet文件的schema,否则是直接读取parquet summary文件,或者在没有parquet summary文件时候随机选择一个文件的schema

    7.7K63

    Spark工程开发前台技术实现与后台函数调用

    Spark运行在Hadoop第二代的yarn集群管理之上,可以轻松读取Hadoop的任何数据。能够读取HBase、HDFS等Hadoop的数据源。     ...并且Spark SQL提供比较流行的Parquet列式存储格式以及从Hive表中直接读取数据的支持。之后,Spark SQL还增加了对JSON等其他格式的支持。...8、JDBC连接问题 这里简要说一下执行的性能问题,我们通过JDBC方式提交SQL给spark,倘若SQL中含有大量的窗口函数像row_number over()一类的,在大数据量的情况下会造成任务执行完毕...9、性能调优部分参数 Spark默认序列化方式为Java的ObjectOutputStream序列化一个对象,速度较慢,序列化产生的结果有时也比较大。...ID冲突,由于应用于生产环境的依旧是Spark1.4版本(Spark1.5,1.6是否稳定有待测试,所以暂时没有用),所以还是使用第一种方法稳妥,该方法为Spark1.3的使用方法,毕竟稳定第一。

    1.2K20

    大数据系列思考题

    2、介绍一下Sort By,Order By,Distrbute By,Cluster By的区别 3、谈谈你所知道有哪些常用的Hive调优方式?...(可升可降) 思考题: 3、谈谈你所知道有哪些常用的Hive调优方式?...hive的优化很多,我们做项目时70%时间都花在hive的调优上.常见的Hive调优比如并行编译,小文件合并,矢量化查询,读取零拷贝优化,数据倾斜优化等等 关于hive的调优,我曾写过两篇博客专门总结了当时项目中存在的...hive调优的点,各位大佬如果感兴趣可以点开链接看看: 链接 链接 基础题: 1、清楚描述 MapReduce 的 shuffle 过程 shuffle过程:分为四步 分区,排序,局部合并,分组...增加split by 解决 具体: –split by 字段 -m 数量 使用几个Task进行数据采集 使用Sqoop遇到的bug:hdfs文件的权限问题,文件格式问题,没有设置主键,Output

    46930

    大数据系列思考题----

    2、介绍一下Sort By,Order By,Distrbute By,Cluster By的区别 3、谈谈你所知道有哪些常用的Hive调优方式?...(可升可降) 思考题: 3、谈谈你所知道有哪些常用的Hive调优方式?...hive的优化很多,我们做项目时70%时间都花在hive的调优上.常见的Hive调优比如并行编译,小文件合并,矢量化查询,读取零拷贝优化,数据倾斜优化等等 关于hive的调优,我曾写过两篇博客专门总结了当时项目中存在的...hive调优的点,各位大佬如果感兴趣可以点开链接看看: 链接 链接 基础题: 1、清楚描述 MapReduce 的 shuffle 过程 shuffle过程:分为四步 分区,排序,局部合并,分组...增加split by 解决 具体: –split by 字段 -m 数量 使用几个Task进行数据采集 使用Sqoop遇到的bug:hdfs文件的权限问题,文件格式问题,没有设置主键,Output

    70330

    Apache Hudi 0.11.0版本重磅发布!

    多模式索引 在 0.11.0 中,我们默认为 Spark writer 启用具有同步更新的元数据表和基于元数据表的file listing,以提高在大型 Hudi 表上的分区和文件 listing 的性能...列统计索引包含所有/感兴趣的列的统计信息,以改进基于写入器和读取器中的键和列值范围的文件裁剪,例如在 Spark 的查询计划中。 默认情况下它们被禁用。...• 没有日志文件的 MOR 查询(增量查询除外)表现为在读取数据时利用矢量化 Parquet 读取器,这意味着 Parquet 读取器现在能够利用现代处理器矢量化指令来进一步加快数据解码速度。...• 当使用标准 Record Payload 实现时(例如,OverwriteWithLatestAvroPayload),MOR 表只会在查询引用的列之上获取严格必要的列(主键、预合并键),从而大大减少对数据吞吐量的浪费以及用于解压缩的计算并对数据进行解码...Spark SQL改进 • 用户可以使用非主键字段更新或删除 Hudi 表中的记录。 • 现在通过timestamp as of语法支持时间旅行查询。

    3.7K40
    领券