数据处理

intel关于spark gc的优化建议

邮差的信 提交于 2020-01-21 13:21:10
Apache Spark由于其出色的性能、简单的接口和丰富的分析和计算库而获得了广泛的行业应用。与大数据生态系统中的许多项目一样,Spark在Java虚拟机(JVM)上运行。因为Spark可以在内存中存储大量数据,因此它主要依赖于Java的内存管理和垃圾收集(GC)。但是现在,了解Java的GC选项和参数的用户可以调优他们的Spark应用程序的最佳性能。本文描述了如何为Spark配置JVM的垃圾收集器,并给出了实际的用例来解释如何调优GC,以提高Spark的性能。我们在调优GC时考虑关键因素,如收集吞吐量和延迟。 spark和GC的介绍: 随着Spark的广泛应用,Spark应用程序的稳定性和性能调优问题越来越成为人们关注的话题。由于Spark以内存为中心的方法,通常使用100GB或更多内存作为堆空间,这在传统的Java应用程序中很少见到。在与使用Spark的大公司合作时,我们收到了许多关于GC在执行Spark应用程序时所面临的各种挑战的担忧。例如,垃圾收集需要很长的时间,导致程序经历长时间的延迟,甚至在严重的情况下崩溃。在本文中,我们使用真实的例子,结合具体的问题,讨论可以缓解这些问题的Spark应用程序的GC调优方法。 Java应用程序通常使用这两种GC策略 : 并发标记清理(Concurrent Mark Sweep garbage collection简称CMS

Spark数据倾斜及解决办法

牧云@^-^@ 提交于 2020-01-21 12:07:14
数据倾斜 在执行shuffle操作过程中,map端按照key分配数据输出,reduce端同样也按照key进行拉取、聚合。通常每一个key对应的数据量不对等,经常出些某些key数据量比其他key多很多。这种现象导致的后果,轻则拖慢job执行时间(执行时间由最慢的task决定),重则直接OOM(数据量太大,处理完成前不能回收内存) 原因 我觉得是两个必要条件,缺一个都不发生数据倾斜,而我们打破其中一个或全部打破来解决数据倾斜。 每个key对应的数据量天然不均 发生shuffle操作 那么怎么定位代码中哪里出现了数据倾斜? 凭经验猜测会发生shuffle的算子 运行慢时。若是client模式,查看本地日志,当前还在运行的Stage、Task是哪个;若是cluster模式,查看UI,主要确定Stage中Task的数据量 报OOM时查看log抛错堆栈,可以定位到某一行代码,从而知道哪一个stage,哪个一个算子。 解决办法 数据源预处理 业务中,hive文件或其他数据源文件大小不均,有大有小。小文件处理很快,而大文件处理慢。如果提前对数据源数据进行一定的清洗、过滤、去重、重分区等操作,将原来不均匀的数据重新均匀放在多个文件中。 同理,针对key分布不均的情况,可以考虑将Spark 运算中业务时效不敏感的shuffle操作提前放到ETL进行预处理(比如预聚合、逻辑压缩等

spark的shuffle机制

▼魔方 西西 提交于 2020-01-21 11:58:11
对于大数据计算框架而言,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一。本文将介绍目前Spark的shuffle实现,并将之与MapReduce进行简单对比。本文的介绍顺序是:shuffle基本概念,MapReduce Shuffle发展史以及Spark Shuffle发展史。 (1) shuffle基本概念与常见实现方式 shuffle,是一个算子,表达的是多对多的依赖关系,在类MapReduce计算框架中,是连接Map阶段和Reduce阶段的纽带,即每个Reduce Task从每个Map Task产生数的据中读取一片数据,极限情况下可能触发M*R个数据拷贝通道(M是Map Task数目,R是Reduce Task数目)。通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝。首先,Map阶段需根据Reduce阶段的Task数量决定每个Map Task输出的数据分片数目,有多种方式存放这些数据分片: 1) 保存在内存中或者磁盘上(Spark和MapReduce都存放在磁盘上); 2) 每个分片一个文件(现在Spark采用的方式,若干年前MapReduce采用的方式),或者所有分片放到一个数据文件中,外加一个索引文件记录每个分片在数据文件中的偏移量(现在MapReduce采用的方式)。 在Map端,不同的数据存放方式各有优缺点和适用场景。一般而言

