rdd

spark面试总结2

最后都变了- 提交于 2020-02-08 05:57:29
Spark core面试篇02 1.cache后面能不能接其他算子,它是不是action操作? 答:cache可以接其他算子,但是接了算子之后,起不到缓存应有的效果,因为会重新触发cache。 cache不是action操作 2.reduceByKey是不是action? 答:不是,很多人都会以为是action,reduce rdd是action 3.数据本地性是在哪个环节确定的? 具体的task运行在那他机器上,dag划分stage的时候确定的 4.RDD的弹性表现在哪几点? 1)自动的进行内存和磁盘的存储切换; 2)基于Lingage的高效容错; 3)task如果失败会自动进行特定次数的重试; 4)stage如果失败会自动进行特定次数的重试,而且只会计算失败的分片; 5)checkpoint和persist,数据计算之后持久化缓存 6)数据调度弹性,DAG TASK调度和资源无关 7)数据分片的高度弹性,a.分片很多碎片可以合并成大的,b.par 5.常规的容错方式有哪几种类型? 1).数据检查点,会发生拷贝,浪费资源 2).记录数据的更新,每次更新都会记录下来,比较复杂且比较消耗性能 6.RDD通过Linage(记录数据更新)的方式为何很高效? 1)lazy记录了数据的来源,RDD是不可变的,且是lazy级别的,且rDD 之间构成了链条,lazy是弹性的基石。由于RDD不可变

Spark基本架构及原理

那年仲夏 提交于 2020-02-08 02:54:09
Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势: Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求 官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍 目标: 架构及生态 spark 与 hadoop 运行流程及特点 常用术语 standalone模式 yarn集群 RDD运行流程 架构及生态: 通常当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时我们也可以选择利用spark集群强大的计算资源,并行化地计算,其架构示意图如下: Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的 Spark SQL:提供通过Apache

Spark 基本架构及原理

泪湿孤枕 提交于 2020-02-08 01:54:19
转载自: http://blog.csdn.net/swing2008/article/details/60869183 转自:http://www.cnblogs.com/tgzhu/p/5818374.html Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势: Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求 官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍 目标: 架构及生态 spark 与 hadoop 运行流程及特点 常用术语 standalone模式 yarn集群 RDD运行流程 架构及生态: 通常当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时我们也可以选择利用spark集群强大的计算资源,并行化地计算

数据挖掘、数据分析以及大数据之间的区别有哪些?

三世轮回 提交于 2020-02-07 07:04:30
进入 大数据 时代,和数据相关的名词都被人们津津乐道。那 数据挖掘 、 数据分析 以及大数据之间有哪些区别呢?数据挖掘是发现信息以及收集数据的过程;数据分析则是将现有数据进行归纳以及分析得出相应结论的过程。而大数据则更加关注数据本身,重要表现就是数据量大,数据的多样性等等。   首先我们了解一下这三个概念分别有哪些具体的含义以及特点。    1、大数据:   指无法一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。   在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)、Veracity(真实性) 。    2、数据分析:   是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。在实用中,数据分析可帮助人们作出判断,以便采取适当行动。   数据分析的数学基础在20世纪早期就已确立,但直到计算机的出现才使得实际操作成为可能,并使得数据分析得以推广。数据分析是数学与计算机科学相结合的产物。  

深度预警:Spark运行原理

梦想与她 提交于 2020-02-06 18:10:48
本文主要分以下章节: 一、Spark专业术语定义 二、 Spark的任务提交机制 一、Spark专业术语定义 1、Application:Spark应用程序 指的是用户编写的Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。 Spark应用程序,由一个或多个作业JOB组成,如下图所示: image 2、Driver:驱动程序 Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境。在Spark中由SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭。通常SparkContext代表Driver,如下图所示: image 3、Cluster Manager:资源管理器 指的是在集群上获取资源的外部服务,常用的有:Standalone,Spark原生的资源管理器,由Master负责资源的分配;Haddop Yarn,由Yarn中的ResearchManager负责资源的分配;Messos,由Messos中的Messos Master负责资源管理,如下图所示: image 4

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