spark

Spark优化

我的梦境 提交于 2020-02-06 10:30:45
Spark优化总结 1.资源调优 在部署spark集群时指定资源分配的默认参数(配置文件) spark安装包的conf下spark-env.sh SPARK_WORKER_CORES SPARK_WORKER_MEMORY SPARK_WORKER_INSTANCES 每台机器启动的worker数 在提交Application的时候给当前的appliation分配更多的资源(liunx提交命令) 提交命令选项 –executor -cores (不设置,默认每一个worker为当前application开启一个executor,这个executor会使用这个Worker的所有cores和1G内存) –executor-memory –total-exexutor-cors (不设置,默认将集群剩下的所有的核数分配给当前application) Application的代码中设置或在Spark-default.conf中设置(代码中设置) spark.executor.cores spark.executor.memory spark.max.cores 动态分配资源 spark.shuffle.service.enableed true //启动external shuffle Service服务 spark.shuffle.service.port 7377 /

【Spark】Spark 转换算子详解

橙三吉。 提交于 2020-02-06 07:58:37
文章目录 一、简介 二、转换算子详解 map、flatMap、distinct coalesce 和 repartition randomSplit glom union subtrat intersection mapPartitions mapPartitionWithIndex zip zipParititions zipWithIndex zipWithUniqueId join leftOuterJoin cogroup 针对键值对的转换算子 reduceByKey[Pair] groupByKey()[Pair] 一、简介 转换(Transformation)算子 就是对RDD进行操作的接口函数,其作用是将一个或多个RDD变换成新的RDD。 使用Spark进行数据计算,在利用创建算子生成RDD后,数据处理的算法设计和程序编写的最关键部分,就是利用变换算子对原始数据产生的RDD进行一步一步的变换,最终得到期望的计算结果。 对于变换算子可理解为分两类: 对Value型RDD进行变换的算子; 对Key/Value型RDD进行变换算子。在每个变换中有仅对一个RDD进行变换的,也有是对两个RDD进行变换的。 二、转换算子详解 map、flatMap、distinct map说明:将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。 输入分区与输出分区一对一,即

spark Straming介绍

拈花ヽ惹草 提交于 2020-02-06 03:53:37
目录 1 spark streaming介绍 1.1 背景 1.2 Spark Streaming 设计 1.3 Spark Streaming 与 Storm 的对比 现在的事实是 ---> twitter跳槽过来的同事说,现在他们内部已经不使用storm了,转而使用Spark Streaming,可见Spark Streaming正渐渐成为主流 2 架构及运行流程 2.1 架构 2.2 运行流程 3 DStream 3.1 DStream 输入源 3.2 DStream 转换操作 3.2.1 DStream 无状态转换操作 3.2.2 DStream 有状态转换操作 1)滑动窗口转换操作 2)updateStateByKey 操作 3.3 DStream 输出操作 4 SparkStreaming程序 4.1 socket 创建DStream 4.2 updateStateByKey 4.3 streaming用checkpoint恢复历史数据 1 spark streaming介绍 1.1 背景 随着大数据技术的不断发展,人们对于大数据的实时性处理要求也在不断提高,传统的 MapReduce 等批处理框架在某些特定领域,例如实时用户推荐、用户行为分析这些应用场景上逐渐不能满足人们对实时性的需求,因此诞生了一批如 S3、Storm 这样的流式分析、实时计算框架。Spark

SparkStreaming教程

不羁的心 提交于 2020-02-05 22:15:52
SparkStreaming教程 概要 Spark流是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处理过的数据可以被推送到文件系统,数据库和HDFS。 image.png 在内部,其按如下方式运行。Spark Streaming接收到实时数据流同时将其划分为分批,这些数据的分批将会被Spark的引擎所处理从而生成同样按批次形式的最终流。 image.png Spark Streaming提供了被称为离散化流或者DStream的高层抽象,这个高层抽象用于表示数据的连续流。 创建DStream的两种方式: 1. 由Kafka,Flume取得的数据作为输入数据流。 2. 在其他DStream进行的高层操作。 在内部,DStream被表达为RDDs的一个序列。 这个指南会指引你如何利用DStreams编写Spark Streaming的程序。你可以使用诸如Scala,Java或者Python来编写Spark Streaming的程序。文中的标签可以让你在不同编程语言间切换。 注意:少量的API在Python中要么是不可用的

Spark控制算子

混江龙づ霸主 提交于 2020-02-05 01:37:57
概念: 控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。 cache 默认将RDD的数据持久化到内存中。cache是懒执行。 注意:cache () = persist()=persist(StorageLevel.Memory_Only) 测试代码: SparkConf conf = new SparkConf(); conf.setMaster("local").setAppName("CacheTest"); JavaSparkContext jsc = new JavaSparkContext(conf); JavaRDD<String> lines = jsc.textFile("./NASA_access_log_Aug95"); lines = lines.cache(); long startTime = System.currentTimeMillis(); long count = lines.count(); long endTime = System.currentTimeMillis(); System.out

大数据学习路线(我自己的零基础到现在的总结)

