spark

Spark学习之路 (一)Spark初识 [转]

 ̄綄美尐妖づ 提交于 2020-01-26 18:03:01
官网介绍 什么是Spark 官网地址: http://spark.apache.org/ Apache Spark™ 是用于大规模数据处理的统一分析引擎。 从右侧最后一条新闻看,Spark也用于AI人工智能。 spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。 为什么要学Spark 中间结果输出: 基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的,考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。 Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。 Spark的四大特性 高效性 运行速度提高100倍。 Apache Spark使用最先进的DAG调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能。 易用性

Spark学习之路 (三)Spark之RDD[转]

前提是你 提交于 2020-01-26 17:59:47
RDD的概述 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner,即RDD的分片函数。当前Spark中实现了两种类型的分片函数

Spark学习之路 (十二)SparkCore的调优之资源调优[转]

本小妞迷上赌 提交于 2020-01-26 17:48:23
概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群,也可以是其他的资源管理集群,美团•大众点评使用的是YARN作为资源管理集群)申请运行Spark作业需要使用的资源

Spark中的Spark Shuffle详解

主宰稳场 提交于 2020-01-26 17:20:59
Shuffle简介 Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,reduce task需要跨节点去拉取其它节点上的map task结果。这一过程将会产生网络资源消耗和内存,磁盘IO的消耗。通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝处理。一般将在map端的Shuffle称之为Shuffle Write,在Reduce端的Shuffle称之为Shuffle Read. Hadoop MapReduce Shuffle Apache Spark 的 Shuffle 过程与 Apache Hadoop 的 Shuffle 过程有着诸多类似,一些概念可直接套用,例如,Shuffle 过程中,提供数据的一端,被称作 Map 端,Map 端每个生成数据的任务称为 Mapper,对应的,接收数据的一端,被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer,Shuffle 过程本质上都是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程。 map端的Shuffle简述

Spark配置之历史服务器(HistoryServer)

回眸只為那壹抹淺笑 提交于 2020-01-26 08:10:41
为什么要配置历史服务器 DriverProgram:客户端;提交一个应用程序(application)以后,再提交一次,就无法查看之前的提交信息了;使用历史服务器就可以 具体配置过程如下 :现有客户机(clus10,clus11,clus12,clus13) 1.首先启动zookeeper bin/zkServer.sh start bin/zkServer.sh status 查看状态(一个leader,2个follower)表明正常运行。 2.启动hadoop集群 sbin/start-all.sh jps 3.查看active的namenode 网址如下两个 clus10:9870 clus11:9870 4.查看active的resourcemanager clus10:8088 clus11:8088 5.配置文件在spark客户端上添加一个配置文件 cp spark-defaults.conf.template spark-defaults.conf vim spark-defaults.conf 文件内容修改如下 #作用:bin/spark-submit 后面跟了一大堆参数;这些参数如果放到了这个文件中;每次运行spark-submit的时候,会自动的从这个文件找参数; #这个文件只需要放到运行bin/spark-submit的服务器上就可以(建议四台机器一块放)

Apache Spark

风流意气都作罢 提交于 2020-01-26 05:49:14
Apache Spark 一、概述 官方地址: http://spark.apache.org/ Lightning-fast unified analytics engine : 快如闪电的统一分析引擎 快如闪电: Spark基于内存式计算,分布式并行计算框架。不同于MapReduce框架,基于磁盘式计算,将Job粗粒度的分为MapTask、ReduceTask,并且必须通过网络进行数据交互。 Spark任务执行时,实际上会将一个复杂的科学计算划分一个个的Stage(阶段),每一个Stage都支持分布式的并行计算 Spark计算时,每一个Stage计算结果都可以进行缓存,可以非常容易的进行故障恢复和结果重用 统一: 集结了大数据处理的主流方案 批处理(RDD:代替MapReduce) 流处理(Streaming:代替Storm、Kafka Streaming) 机器学习(Machine Learing: 代替Mahout) 交互式查询(SQL:代替Hive) 图形计算(GraphX) 分析引擎:代替MapReduce 特点 速度: 相对于MapReduce的计算,效率极高。Spark将复杂的Job分解为若个Stage,每一个Stage都可以进行分布式并行计算,称为DAG(Directed Acyclic Graph)有向无环图,类似于Kafka Streaming

TinkerPop集成Hadoop+Spark

