首页 文章 精选 留言 我的

精选列表

搜索[优化],共10000篇文章
优秀的个人博客,低调大师

Android应用性能优化最佳实践导读

前 言 为什么写这本书 一个好的应用,除了要有吸引人的功能和交互之外,在性能上也应该有高的要求,即使应用非常具有特色,或者功能和业务具有唯一性,在产品前期可能吸引了部分用户,但用户体验不好的话,也会给产品带来很差的口碑,如果有在体验上更好的竞品,用户也会很快转移。那么一个好的应用应该如何定义呢?主要有三方面: 业务/功能 符合逻辑的交互 优秀的性能 众所周知,Android系统作为以移动设备为主的一款操作系统,硬件配置有一定的限制,虽然配置现在越来越高级,但仍然无法和PC相比,在CPU和内存上的使用不合理或者耗费资源多时,就会碰到内存不足导致的稳定性问题、CPU消耗太多导致的卡顿问题等。例如,我们发布一款产品后会收到很多的反馈,这些反馈来自很多渠道,有用户反馈,有应用发布平台的反馈通道等。 面对这些问题时,大家想到的都是联系用户,然后看日志,

优秀的个人博客,低调大师

Spark on yarn配置项说明与优化整理

配置于spark-default.conf 1. #spark.yarn.applicationMaster.waitTries 5 用于applicationMaster等待Spark master的次数以及SparkContext初始化尝试的次数 (一般不用设置) 2.spark.yarn.am.waitTime 100s 3.spark.yarn.submit.file.replication 3 应用程序上载到HDFS的复制份数 4.spark.preserve.staging.files false 设置为true,在job结束后,将stage相关的文件保留而不是删除。 (一般无需保留,设置成false) 5.spark.yarn.scheduler.heartbeat.interal-ms 5000 Spark application master给YARN ResourceManager发送心跳的时间间隔(ms) 6.spark.yarn.executor.memoryOverhead 1000 此为vm的开销(根据实际情况调整) 7.spark.shuffle.consolidateFiles true 仅适用于HashShuffleMananger的实现,同样是为了解决生成过多文件的问题,采用的方式是在不同批次运行的Map任务之间重用Shuffle输出文件,也就是说合并的是不同批次的Map任务的输出数据,但是每个Map任务所需要的文件还是取决于Reduce分区的数量,因此,它并不减少同时打开的输出文件的数量,因此对内存使用量的减少并没有帮助。只是HashShuffleManager里的一个折中的解决方案。 8.spark.serializer org.apache.spark.serializer.KryoSerializer 暂时只支持Java serializer和KryoSerializer序列化方式 9.spark.kryoserializer.buffer.max 128m 允许的最大大小的序列化值。 10.spark.storage.memoryFraction 0.3 用来调整cache所占用的内存大小。默认为0.6。如果频繁发生Full GC,可以考虑降低这个比值,这样RDD Cache可用的内存空间减少(剩下的部分Cache数据就需要通过Disk Store写到磁盘上了),会带来一定的性能损失,但是腾出更多的内存空间用于执行任务,减少Full GC发生的次数,反而可能改善程序运行的整体性能。 11.spark.sql.shuffle.partitions 800 一个partition对应着一个task,如果数据量过大,可以调整次参数来减少每个task所需消耗的内存. 12.spark.sql.autoBroadcastJoinThreshold -1 当处理join查询时广播到每个worker的表的最大字节数,当设置为-1广播功能将失效。 13.spark.speculation false 如果设置成true,倘若有一个或多个task执行相当缓慢,就会被重启执行。(事实证明,这种做法会造成hdfs中临时文件的丢失,报找不到文件的错) 14.spark.shuffle.manager tungsten-sort tungsten-sort是一种类似于sort的shuffle方式,shuffle data还有其他两种方式sort、hash. (不过官网说tungsten-sort 应用于spark 1.5版本以上) 15.spark.sql.codegen true Spark SQL在每次执行次,先把SQL查询编译JAVA字节码。针对执行时间长的SQL查询或频繁执行的SQL查询,此配置能加快查询速度,因为它产生特殊的字节码去执行。但是针对很短的查询,可能会增加开销,因为它必须先编译每一个查询 16.spark.shuffle.spill false 如果设置成true,将会把spill的数据存入磁盘 17.spark.shuffle.consolidateFiles true 我们都知道shuffle默认情况下的文件数据为map tasks * reduce tasks,通过设置其为true,可以使spark合并shuffle的中间文件为reduce的tasks数目。 18.代码中 如果filter过滤后 会有很多空的任务或小文件产生,这时我们使用coalesce或repartition去减少RDD中partition数量。

