0207威尼斯官网,威斯尼斯人官网,威尼斯网址是多少?

资源中心Company News
来自 Facebook 的 Spark 通走业调优经验
发布时间: 2020-06-17 来源:未知 点击次数:

原标题:来自 Facebook 的 Spark 通走业调优经验

Facebook Spark 的行使情况

景洪市哨逮装饰有限公司

在介绍下面文章之前吾们来望望 Facebook 的 Spark 行使情况:

倘若想及时晓畅Spark、Hadoop或者HBase有关的文章,迎接关注微信公多号:iteblog_hadoop

•Spark 是 Facebook 内部最大的 SQL 查询引擎(按 CPU 行使率计算) •在存储计算别离的集群上行使 Spark,也就是存储和计算资源能够单独扩展升级。 •考虑到 Facebook 的周围,效果是 Spark 的厉重义务,主要包括以下两个效果: •计算效果:优化CPU和内存行使,CPU 的 40% 时间花在读写上。 •存储效果:优化磁盘大幼和IOPS:存储格式对磁盘占用大幼和 IOPS 有很大影响,Facebook 数据仓库底层存储格式行使的是 ORC。

扩展 Spark Driver 动态资源分配

在 Facebook,Spark 集群启用了动态资源分配(Dynamic Executor Allocation),以便更益的行使集群资源,而且在 Facebook 内部,Spark 是运走在多租户的集群上,以是这个也是专门适答的。比如典型的配置如下:•spark.dynamicAllocation.enabled = true •spark.dynamicAllocation.executorIdleTimeout = 2m •spark.dynamicAllocation.minExecutors = 1 •spark.dynamicAllocation.maxExecutors = 2000

倘若想及时晓畅Spark、Hadoop或者HBase有关的文章,迎接关注微信公多号:iteblog_hadoop

多线程事件处理

在 Spark 2.3 版本之前,事件处理是单线程的架构,也就是说,事件队列内里的事件得一个一个处理。倘若你的作业很大,并且有许多 tasks,很能够会导致事件处理展现延宕,进一步导致作业性能展现题目,甚至使现在作业战败。为晓畅决这个题目,SPARK-18838 这个 ISSUE 引入了多线程事件处理架构,每个事件都有其单独的单线程 executor service 去处理,云云就能够大大缩短事件处理延时的题目。另外,由于每类事件都有单独的事件队列,以是会增补 Driver 端的内存占用。

倘若想及时晓畅Spark、Hadoop或者HBase有关的文章,迎接关注微信公多号:iteblog_hadoop

更益的 Fetch 战败处理

在 Spark 2.3 版本之前,倘若 Spark 探测到 fetch failure,那么它会把产生这个 shuffle 文件的 Executor 移除失踪。但是倘若这个 Executor 所在的机器有许多 Executor,而且是由于这台机器挂失踪导致 fetch failure,那么会导致许多的 fetch 重试,这栽处理机制很矮下。SPARK-19753 这个 ISSUE 使得 Spark 能够把上述场景一切 Executor 的 shuffle 文件移除,也就是不再去重试就清新 shuffle 文件不走用。

倘若想及时晓畅Spark、Hadoop或者HBase有关的文章,迎接关注微信公多号:iteblog_hadoop

另外,Spark 最大 Fetch 重试次数也能够经历 spark.max.fetch.failures.per.stage 参数配置。

FetchFailed 会在 ShuffleReader 取数据战败 N 次后抛出,然后由 executor 经历 statusUpdate 传到 driver 端,实际的处理会在 DAGScheduler.handleTaskCompletion,它会重新挑交该 Stage 和该 Stage 对答的 ShuffleMapStage,重试次数超过 spark.stage.maxConsecutiveAttempts 时会退出。

RPC 服务线程调优

当 Spark 同时运走大量的 tasks 时,Driver 很容易展现 OOM,这是由于在 Driver 端的 Netty 服务器上产生大量 RPC 的乞求积压,吾们能够经历添大 RPC 服务的线程数解决 OOM 题目,比如 spark.rpc.io.serverThreads = 64。

扩展 Spark Executor

在介绍 Spark Executor 调优之前,吾们必要清新 Spark Executor 的内存模型,如下:

Spark 内存管理 倘若想及时晓畅Spark、Hadoop或者HBase有关的文章,迎接关注微信公共帐号:iteblog_hadoop

默认情况下,Spark 仅仅行使了堆内内存。Executor 端的堆内内存区域大致能够分为以下四大块:

•Execution 内存:主要用于存放 Shuffle、Join、Sort、Aggregation 等计算过程中的一时数据 •Storage 内存:主要用于存储 spark 的 cache 数据,例如RDD的缓存、unroll数据; •用户内存(User Memory):主要用于存储 RDD 转换操作所必要的数据,例如 RDD 倚赖等新闻。 •预留内存(Reserved Memory):编制预留内存,会用来存储Spark内部对象。这块内容的详细介绍能够参见以前记忆大数据这篇文章:Apache Spark 同一内存管理模型详解。

启用堆外内存

倘若想及时晓畅Spark、Hadoop或者Hbase有关的文章,迎接关注微信公共帐号:iteblog_hadoop