最后都变了- 提交于 2020-01-26 04:01:39
前言 前面介绍了 TinkerPop集成Neo4j 的配置方法,并且实现了HA操作。这里有一个突出问题就是不管是使用Neo4j,还是自带的TinkerGraph都不可避免的面临一个问题——大数据量场景,也即分布式问题。鉴于此, Tinkerpop 还提供了和Hadoop+Spark的集成解决方案,从而解决单节点问题。但是由于Spark中的数据一致性问题,不能修改数据,所以这种方案不能修改数据,也不能新增数据,只适合用来查询、计算,不得不说这是一个很大的缺点。如果有同学有更好的解决方法,欢迎在下面留言交流。另外,本文的所有操作同样都以Tinkerpop Server 3.4.4为例。 TinkerPop集成Hadoop+Spark 在 Tinkerpop官网 中已经给出了和Hadoop+Spark的集成方法,但是有两个问题。第一,所有的操作都是基于console完成的,没有server的操作步骤;第二,在使用SparkGraphComputer时,master都是local模式,对于使用YARN作为资源管理器的时候,参照官网资料往往是调试不成功的。原因主要有三点: SparkGraphComputer会创建自己的SparkContext,而不是通过spark-submit获取配置信息。 对于Spark运行在YARN上的模式,直到Tinkerpop 3.2.7/3.3.1版本之后才支持

spark学习13(spark RDD)

雨燕双飞 提交于 2020-01-25 22:37:29
RDD及其特点 1)RDD(Resillient Distributed Dataset)弹性分布式数据集,是spark提供的核心抽象。它代表一个不可变、可分区、里面的元素可并行计算的集合 2)RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作(分布式数据集) 3)RDD通常通过hadoop上的文件,即hdfs文件或者hive表来进行创建,有时也可以通过应用程序中的集合来创建。 4)RDD最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来,即某节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己数据来源重新计算该partition,这一切对使用者是透明的 5)RDD的数据默认情况下存在内存中,但是在内存资源不足是,spark会自动将RDD数据写入磁盘(弹性) 注意:RDD的每个partition,在spark节点上存储时,默认都是放在内存中的,但是如果说内存放不下这么多数据,比如每个节点最多放5w数据,结果每个partition市10w数据,那么就会把partition中的部分数据写入磁盘,进行保存。而上述这一切,对于用户来说,都是完全透明的,也就是不用去管RDD的数据存放在内存还是磁盘,只要关注你针对RDD来进行计算和处理等操作即可

【Spark】(六)Spark 运行流程

≡放荡痞女 提交于 2020-01-25 15:11:32
文章目录 一、Spark中的基本概念 二、Spark的运行流程 2.1 Spark的基本运行流程 1、说明 2、图解 3、Spark运行架构特点 4、DAGScheduler 5、TaskScheduler 6、SchedulerBackend 7、Executor 三、Spark在不同集群中的运行架构 3.1 Spark on Standalone运行过程 3.2 Spark on YARN运行过程 3.2.1 YARN框架流程 3.2.2 YARN-Client 3.2.3 YARN-Cluster 3.2.4 YARN-Client 与 YARN-Cluster 区别 一、Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext。由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等。程序执行完毕后关闭SparkContext (3)Executor:某个Application运行在Worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 CoarseGrainedExecutor Backend,一个CoarseGrainedExecutor

[Hadoop][Spark]Cluster and HA

偶尔善良 提交于 2020-01-25 01:05:05
#!/bin/bash # HOST echo '10.211.55.101 spark01' >> /etc/hosts echo '10.211.55.102 spark02' >> /etc/hosts echo '10.211.55.103 spark03' >> /etc/hosts echo '10.211.55.101 linux01' >> /etc/hosts echo '10.211.55.102 linux02' >> /etc/hosts echo '10.211.55.103 linux03' >> /etc/hosts # SPARK 国内安装文件下载地址 # SPARK_WEB_FILE=wget -P /tmp https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz # 是否下载 SPARK 安装文件 # wget -P /tmp $ZOOKEEPER_WEB_FILE # SPARK 安装文件 # SPARK_INSTALL_FILE=/tmp/spark-2.1.1-bin-hadoop2.7.tgz # SPARK 目录 # SPARK_INSTALL_DIR=/opt/spark-2.1.1-bin-hadoop2