百万TPS高吞吐、秒级低延迟,阿里​搜索离线平台如何实现?

廉价感情. 提交于 2020-01-21 02:37:55
简介: 作者 | 鸿历 作者简介:王伟骏,花名鸿历,阿里巴巴搜索推荐事业部高级开发工程师。2016年硕士毕业于南京邮电大学。Apache Hadoop && Flink && Eagle Contributor。目前负责阿里巴巴搜索离线平台Runtime层相关工作。 另外,陈华曦(昆仑)给了本文很多建议,文中部分图由李国鼎(石及)贡献。 阿里主搜(淘宝天猫搜索)是搜索离线平台非常重要的一个业务,具有数据量大、一对多的表很多、源表的总数多和热点数据等特性。对于将主搜这种逻辑复杂的大数据量应用迁移到搜索离线平台总是不缺少性能的挑战,搜索离线平台经过哪些优化最终实现全量高吞吐、增量低延迟的呢? 前言 在阿里搜索工程体系中我们把搜索引擎、在线算分等ms级响应用户请求的服务称之为“在线”服务;与之相对应的,将各种来源数据转换处理后送入搜索引擎等“在线”服务的系统统称为“离线”系统。搜索离线平台作为搜索引擎的数据提供方,是集团各业务接入搜索的必经之路,也是整个搜索链路上极为重要的一环,离线产出数据的质量和速度直接影响到下游业务的用户体验。 搜索离线平台经过多年沉淀,不仅承载了集团内大量搜索业务,在云上也有不少弹外客户,随着平台功能的丰富,Blink(阿里内部版本的Flink) 版本的领先。我们在2019年年初开始计划把主搜(淘宝天猫搜索)迁移到搜索离线平台上。

Spark-SQL 面试准备 2

馋奶兔 提交于 2020-01-21 01:51:30
Spark Knowledge NO.2 11.RDD缓存: Spark可以使用 persist 和 cache 方法将任意 RDD 缓存到内存、磁盘文件系统中。缓存是容错的,如果一个 RDD 分片丢失,可以通过构建它的 transformation自动重构。被缓存的 RDD 被使用的时,存取速度会被大大加速。一般的executor内存60%做 cache, 剩下的40%做task。 Spark中,RDD类可以使用cache() 和 persist() 方法来缓存。cache()是persist()的特例,将该RDD缓存到内存中。而persist可以指定一个StorageLevel。StorageLevel的列表可以在StorageLevel 伴生单例对象中找到。 Spark的不同StorageLevel ,目的满足内存使用和CPU效率权衡上的不同需求。我们建议通过以下的步骤来进行选择: 如果你的RDDs可以很好的与默认的存储级别(MEMORY_ONLY)契合,就不需要做任何修改了。这已经是CPU使用效率最高的选项,它使得RDDs的操作尽可能的快。 如果不行,试着使用MEMORY_ONLY_SER并且选择一个快速序列化的库使得对象在有比较高的空间使用率的情况下,依然可以较快被访问。 尽可能不要存储到硬盘上,除非计算数据集的函数,计算量特别大,或者它们过滤了大量的数据。否则

转】SparkSQL中的内置函数

北城余情 提交于 2020-01-21 00:06:36
原博文来自于:  http://blog.csdn.net/u012297062/article/details/52207934 感谢! 使用 Spark SQL中的内置函数对数据进行分析,Spark SQL API不同的是,DataFrame中的内置函数操作的结果是返回一个Column对象,而DataFrame天生就是"A distributed collection of data organized into named columns.",这就为数据的复杂分析建立了坚实的基础并提供了极大的方便性,例如说,我们在操作DataFrame的方法中可以随时调用内置函数进行业务需要的处理,这之于我们构建附件的业务逻辑而言是可以极大的减少不必须的时间消耗(基于上就是实际模型的映射),让我们聚焦在数据分析上,这对于提高工程师的生产力而言是非常有价值的Spark 1.5.x开始提供了大量的内置函数,例如agg: [plain] view plain copy def agg(aggExpr: (String, String), aggExprs: (String, String)*): DataFrame = { groupBy().agg(aggExpr, aggExprs : _*) } 还有max、mean、min、sum、avg、explode、size、sort_array

大数据专业未来就业前景如何?

