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

Spark on Kubernetes 动态资源分配

除了很难直接利用 Kubernetes 提供的如 Namespace,Service Account,Rolling Out 等特性,多租户的场景一般需要通过部署多个 Standalone 集群,因此用户资源的隔离成为了比较棘手的问题...3 Dynamic Resource Allocation 动态资源申请 Dynamic Resource Allocation 是指 Spark 会根据工作负荷,动态地调整作业使用的资源。...这里所指的资源,主要是指 Executor 分配的 CPU/Memory,当然也包括一个 Executor JVM 进程占用的 Disk 和 Network IO 等等,而这里所指的工作负荷是指处于 Pending...spark.dynamicAllocation.enabled=true spark.shuffle.service.enabled=true 动态资源分配看着很美,因为如果没有动态资源分配,不管数据集的大小...但是试想一下,当集群到了凌晨或者某些特定的时候,突然释放大量的资源,而没有用户使用,那么这部分资源是不能产生价值的,甚至还是一种资源浪费,那么解决这个问题的最好的方法就是动态分配资源,结合当前集群的资源以及工作的负载

2.2K20

Spark:Dynamic Resource Allocation【动态资源分配

在探究Spark如何实现之前,首先思考下如果自己来解决这个问题,需要考虑哪些因素?...2.原理分析 2.1 Executor生命周期 首先,先简单分析下Spark静态资源分配中Executor的生命周期,以spark-shell中的wordcount为例,执行命令如下: # 以yarn模式执行...处于Idle状态的Executor造成资源浪费这个问题已经在上面提到。下面重点看下开启Spark动态资源分配功能后,Executor如何运作。...的动态资源分配的原理分析,相关源码可以参考Apache Spark:ExecutorAllocationManager。...对于Spark动态资源分配来说,我们应更加关注算法方面,即其动态行为。如何分配?如何伸缩?上下游关系如何?等等。 回馈社区:回馈是一种输出,就迫使我们输入的质量要足够高。这是一种很有效的技能提升方式。

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

Spark 动态资源分配(Dynamic Resource Allocation) 解析

Spark 默认采用的是资源分配的方式。这其实也和按需做资源分配的理念是有冲突的。这篇文章会详细介绍Spark 动态资源分配原理。...前言 最近在使用Spark Streaming程序时,发现如下几个问题: 高峰和低峰Spark Streaming每个周期要处理的数据量相差三倍以上,预分配资源会导致低峰的时候资源的大量浪费。...Spark Streaming 跑的数量多了后,资源占用相当可观。 所以便有了要开发一套针对Spark Streaming 动态资源调整的想法。我在文章最后一个章节给出了一个可能的设计方案。...但是Spark很多地方都是这么搞的,完全没有原来Java社区的风格。 动态调整资源面临的问题 我们先看看,动态资源调整需要解决哪几个问题: Cache问题。...而Yarn对资源的申请处理速度并不快。 Spark Streaming该使用什么机制动态调整资源 现有的DRA机制其实适合长时的批处理过程中,每个Stage需要的资源量不一样,并且耗时都比较长。

2.3K30

Spark从精通到重新入门(二)」Spark中不可不知的动态资源分配

当一个长期运行的 Spark 应用,若分配给它多个 Executor,可是却没有任何 task 分配到这些 Executor 上,而此时有其他的 Spark 应用却资源紧张,这就造成了资源浪费和调度不合理...Spark 2.4 版本中 on Kubernetes 的动态资源并不完善,在 Spark 3.0 版本完善了 Spark on Kubernetes 的功能,其中就包括更灵敏的动态分配。...我们 Erda 的 FDP 平台(Fast Data Platform)从 Spark 2.4 升级到 Spark 3.0,也尝试了动态资源分配的相关优化。...验证快慢 SQL 执行 使用 SparkThrfitServer 会遇到的问题是一个数据量很大的 SQL 把所有的资源全占了,导致后面的 SQL 都等待,即使后面的 SQL 只需要几秒就能完成。...在集群资源紧张,有多个 Spark 应用的场景下,可以开启动态分配达到资源按需使用的效果。 以上是我们在 Spark 相关优化的一点经验,希望能够对大家有所帮助。 注:文中部分图片源自于网络,侵删。

88030

SAS中哈希连接问题