Spark 1.6 最先引入了Off-heap memory(详见SPARK-11389)。这栽模式不在 JVM 内申请内存,而是调用 Java 的 unsafe 有关 API 进走诸如 C 说话内里的 malloc 直接向操作编制申请内存,由于这栽手段不经过 JVM 内存管理,以是能够避免频频的 GC,这栽内存申请的弱点是必须本身编写内存申请和开释的逻辑。

默认情况下,堆外内存是关闭的,吾们能够经历 spark.memory.offHeap.enabled 参数启用,并且经历 spark.memory.offHeap.size 竖立堆外内存大幼,0207威尼斯官网单位为字节。倘若堆外内存被启用,那么 Executor 内将同时存在堆内和堆外内存,两者的行使互补影响,这个时候 Executor 中的 Execution 内存是堆内的 Execution 内存和堆外的 Execution 内存之和,同理,Storage 内存也相通。相比堆内内存,堆外内存只区分 Execution 内存和 Storage 内存。行家能够按照本身的情况启用堆外内存,进一步缩短 GC 的压力。

垃圾搜集调优

Spark 内部会分配大量的不息内存缓存,倘若对象大幼超过32MB (G1GC 的最大区域大幼),那么由于大量的分配,G1GC 会遭受碎片题目。以是提出在 Spark 中行使 parallel GC 而不是 G1GC,一个典型的配置如下:

spark.executor.extraJavaOptions = -XX:ParallelGCThreads=4 -XX: UseParallelGC

Shuffle 调优

Spark Shuffle 是 Spark 的中央片面,下面浅易介绍了Sort Shuffle 的过程,主要包括 Sort & Spill to disk,并在磁盘中保存成一时的 spill files,末了相符并成 Final shuffle files,并保存在磁盘中。

倘若想及时晓畅Spark、Hadoop或者Hbase有关的文章,迎接关注微信公共帐号:iteblog_hadoop

Shuffle file buffer 调优

吾们都清新,磁盘访问比内存访问慢10 - 100K倍,以是吾们能够正当调节 Shuffle buffer 的大幼,涉及到的参数如:spark.shuffle.file.buffer = 1 MB,该参数用于竖立 shuffle write task 的 BufferedOutputStream 的 buffer 缓冲大幼。将数据写到磁盘文件之前,会先写入 buffer 缓冲中,待缓冲写满之后,才会溢写到磁盘。倘若作业可用的内存资源较为优裕的话,能够正当增补这个参数的大幼(比如64k),从而缩短 shuffle write 过程中溢写磁盘文件的次数,也就能够缩短磁盘 IO 次数,进而升迁性能。在实践中发现,相符理调节该参数,性能会有1%~5%的升迁。spark.unsafe.sorter.spill.reader.buffer.size 参数也能够正当添大。

另外,Spark 在 Shuffle 的时候也会采用 lz4 (经历 spark.io.compression.codec 参数配置)来压缩文件,而默认的压缩块大幼为 32kb,这不是最优的,以是吾们能够正当调节 spark.io.compression.snappy.blockSize 参数。比如在 Facebook 这个参数竖立为 spark.io.compression.lz4.blockSize = 512KB 最多缩短 20% 的 Shuffle/spill 文件。

更多关于 Shuffle 的调优能够参见以前记忆大数据 Spark性能优化:shuffle调优 文章。

扩展 External Shuffle Service 在 Shuffle Server 上缓存索引文件

在 Apache Spark 2.1.0 之前,经历 Shuffle service 获取索引文件时并异国缓存首来,倘若访问大量的一时文件时, Shuffle service 会成为瓶颈。SPARK-15074 对索引文件引入了缓存,缩短了对索引文件的乞求。吾们能够经历 spark.shuffle.service.index.cache.entries 参数来竖立最多能够缓存索引的个数。

倘若想及时晓畅Spark、Hadoop或者Hbase有关的文章,迎接关注微信公共帐号:iteblog_hadoop

shuffle service 做事线程和 backlog 调优

Configurable shuffle registration timeout and retry

参见 SPARK-20640

行使程序调优

这个动机是在资源相通的情况下缩短作业的延宕。吾们能够按照外的输入大幼计算出 mapper 和 reduce 的个数,如下:

// number of reducers num of reducers = max( 200, min( 10000, max(inputTableSize / 256MB* 0.125, 200)))

原标题:为什么说谁抓住了“第四次工业革命”,谁就将成为世界的领导者?

2020年政府工作报告中,对加强新型基础设施建设提出了新的发展要求,而此前国家发改委明确的新型基础设施建设的范围,也将智能交通基础设施建设包含在内。共享出行是移动物联网的大规模落地,在未来,每辆穿梭在城市中的单车、助力车等都将是一个“有智慧”的移动智能终端,都参与到智慧交通细分领域的技术应用终端实践中去。

新华社北京6月11日电(记者 高亢)中国汽车工业协会11日发布数据显示,5月份,我国汽车产销量分别达到218.7万辆和219.4万辆,环比分别增长4%和5.9%,同比分别增长18.2%和14.5%,增速高于上月15.9个百分点和10.1个百分点。