网站建设外包多少钱,建网站和建网页的区别,南昌网站建设包括哪些,做网站选哪个语言Spark参数场景配置 参数类型 参数 参数说明 平台默认值 场景与建议 资源申请 spark.executor.memory Executor Java进程的堆内存大小 即Executor Java进程的Xmx值 2g 默认设置,或者同时等比例增大,最高不超过默认值的3倍,超过的单独拿出来看下 (注意作业是否数据倾斜 可根据单个文件大小进行预估 若是orc格式需乘以2-3倍 spark.yarn.executor.memoryOverhead Executor Java进程的off-heap内存包括JVM overheadsort,shuffle以及Netty的堆外内存等 1g 保持默认值建议值1-3g 特殊问题单独拿出来讨论 executor的内存大小限制 spark.executor.memory spark.yarn.executor.memoryOverhead 16G (YARN container最大内存限制) spark.executor.cores Executor中同时可以执行的task数目 共享整个excutor内存cores越多,平均下来单个task占用的资源就越少 1 建议值1-3 再多需单独拿出来讨论 建议spark.executor.cores * spark.dynamicAllocation.maxExecutors 5000 (cu, 队列总配额为14000) spark.dynamicAllocation.maxExecutors 开启动态资源分配后同一时刻最多可申请的executor个数 1000 流量以及数据量在30亿以上的作业 可提高至2000个不建议再提高 其他情况保持默认 当在Spark UI中观察到task较多时可适当调大此参数缩短作业执行时间。 一般保持shuffle.partitions / (maxExecutors*executor.cores)2 spark.dynamicAllocation.minExecutors executor的最小个数。平台默认设置为3即在任何时刻作业都会保持至少有3个及以上的executor存活 3 保持默认即可 spark.memory.fraction 存储执行内存占节点总内存的大小社区版是0.6。平台为了方便的把hive任务迁移到spark任务把该区域的内存比例调小至0.3 0.3 没有udf或者udf不会消耗太多内存的任务可以调整到0.5甚至社区版默认的0.6减少spill的次数提升性能。HBO参数修改方案v2 spark.driver.memory driver使用内存大小 10G 一般不需要更改此设置。 确实需要有大表广播的可以考虑增加这个数值 spark.yarn.driver.memoryOverhead driver进程的off-heap内存 spark.driver.memory * 0.1并且不小于384m 保持默认值即可 spark.sql.autoBroadcastJoinThreshold 当执行join时小表被广播的阈值 当被设置为-1则禁用广播 该参数设置的过大会对driver和executor都产生压力。 26214400 25M 由于我们的表大部分为ORC压缩格式解压后的数据量达到3-5倍甚至10倍 所以调大该参数需要注意 建议值广播不超过128m 文件合并 spark.hadoop.hive.exec.orc.split.strategy 参数控制在读取ORC表时生成split的策略: BI策略以文件为粒度进行split划分 ETL策略会将文件进行切分多个stripe组成一个split HYBRID策略当文件的平均大小大于hadoop最大split值默认256M时使用ETL策略否则使用BI策略 BI模式 由于读orc文件时默认按文件划分task(BI模式), 有数据倾斜的表这里的数据倾斜指大量stripe存储于少数文件中的情况并发可能不够, 影响执行效率. 可以改成ETL模式 对于一些较大的ORC表可能其footer较大ETL策略可能会导致其从hdfs拉取大量的数据来切分split甚至会导致driver端OOM因此这类表的读取建议使用BI策略。 流量数据建议采用默认策略因其存在大量文件和大量小文件 其他情况若发现有处理倾斜请查看文件大小是否均匀 文件合并 spark.hadoop.mapreduce.input.fileinputformat.split.minsize 计算Split划分时的minSize 保持默认 spark.hadoop.mapreduce.input.fileinputformat.split.maxsize 控制在ORC切分时stripe的合并处理。具体逻辑是当几个stripe的大小小于spark.hadoop.mapreduce.input.fileinputformat.split.maxsize时会合并到一个task中处理。可以适当调小该值如set spark.hadoop.mapreduce.input.fileinputformat.split.maxsize134217728。以此增大读ORC表的并发 建议值不超过128m spark.hadoopRDD.targetBytesInPartition 读取输入文件时最终合并小文件时每个task读取的数据量 33554432 32M 1非grouping set情况 建议67108864, 如果发现读取文件的task较多可以适当增大该值到128m。 2:grouping set 情况 建议调下该值 降低该值 详见case ----详见作业最后一个阶段遇到shuffle慢节点 spark.sql.adaptive.shuffle.targetPostShuffleInputSize 开启spark.sql.adaptive.enabled后最后一个stage在进行动态合并partition时会根据shuffle read的数据量除以该参数设置的值来计算合并后的partition数量。所以增大该参数值会减少partition数量反之会增加partition数量 67108864 64M 256m, 可以适当增大或减小 spark.sql.mergeSmallFileSize 写入hdfs后小文件合并的阈值。如果生成的文件平均大小低于该参数配置则额外启动一轮stage进行小文件的合并。 当任务中添加taskListing leaf files and directorioes for 55 paths 128000000 建议40m如果最终文件数仍然较多可适当调大.。 如果输入数据量量大但是最终结果数据量较少时可以在最后加一个同时结合distribute by操作。如果最终结果数据量本来就较大没必要加distribute by。 效率上面建议使用此参数 数据量大时不建议使用distribute by shuffle相关 spark.sql.shuffle.partitions reduce阶段(shuffle read)的数据分区分区数越多启动的task越多同时生成的文件数也会越多。 2000 1. 建议一个partition保持在256mb左右的大小就好。当作业数据较多时适当调大该值当作业数据较少时适当调小以节省资源 2. spark.sql.shuffle.partitions设置过大可能会导致很多reducer同时向一个mapper拉取数据。该mapper由于请求压力过大挂掉或响应缓慢从而导致fetch failed spark.sql.adaptive.shuffle.targetPostShuffleInputSize 最后一个stage在进行动态合并partition时会根据shuffle read的数据量除以该参数设置的值来计算合并后的partition数量。所以增大该参数值会减少partition数量反之会增加partition数量。 67108864 64M 建议128m, 可以适当增大或减小 spark.sql.statistics.fallBackToHdfs 当表的文件大小元数据信息不可能用时回退到hdfs计算表的文件大小从而决定是否使用map join. 分区表如果读入数据较少也不会优化为BroadcastJoin, 可以通过添加该参数优化: false 1:建议保持默认 2如果mapjoin的值不生效 建议设置为true 推测执行 spark.speculation spark推测执行的开关作用同hive的推测执行 true 保持默认值即可 spark.speculation.interval 开启推测执行后每隔多久通过checkSpeculatableTasks方法检测是否有需要推测式执行的tasks 1000ms 保持默认值即可 spark.speculation.quantile 当成功的Task数超过总Task数的spark.speculation.quantile时(社区版默认75%公司默认99%)再统计所有成功的Tasks的运行时间得到一个中位数用这个中位数乘以spark.speculation.multiplier社区版默认1.5公司默认3得到运行时间门限如果在运行的Tasks的运行时间超过这个门限则对它启用推测。 0.99 1 如果资源充足可以适当减小 spark.speculation.quantile和spark.speculation.multiplier的值 2目前不建议调整