在SAS中使用哈希十分简单,你并不需要知道SAS内部是怎么实现的,只需要知道哈希是存储在内存中的,查找是根据key值直接获得存储的地址的精确匹配。...在实际应用中,我们通常会碰到要选择把哪个数据集放到哈希中的问题。在Michele M....从这句话可以看出,将最大的数据集放到哈希中更为高效,但是在实际应用中根据程序的目的还是需要做出选择,即选择左连接(A left join B)还是右连接(A right join B)。...其实很简单,如果数据集不是很大的时候可以这样处理:如果是左连接那么就把数据集B放到哈希中;如果是右连接就把数据集A放到哈希中;如果是内接连(A inner join B)那么就把大的放到哈希中。...对于前两种连接如果不按上述处理,那么就需要多写几行额外的代码来修改哈希表里的内容。

2.3K20

Spark 源码(8) - Master分配资源并在Worker上启动Executor ,逐行代码注释版

这里有个假设是:Spark 集群以 Standalone 的方式来启动的,作业也是提交到 Spark standalone 集群。...Master 的内存中加入各种信息,重点来了,把 ApplicationInfo 加入到了 waitingApps 这个结构里,然后 schedule() 方法会遍历这个列表,为 Application 分配资源...的 workers,并按照 cores 的大小降序排序,作为 usableWorkers; 计算所有 usableWorkers 上要分配多少 CPU; 然后遍历可用的 Workers,分配资源并执行调度...源码从 Master 类的 schedule() 方法的最后一行 startExecutorsOnWorkers() 开始: 这个方法主要作用是计算 worker 的 executor 数量和分配资源并启动...重点是中间方法后面那一段,遍历每个 Worker 分配 cpu,如果不是 Spend Out 模式,则在一个 Worker 上一直分配,直到 Worker 资源分配完毕。

59630

spark sql简单查询千亿级库导致的问题

一、问题现象 今天有客户咨询到我们,他们利用spark sql查询简单的sql: select * from datetable limit 5; //假设名是datetable 结果报错内存溢出:...因此,我们用hive原生sql查询,发现不存在这个问题。 二、排查问题 经过分析,发现被查询的数据量特别大,整个有1000多亿行数据。...数据存储在HDFS的目录结构也是: /${hive-warehouse}/dbname/tablename/dt=xxx/hour=xxx/files 根据之前使用spark sql的经验、以及逛社区查找的信息...select * from datetable where dt='2018-11-14' limit 5; 不能直接用 : select * from datetable limit 5; 这种语句spark...三、验证结论 1、首先我们直接用spark sql查询: select * from datetable limit 5; 从日志可以查看出excutor在疯狂地扫描HDFS的文件: 而且这些被扫描的

4.9K40

Superset sqllab连接hive无法显示信息的问题

一、问题 使用superset,连接hive时(hive的引擎是spark),名和信息无法加载,加载出来了一堆的数据库名图片二、解决问题1、原因 这个问题的原因是superset...里面是使用pyhive去连接名加载是通过"show tables in {dbname}"去获取的,而spark sql和hive sql的"show tables"的执行返回结果格式不一样,pyhive...最新版本20.0.1并没有支持spark的方言,平时使用没问题,但是放在使用superset去连接的时候,名显示就混乱。...spark sql图片hive sql 图片然后我们找到pyhive关于show tables的代码,位置:~/python3.8/site-packages/pyhive/sqlalchemy_hive.pydef...(schema) return [row[0] for row in connection.execute(query)]这里单纯的时候第一列作为table name返回,这里的话可以给spark

1.3K30

解决hudi hms catalog中flink建spark无法写入问题

问题描述 在hudi 0.12.0版本,flink和spark都可以基于hive metastore进行元数据管理,更多信息可参考:hudi HMS Catalog指南。...也就是说基于hudi hms catalog,flink建之后,flink或者spark都可以写,或者spark之后,spark或者flink都可以写。...但是目前 hudi 0.12.0版本中存在一个问题,当使用flink hms catalog建hudi之后,spark sql结合spark hms catalog将hive数据进行批量导入时存在无法导入的情况...:291) ... 16 more (state=,code=0) 问题分析 通过分析代码以及查看表属性,发现flink建对应的hive metastore中spark.sql.sources.schema.part...可判断flink在创建hive metastore中创建hudi时,构建的给spark用的参数存在问题,也就是对应 HoodieHiveCatalog.instantiateHiveTable中的 serdeProperties.putAll

1.4K20

数据仓库ods层设计_数据仓库建模的流程有几个