优秀的个人博客,低调大师

实战干货:Apache DolphinScheduler 参数使用与优化总结

在使用 DolphinScheduler 进行数据调度开发的过程中,参数的灵活运用是提升任务复用性、动态化执行逻辑的关键。无论是日常跑批任务中的日期处理,还是复杂工作流中的上下游传参,掌握参数的正确使用方式,能极大提高开发效率与任务健壮性。本文基于海豚调度3.1.9版本将系统梳理 DolphinScheduler 中各类参数的使用方法,涵盖内置参数、衍生函数、日期计算、全局变量设置以及跨任务参数传递等核心场景,助你彻底掌握参数使用的“正确姿势”。 内置参数 DolphinScheduler 提供了几个常用的系统级内置参数,主要用于获取调度实例的执行时间。这些参数无需定义,直接引用即可。 基础参数 SHELL 案例 但是这种方式在SQL节点下 不适用,SQL下使用衍生内置函数会比较方便 衍生内置参数 为解决 SQL 节点无法使用${}参数的问题,DolphinScheduler 提供了强大的$[...]衍生函数语法,支持任意格式的日期拼接与运算,推荐在所有场景中优先使用。 简单案例 shell案例 SQL案例 结果如下: 日期月份增减变化 若需按月计算(考虑大小月、闰年),可使用add_months()函数 shell 案例,获取前一个月日期 执行结果如下 PG案例,下一个月 执行结果如下 其他时期增减 直接加减数字 在自定义格式后直接“+/-”数字 后 N 周:$[yyyyMMdd+7*N] 前 N 周:$[yyyyMMdd-7*N] 后 N 天:$[yyyyMMdd+N] 前 N 天:$[yyyyMMdd-N] 后 N 小时:$[HHmmss+N/24] 前 N 小时:$[HHmmss-N/24] 后 N 分钟:$[HHmmss+N/24/60] 前 N 分钟:$[HHmmss-N/24/60] shell案例 执行结果如下 SQL案例 执行结果如下: TIPS :一般建议使用衍生内置函数,即$[]的方式,比较直观且通用。 单个任务节点中使用参数 TIPS: 不要在别名的地方使用自定义参数,会触发BUG 例如 下图, 工作流全局参数 当多个任务需要使用相同的自定义变量(如环境标识、项目编号等),可通过工作流全局参数统一管理。 案例 下面三个节点用一个参数 shell案例 echo ${my_param} SQL案例 SELECT name FROM test_datax_hive WHERE dt = DATE_FORMAT('$[yyyy-MM-dd-1]', 'yyyy-MM-dd') and name = ${my_param} python案例 print('${my_param}') 在每个节点的地方不需要设置参数,只需要在工作流保存的时候设置参数即可。如下图。 工作流参数传递 DolphinScheduler 支持在任务之间传递运行时生成的参数,适用于“上游查询结果 → 下游处理”的场景。 只有SQL和SHELL任务可以往下传递参数。 SQL SHELL PYTHON可以接受上一个节点传递的参数。 下面通过案例来演示实际操作。 SQL向下传递参数 在工作流中新建一个SQL节点。如下图。 参数名要始终保持相同,这里使用my_name作为参 自定义参数中也使用my_name作为参数,选择OUT类型,用于往下传递 然后建SHELL类型任务,如下图 参数名保持相同,依旧是OUT类型。 再建一个PYTHON类型任务。如下图 参数名保持相同。 最后,把工作流连起来,如下图 最后看运行日志,来验证。 SQL执行结果 SHELL 运行结果,参数被成功赋值 PYTHON运行结果,参数被成功赋值 SHELL向下传递参数 创建shell脚本,参数名要一致。 ${setValue(key=value)} 的语句,key 为对应参数的 prop,value 为该参数的值。 在SQL节点接收参数 参数名保持一致。 PYTHON任务中接收参数 执行结果: SHELL SQL PYTHON 参数使用总结 IN 表示局部参数仅能在当前节点使用 OUT 表示局部参数可以向下游传递。参数优先级:DolphinScheduler 参数的优先级从高到低为:本地参数 > 上游任务传递的参数 > 全局参数

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册