We can refer to the link http://spark.incubator.apache.org/docs/latest/tuning.html for detail tuning document.
After tuning, spark can process 200M logs every minutes in one single work with 1G memory. The time for finish process logs is about 35-40 seconds every duration.
There is some points I do the tuning.
I change the logs, every use conation 20KB logs, so 5000 uses will have 100M logs. When the logs of every use is less, the concurrent process speed will have improvement
JavaDStream<String> stringStream = jsc.socketTextStream("0.0.0.0", ConfigUtil.getInt(ConfigUtil.KEY_SPARK_REMOTE_FLUME_LISTENER_PORT), StorageLevel.MEMORY_AND_DISK())
Add StorageLevel.MEMORY_AND_DISK() when create stream, the default is StorageLevel.MEMORY_AND_DISK2(), will use double memory.
Replace code String user = currentLine.substring(start,end); with String user = new String(currentLine.substring(start,end).toCharArray());
Because substring will create a new String, it will use the same char array with currentLine, thus when some object have refer to user object and currentLine is useless, currentLine also can’t be recycle.
update Spark configure. Below is the latest configuration, when the data is different, sometimes we need update it.
sparkConf.setMaster(ConfigUtil.getString(ConfigUtil.KEY_SPARK_REMOTE_MASTER)).setAppName(appName)
.setJars(new String[]{ConfigUtil.getString(ConfigUtil.KEY_SPARK_REMOTE_JAR_LOCATION)})
.set("spark.executor.memory", "1024m")
.set("spark.streaming.unpersist", "true")
.set("spark.rdd.compress", "true")
.set("spark.default.parallelism", "12")
.set("spark.storage.memoryFraction", "0.3")
.set("spark.cleaner.ttl", "1200")
//.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
// .set("spark.kryo.registrator", "com.seven.oi.spark.KryoRegistratorEx")
//.setExecutorEnv("SPARK_JAVA_OPTS","-XX:NewRatio=1 -XX:+UseCompressedStrings -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps")
//.setExecutorEnv("SPARK_JAVA_OPTS", "-XX:NewRatio=1 -XX:+UseCompressedStrings")
//use fastutil to store map
.set("spark.shuffle.memoryFraction", "0.3");
set spark.rdd.compress = true, thus can use less memory
when out of memory happen, we can also consider increment spark.default.parallelism.
sometimes we can use org.apache.spark.serializer.KryoSerializer, Kryo is significantly faster and more compact than Java serialization. default is Java serialization. (Need more test, current I can’t find any different in my test).
When there is a lot of young GC, we can consider increment the Young generation. Set -XX:NewRatio
When the JDK is 64 bit, we can use -XX:+UseCompressedStrings to compress String. I found JDK with 64 bit will use more memory then JDK with 32 bit.
We also can consider increment spark.shuffle.memoryFraction when have a lot of shuffle operation
If you want spark submit more tasks every time you can increment SPARK_WORKER_CORES. spark will submit tasks less than SPARK_WORKER_CORES every time
相关推荐
apache-spark-best-practices-and-tuning apache-spark-best-practices-and-tuning
整理了chatgpt微调所需要的测试资源数据,按照fine-tuning的格式生成的数据集。可以直接 fine_tunes.create -t 使用。 微调完毕后可以 -p 回答结果。 其中包含三四百条数据。 适合测试openai自定义模型的人群使用。
VITS(Variational Inference for Text-to-Speech)是一种先进的端到端的变分自编码器模型,专门用于语音合成任务。它结合了Transformer架构的序列建模能力与Gaussian Mixture Variational Autoencoder(GMVAE)的...
"VITS-fast-fine-tuning"训练准备的样例数据是专为用户快速理解和实践模型微调流程而设计的。这份资料包提供了所有必要的元素,包括预训练模型、配置文件以及语音素材,使得用户无需从零开始就能对模型进行适应性...
论文“Self-Play Finetuning Converts Weak Language Models to Strong Language Models”的官方实现代码 SPIN 利用自玩机制,允许 LLM 通过与以前的迭代进行博弈来改进自己,而不需要比 SFT 数据集本身更多的人工...
Fine-Tuning Language Models from Human Preferences 本文主要讨论了如何使用人工判断来 fine-tune 语言模型,从而实现 Reinforcement Learning(强化学习)在自然语言处理任务中的应用。该方法可以应用于复杂的实...
### P-Tuning:稳定与提升预训练语言模型的自然语言理解能力 #### 摘要与背景 在《P-Tuning》这篇论文中,作者们介绍了一种名为P-Tuning的新方法,旨在解决预训练语言模型(Pretrained Language Models, PLMs)在...
Prompt-Tuning是一种新兴的微调方法,它针对预训练语言模型(LLM)进行优化,以适应各种自然语言处理(NLP)任务。这一技术在人工智能生成内容(AIGC)时代尤其受到关注,因为超大规模模型如GPT-3等正逐渐成为对话式...
- **应用案例**:情感分析、文档分类等基础任务。 2. **第二范式:基于深度学习模型** - **定义**:利用深度学习模型,如Word2Vec、LSTM(长短时记忆网络)等进行特征提取和任务处理。 - **特点**:相比第一范式...
为了验证P-Tuning v2的有效性和通用性,研究人员在多个NLU任务上进行了实验,包括但不限于文本分类、情感分析、命名实体识别等。实验结果表明,P-Tuning v2能够达到与传统微调方法相当甚至更好的性能水平,同时显著...
他们提供的代码库(P-tuning-main)包含了实现这一方法的详细步骤,这为其他研究者和开发者提供了可复现性和进一步探索的平台。 P-tuning的工作流程大致包括以下几个步骤: 1. **模板设计**:首先,根据任务需求...
近年来,预训练和微调(fine-tuning)图神经网络(Graph Neural Networks, GNNs)的范式在广泛的图挖掘任务中得到了深入研究与广泛应用。这种范式的成功通常归因于预训练数据集与下游任务数据集之间结构上的一致性。...
- **未来方向**: 结合人工智能、大数据分析等新兴技术,开发更加先进可靠的自调控制器。 ### 核心知识点总结 数字自调控制器作为一种先进的控制技术,在自动化领域扮演着至关重要的角色。通过不断调整控制器参数来...
《MTK音频调试工具——Audio-Tuning-Tool-exe-v2.2052详解》 MTK(MediaTek)音频调试工具是一款专为MediaTek芯片平台设计的专业软件,用于帮助开发者、工程师以及爱好者对手机或其他设备的音频系统进行调试和优化...
藏经阁-Tuning Apache Spark for Large Scale Workloads.pdf
- **日志分析**:Spark可用于快速处理和分析海量日志数据。 - **推荐系统**:利用MLlib构建基于协同过滤的推荐引擎。 - **实时流处理**:Spark Streaming处理来自Kafka、Flume等的数据流。 7. **Spark与其他技术...
完整训练代码,对应文章:【AI大模型应用开发】【Fine-Tuning】0. 从一个例子开始学习大模型Fine-Tuning
《PyPI官网下载:探索chess-tuning-tools-0.7.0b2.tar.gz的分布式优化实践》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python软件包,使得开发工作更加便捷高效。在PyPI官网中,...
本文讨论了一种基于四叉树(self-tuning UDF Cost Modeling Using the Memory-Limited Quadtree)的自调优用户定义函数(User-Defined Functions, UDFs)成本建模方法。在对象关系型数据库管理系统(Object-Relational ...