数仓搭建-ODS层 hive准备 在安装好hive后,我们将hive的运算引擎改为spark,注意这是hive on spark而不是spark on hive,要注意hive和spark的版本兼容问题...因为Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。...yarn多队列问题 方案一:增加ApplicationMaster资源比例,进而提高运行app数量。 方案二:创建多队列,比如增加一个hive队列。...(见ppt) 连接hive并建 hive的配置已经没问题了,我们开始用hive连接工具,连接hive并建。...这里我们使用DataGrip这个软件连接,注意的是一个Console相当一一个客户端,在这个Console里设置的参数只在这个Console有效 这里提一个小问题 关于hive中的中文注释乱码问题解决

67710

在美国国会图书馆标题的SKOS上运行Apache Spark GraphX算法

SKOS (Simple Knowledge Organization System),简单知识组织系统,为语义Web环境下的数字信息资源整合提供了描述和转化机制,解决了信息资源的语义互操作问题。...在将美国国会图书馆标题的RDF(文件)读入GraphX图表并在skos上运行连接组件(Connected Components)算法之后,下面是我在输出开头发现的一些分组: "Hiding places...我通过将数据存储在三个数据结构(上述两个RDD和另外一个RDD)中来解决了这两个问题: 对于顶点RDD,以及必须存储为每个顶点标识符所需的长整数,我只存储了一个额外的信息:与该RDF资源相关联的URI。...每个条目存储表示具有该属性的资源的顶点的长整数,一个表示属性(在顶点RDD中分配给该属性的整数)的长整数,以及表示属性值的字符串。...创建一个国会图书馆标题连接组件的报告 加载这些数据结构(加上另一个允许快速查找的参考标签)后,我下面的程序将GraphX连接组件算法应用到使用skos:related属性连接顶点的图的子集,如“Cocktails

1.8K70

Spark的性能调优

(2)发现某job很容易发生内存溢出,我们就增大分片数量,从而减少了每片数据的规模,同时还减少并行的executor数量,这样相同的内存资源分配给数量更少的executor,相当于增加了每个task的内存分配...对上述第2点补充说明一下,关于为executor分配内存的问题。...有一种常见情形是,一个大join一个小,把小broadcast后,大的数据就不需要在各个node之间疯跑,安安静静地呆在本地等小broadcast过来就好了。 Data Locality。...有的资源申请开销巨大,而且往往相当有限,比如建立连接,可以考虑在partition建立的时候就创建好(比如使用mapPartition方法),这样对于每个partition内的每个元素的操作,就只要重用这个连接就好了...,不需要重新建立连接

2.1K20

spark面试题目_面试提问的问题及答案

答:1)粗粒度:启动时就分配资源, 程序启动,后续具体使用就使用分配好的资源,不需要再分配资源;好处:作业特别多时,资源复用率高,适合粗粒度;不好:容易资源浪费,假如一个job有1000个task,完成了...2)细粒度分配:用资源的时候分配,用完了就立即回收资源,启动会麻烦一点,启动一次分配一次,会比较麻烦。 4.如何配置spark master的HA?...答:spark默认情况下资源分配是粗粒度的,也就是说程序在提交时就分配资源,后面执行的时候 使用分配好的资源,除非资源出现了故障才会重新分配。...1)与其他计算框架共享集群资源(eg.Spark框架与MapReduce框架同时运行,如果不用Yarn进行资源分配,MapReduce分到的内存资源会很少,效率低下);资源按需分配,进而提高集群资源利用等...动态调度 ①最少连接调度算法 这种调度算法会记录响应请求的服务器上所建立的连接数,每接收到一个请求会相应的将该服务器的所建立连接数加1,同时将新来的请求分配到当前连接数最少的那台机器上。

1.6K20

Spark 的性能调优

(2)发现某 job 很容易发生内存溢出,我们就增大分片数量,从而减少了每片数据的规模,同时还减少并行的 executor 数量,这样相同的内存资源分配给数量更少的 executor,相当于增加了每个...对上述第 2 点补充说明一下,关于为 executor 分配内存的问题。...有一种常见情形是,一个大 join 一个小,把小 broadcast 后,大的数据就不需要在各个 node 之间疯跑,安安静静地呆在本地等小 broadcast 过来就好了。...有的资源申请开销巨大,而且往往相当有限,比如建立连接,可以考虑在 partition 建立的时候就创建好(比如使用 mapPartition 方法),这样对于每个 partition 内的每个元素的操作...,就只要重用这个连接就好了,不需要重新建立连接

37410

助力工业物联网,工业大数据之服务域:项目总结【三十九】