风流意气都作罢 提交于 2020-01-20 20:54:46
大数据专业未来就业前景如何? 大数据人才稀缺 据数联寻英发布《大数据人才报告》显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万。 据职业社交平台LinkedIn发布的《2016年中国互联网最热职位人才报告》显示,研发工程师、产品经理、人力资源、市场营销、运营和数据分析是当下中国互联网行业需求最旺盛的六类人才职位。其中研发工程师需求量最大,而数据分析人才最为稀缺。领英报告表明,数据分析人才的供给指数最低,仅为0.05,属于高度稀缺。数据分析人才跳槽速度也最快,平均跳槽速度为19.8个月。 根据中国商业联合会数据分析专业委员会统计,未来中国基础性数据分析人才缺口将达到1400万,而在BAT企业招聘的职位里,60%以上都在招大数据人才。 大数据专业就业三大方向 大数据主要的三大就业方向:大数据系统研发类人才、大数据应用开发类人才和大数据分析类人才。 在此三大方向中,各自的基础岗位一般为大数据系统研发工程师、大数据应用开发工程师和数据分析师。 大数据专业人才就业薪资 1基础人才:数据分析师  北京数据分析平均工资:¥ 10630/月,取自 15526 份样本,较 2016 年,增长 9.4%。 数据分析师岗位职责 业务类别:技术 业务方向:数据分析  工作职责: 1. 根据公司产品和业务需求,利用数据挖掘等工具对多种数据源进行诊断分析

Spark第一个程序开发----WordCount

百般思念 提交于 2020-01-20 10:19:56
Spark第一个程序开发WordCount Java版本 package cn.spark.java.core; import java.util.Arrays; import java.util.Iterator; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.Function2; import org.apache.spark.api.java.function.PairFunction; import org.apache.spark.api.java.function.VoidFunction; import scala.Tuple2; /** * zgf * java本地测试WordCount程序 */ public class WordCountJavaLocal {

Apache Spark 之 SparkSQL(章节六)

偶尔善良 提交于 2020-01-20 03:06:57
Spark SQL是用于结构化数据处理的一个模块。同Spark RDD 不同地方在于Spark SQL的API可以给Spark计算引擎提供更多地信息,例如:数据结构、计算算子等。在内部Spark可以通过这些信息有针对对任务做优化和调整。这里有几种方式和Spark SQL进行交互,例如Dataset API和SQL等,这两种API可以混合使用。Spark SQL的一个用途是执行SQL查询。 Spark SQL还可用于从现有Hive安装中读取数据。从其他编程语言中运行SQL时,结果将作为Dataset/DataFrame返回,使用命令行或JDBC / ODBC与SQL接口进行交互。 Dataset是一个分布式数据集合在Spark 1.6提供一个新的接口,Dataset提供RDD的优势(强类型,使用强大的lambda函数)以及具备了Spark SQL执行引擎的优点。Dataset可以通过JVM对象构建,然后可以使用转换函数等(例如:map、flatMap、filter等),目前Dataset API支持Scala和Java 目前Python对Dataset支持还不算完备。 Data Frame是命名列的数据集,他在概念是等价于关系型数据库。DataFrames可以从很多地方构建,比如说结构化数据文件、hive中的表或者外部数据库,使用Dataset[row]的数据集

不同特点的数据处理(笔记)2

馋奶兔 提交于 2020-01-20 02:05:37
不同特点的数据处理(笔记)2 有季度特征的数据 有些数据具有明显季度特征(月度,季度),比如GDP,用电量,气温等,尤其是经济类数据。 以下是某市2012-2019的季度用电量数据。 这类数据(以上数据周期=4)不同期间特征相似。对于这类数据, 法1:加入季节因子(这里s=1,2,3,4) 法2:使用季节调整方法把季度特征去除,然后再对平滑曲线建模,最后结合季节因子完成重构, 季节调整介绍 季节调整方法很多, 比如X-12 ARIMA(可以通过EViews简单实现 EViews基础与季节调整操作解析 ppt课件 ), X-11 ,可以通过matlab实现 教你用MATLAB做季节性调整 另外参考 固定季节滤波 , 移动平均法decompose 法3:使用季节arima 来源: CSDN 作者: weixin_42663919 链接: https://blog.csdn.net/weixin_42663919/article/details/104043704