浪尽此生 提交于 2020-02-04 02:04:32
大数据要怎样学:数据科学特点与大数据学习误区 (1)大数据学习要事务驱动,不要技能驱动:数据科学的中心才能是处理问题。 大数据的中心方针是数据驱动的智能化,要处理详细的问题,不管是科学研讨问题,仍是商业决议计划问题,抑或是政府办理问题。 所以学习之前要清晰问题,了解问题,所谓问题导向、方针导向,这个清晰之后再研讨和挑选合适的技能加以使用,这样才有针对性,言必hadoop,spark的大数据剖析是不谨慎的。 不同的事务范畴需求不同方向理论、技能和东西的支撑。如文本、网页要自然言语建模,随时刻改动数据流需求序列建模,图画音频和视频多是时空混合建模;大数据处理如搜集需求爬虫、倒入导出和预处理等支撑,存储需求分布式云存储、云核算资源办理等支撑,核算需求分类、猜测、描绘等模型支撑,使用需求可视化、常识库、决议计划点评等支撑。所以是事务决议技能,而不是依据技能来考虑事务,这是大数据学习要防止的第一个误区。 (2)大数据学习要善用开源,不要重复造轮子:数据科学的技能基因在于开源。IT前沿范畴的开源化已成不可逆转的趋势,Android开源让智能手机平民化,让咱们跨入了移动互联网年代,智能硬件开源将带领跨入物联网年代,以Hadoop和Spark为代表的大数据开源生态加快了去IOE(IBM、ORACLE、EMC)进程,倒逼传统IT巨子拥抱开源,谷歌和OpenAI联盟的深度学习开源

Spark学习之路——9.Spark ML

非 Y 不嫁゛ 提交于 2020-02-04 00:44:07
一、简介 基于RDD的API spark.mllib已进入维护模式。 Spark ML是Spark MLlib的一种新的API,它有下面的优点: 1.面向DataFrame,基于RDD进一步封装,拥有功能更多的API 2.具有Pipeline功能,可以实现复杂的机器学习模型 3.性能得到提升 二、ML Pipeline 一个pipeline 在结构上会包含一个或多个Stage,每一个 Stage 都会完成一个任务,如数据集处理转化,模型训练,参数设置或数据预测等,这样的Stage 在 ML 里按照处理问题类型的不同都有相应 的定义和实现。 两个主要的stage为Transformer和Estimator 。 1.主要概念 Pipeline通过将多个Transformers和Estimators连接起来组合成一个机器学习工作流程。 (1)DataFrame:数据源,可以容纳多种数据类型。 (2)Transformer:是可以 将一个DataFrame变换成另一个DataFrame 的算法。例如,一个训练好的模型是一个Transformer,通过transform方法,将原始DataFrame转化为一个包含预测值的DataFrame。 (3)Estimator:是一个算法,接受一个DataFrame,产生一个Transformer。例如,一个学习算法(如PCA,SVM

2020寒假学习(5)

给你一囗甜甜゛ 提交于 2020-02-03 21:20:33
Intellij IDEA 使用 Maven 搭建 spark 开发环境 ( 2 )   参考自https://blog.csdn.net/maenlai0086/article/details/85759328   其中pom.xml的配置,网上各种各样的版本,再加上不理解,费时费力直到现在还没成功。      这个配置有待检测。 另一种参考 https://blog.csdn.net/mmake1994/article/details/79866971   他里面的jar包,在我这里没有,把全部spark中带的jar包全部导入项目,运行,也没有成功。   暂时认为是jar包的问题。    来源: https://www.cnblogs.com/janeszj/p/12257320.html

Spark的存储级别

爱⌒轻易说出口 提交于 2020-02-03 17:27:29
存储模块 存储级别 意义 NONE 不会保存任何的数据 DISK_ONLY 直接将RDD的Partition保存在该节点的Disk上 MEMORY_ONLY 将RDD的Partition对应的原生的java object对象保存在JVM中。如果RDD太大,导致部分Partition无法保存在内存中的话,那么这些Partition将不会被缓存,在需要的时候,会被重新计算。这是默认的存储级别。 MEMORY_ONLY_SER 将RDD的Partition序列化后的对象(每一个Partition占用一个字节数组)存储在JVM中。通常来说,这将比直接保存原始对象来说空间利用率更高。尤其是在使用fast serializer(快速序列化)时。但是在读取的时候,由于需要进行反序列化,所以会占用一定量的CPU MEMORY_AND_DISK 将RDD的partition反序列化后存储在JVM中,如果它的RDD太大,导致它的部分Partition不能存储在内存中,超出的Partition将会被保存在DISK上,需要的时候进行读取。 MEMORY_AND_DISK_SER 与MEMORY_ONLY_SER类似,但是会把超出内存的Partition保存在Disk上,而不是每次需要的时候重新计算。 DISK_ONLY_2 MEMORY_ONLY_2 MEMORY_ONLY_SER_2 MEMORY

sparkSQL来完成对Hive的操作

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-03 16:02:51
接下来做的操作是:(这个操作,将程序打成jar包到集群中运行) (1)编写spark程序在线上的hive中创建表并导入数据 (2)查询hive中的数据 (3)将查询结果保存到MySQL中 代码: object SparkSqlTest { def main(args: Array[String]): Unit = { //屏蔽多余的日志 Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN) Logger.getLogger("org.apache.spark").setLevel(Level.WARN) Logger.getLogger("org.project-spark").setLevel(Level.WARN) //构建编程入口 val conf: SparkConf = new SparkConf() conf.setAppName("SparkSqlTest") val spark: SparkSession = SparkSession.builder().config(conf) .enableHiveSupport() //这句话表示支持hive .getOrCreate() //创建sqlcontext对象 val sqlContext: SQLContext = spark.sqlContext