:开启属性分配更多的资源,内存合理分配 开发优化:谓词下推:尽量将不需要的数据提前过滤掉【join】 尽量选用有Map端聚合的算子:先分区内聚合,再分区间聚合 尽量将不需要join的数据过滤,或者实现Broadcast...自动选择更优的join策略来提高连接查询性能 自动优化join数据来避免不平衡查询造成的数据倾斜,将数据倾斜的数据自动重分区 spark.sql.adaptive.enabled=true 小结 掌握一站制造项目中的优化方案...=2 本质:Spark程序运行YARN上 进程:Driver + Executor 问题:这个程序的资源如果给的少了,会导致GC【内存垃圾回收】停顿以及内存溢出 Driver进程故障,程序运行缓慢...,内存溢出 解决 Driver资源要给定多一些:Driver持久运行,不断解析调度分配,负责与客户端交互 –driver-core:4core –driver-mem...方案一:两台机器分别启动两个ThriftServer 问题:beeline只能连接某一个,连接谁?

19220

SparkSQL执行时参数优化

近期接手了不少大数据任务调度补数据的工作,补数时发现资源消耗异常的大且运行速度却不怎么给力. 发现根本原因在于sparkSQL配置有诸多问题,解决后总结出来就当抛砖引玉了....使用相同核心数与内存量的两个任务,executor总量少的任务不容易OOM,因为单核心最大可用内存大.但是并非越大越好,因为单个exector最大core受服务器剩余core数量限制,过大的core数量可能导致资源分配不足...240 60 8G 2G 以下为SparkSQL调优相关设置 以下列表中动态资源分配相关不建议使用 //1.下列Hive参数对Spark同样起作用。...; // 大 JOIN 小,小做广播的阈值 set spark.dynamicAllocation.enabled; // 开启动态资源分配 set spark.dynamicAllocation.maxExecutors...; //开启动态资源分配后,最多可分配的Executor数 set spark.dynamicAllocation.minExecutors; //开启动态资源分配后,最少可分配的Executor数 set

1.3K10

收藏|Flink比Spark好在哪?

资源情况一直是这么多,不管它所承载的作业需求资源情况,这样在作业需要更多资源的时候,没有更多的资源分配给对应的作业,相反,当一个作业仅需要很少的资源就能够运行的时候,仍然分配的是那些固定的资源,造成资源的浪费...1.7 Flink目前存在的一些问题 在实时计算中有这么一个普遍的逻辑:业务逻辑中以一个流式数据源与几个相关的配置进行join操作,而配置并不是一成不变的,会定期的进行数据更新,可以看成一个缓慢变化的流...这种join环境存在以下几个尚未解决的问题: 1.对元数据库的读压力;如果分析程序有1000并发,是否需要读1000次; 2.读维数据不能拖慢主数据流的throughput,每秒千万条数据量; 3.动态维更新问题和一致性问题...;元数据是不断变化的,如何把更新同步到各个并发上; 4.冷启动问题,如何保证主数据流流过的时候,维数据已经ready,否则会出现数据无法处理; 5.超大维数据会导致流量抖动和频繁gc,比如几十万条的实例数据...Spark 2.3 继续向更快、更易用、更智能的目标迈进,引入了低延迟的持续处理能力和流到流的连接,让 Structured Streaming 达到了一个里程碑式的高度。

1K40

Spark性能优化 (2) | 算子调优

image.png 比如,当要把 RDD 中的所有数据通过 JDBC 写入数据,如果使用 map 算子,那么需要对 RDD 中的每一个元素都创建一个数据库连接,这样对资源的消耗很大,如果使用mapPartitions...(当数据量很大的时候,一旦使用mapPartitions算子,就会直接OOM) 在项目中,应该首先估算一下RDD的数据量、每个partition的数据量,以及分配给每个Executor的内存资源,如果资源允许...针对上述的两个问题,我们分别进行分析: 针对第一个问题,既然分区的数据量变小了,我们希望可以对分区数据进行重新分配,比如将原来4个分区的数据转化到2个分区中,这样只需要用后面的两个task进行处理即可,...针对第二个问题,解决方法和第一个问题的解决方法非常相似,对分区数据重新分配,让每个partition中的数据量差不多,这就避免了数据倾斜问题。 那么具体应该如何实现上面的解决思路?...Spark SQL的并行度不允许用户自己指定,Spark SQL自己会默认根据 hive 对应的 HDFS 文件的 split 个数自动设置 Spark SQL 所在的那个 stage 的并行度,用户自己通

1.3K20
领券