Spark第一个研究笔记1一片 - Spark一个简短的引论

该公司推出的在线项目Spark拥有近1随着时间的推移。有效,Spark事实上,优秀的分布式计算平台,以提高生产力。

开始本篇笔记。此前的研究会Spark研究报告共享出来(由于篇幅的限制,它将被划分成制品),为了帮助刚接触Spark的朋友们尽快入门。

以下開始正文。

1. 项目背景

Spark项目于2009年诞生于UC Berkeley AMP Lab并于2010年正式提交Apache Software Foundation成为开源项目。眼下已经成为Apache下的明星项目,其代码提交活跃度在整个社区的全部项目中名列前茅。

2. Spark的性能

若运算过程所有在内存中完毕,与Hadoop集群支持Map/Reduce的Streaming计算相比。在计算速度方面,Spark会有100x倍的性能提升;即使运算会产出中间文件,速度也有10x倍的提升。

3. 编译

从官网下载合适的Spark版本号,建议下载pre-built版本号,能够省去不少依赖问题。

Installing Doc的build guide是用Maven来编译Spark源代码的,且编译过程中有些细节參数须要指定。这里不再赘述,直接參考官网guide就可以。

4. Spark集群的部署模式

4.1 Spark集群部署模式

眼下支持下面几种部署方式:

1) Standalone模式

将Spark集群单独部署,不与不论什么现有系统耦合,cluster manager由Spark的master实例担任。这是最简单的部署模式。

详细部署时,可启多个master实例,借助zookeeper消除单点故障。从而实现HA:zookeepr选出”现役”的master,其余实例standby,若当前master实例故障,则zookeeper从standby的实例中选新主。

2) Apache Mesos模式

cluster manager由mesos master实例来担任。实现资源分配及任务调度。

3) Hadoop YARN模式

cluster manager由YARN ResourceManager来担任

注意:Spark程序编译时须要引入YARN支持才干应用YARN模式。

关于这3种部署模式的具体说明。可參考官网文档的说明。

4.2 Spark集群典型结构

Cluster Mode Overview文档可知,一个典型的Spark集群包括的组件例如以下图所看到的。

Spark应用提交Spark集群后。任务脚本中创建的Spark context对象(又称为driver program。事实上是在Sparkclient所在机器上启动的一个JVM进程)会依次运行例如以下步骤:

1) 建立与cluster manager进程的连接

2) 向manager申请任务所需资源(worker节点上的executor进程。实现详细的计算及数据存储)

3) 将应用程序代码(jar或.py文件)发往申请到的executor进程

4) 向executor进程发送由调度器分解job->stages->tasks后的tasks并由后者负责运行

几点补充说明:

1) Spark context无法也无须感知其底层的cluster manager是何种类型(3种可能:Spark standalone/apache mesos/hadoop yarn),仅仅要它能够通过culster manager申请到executor进程。它就能够运行Spark应用。

2) 每一个Spark应用均会申请独立的executor进程(即不同的Spark任务相应的进程间相互独立)。长处:实现应用隔离,从调度端看。不同应用创建各自的Spark context实例,每一个driver仅仅调度自己的任务;从执行端看,不同应用的executor进程执行在各自的JVM上。缺点:若不借助外部存储系统。数据无法在不同的Spark应用间共享。

3) Spark应用申请的executor进程在应用的运行时间内保持alive,且它以multi-threading方式运行详细的计算任务。

4) Spark context实例所属的driver program负责在集群上调度任务。故在部署上,driver的部署节点应尽可能靠近worker节点。最好部署在同一局域网内。

未完待续。下篇笔记将会介绍怎样通过Sparkclient向Spark集群提交计算任务。

【參考资料】

1. Spark Overview

2. Cluster Mode Overview

3. Spark Documentation  PS: 这里有不少从浅到深的Spark资料

========================= EOF ====================

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-25 04:05:58

Spark第一个研究笔记1一片 - Spark一个简短的引论的相关文章

Spark第一周

Why Scala 在数据集不是很大的时候,开发人员可以使用python.R.MATLAB等语言在单机上处理数据集.但是在大数据时代,数据集少说都是TB.PB级别,此时便需要分布式地处理.相较于上述语言,Scala有着现成的框架即Spark能分布式地处理问题,Scala中有着丰富的Spark API,开发时只需要进行函数的编写就能轻松解决各种需求.虽然其他语言也有Spark的API,比如python的pySpark,但是逊色于Spark对Scala的支持,毕竟Spark是用Scala开发出来的.

王家林谈Spark性能优化第八季之Spark Tungsten-sort Based Shuffle 内幕解密

内容: 1."钨丝计划"Shuffle实例: 2."钨丝计划"下的Shuffle解密: 现在SparkSQL就是用的"钨丝计划"来处理Shuffle的 ==========使用Tubsten功能============ 1.如果想要你的程序使用Tungsten功能,可以设置 spark.shuffle.manager=tungsten-sort 2.DataFrame中自动开启了Tungsten功能: ==========Tungsten-bas

Spark 1.0.0企业级开发动手:实战世界上第一个Spark 1.0.0课程,涵盖Spark 1.0.0所有的企业级开发技术

课程介绍 2014年5月30日发布了Spark 1.0.0版本,而本课程是世界上第一个Spark1.0.0企业级实践课程,课程包含Spark的架构设计.Spark编程模型.Spark内核框架源码剖析.Spark的广播变量与累加器.Shark的原理和使用.Spark的机器学习.Spark的图计算GraphX.Spark SQL.Spark实时流处理.Spark的优化.Spark on Yarn.JobServer等Spark 1.0.0所有的核心内容 最后以一个商业级别的Spark案例为基础,实战

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio

Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完成特殊优化.可以通过SQL.DataFrames API.Datasets API与Spark SQL进行交互,无论使用何种方式,SparkSQL使用统一的执行引擎记性处理.用户可以根据自己喜好,在不同API中选择合适的进行处理.本章中所有用例均可以在spark-shell.pyspark shel

[Spark內核] 第42课:Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践

本课主题 Broadcast 运行原理图 Broadcast 源码解析 Broadcast 运行原理图 Broadcast 就是将数据从一个节点发送到其他的节点上; 例如 Driver 上有一张表,而 Executor 中的每个并行执行的Task (100万个Task) 都要查询这张表的话,那我们通过 Broadcast 的方式就只需要往每个Executor 把这张表发送一次就行了,Executor 中的每个运行的 Task 查询这张唯一的表,而不是每次执行的时候都从 Driver 中获得这张表

[Spark性能调优] 第四章 : Spark Shuffle 中 JVM 内存使用及配置内幕详情

本课主题 JVM 內存使用架构剖析 Spark 1.6.x 和 Spark 2.x 的 JVM 剖析 Spark 1.6.x 以前 on Yarn 计算内存使用案例 Spark Unified Memory 的运行原理和机制 引言 Spark 从1.6.x 开始对 JVM 的内存使用作出了一种全新的改变,Spark 1.6.x 以前是基于静态固定的JVM内存使用架构和运行机制,如果你不知道 Spark 到底对 JVM 是怎么使用,你怎么可以很有信心地或者是完全确定地掌握和控制数据的缓存空间呢,所

Spark源码系列(七)Spark on yarn具体实现

本来不打算写的了,但是真的是闲来无事,整天看美剧也没啥意思.这一章打算讲一下Spark on yarn的实现,1.0.0里面已经是一个stable的版本了,可是1.0.1也出来了,离1.0.0发布才一个月的时间,更新太快了,节奏跟不上啊,这里仍旧是讲1.0.0的代码,所以各位朋友也不要再问我讲的是哪个版本,目前为止发布的文章都是基于1.0.0的代码. 在第一章<spark-submit提交作业过程>的时候,我们讲过Spark on yarn的在cluster模式下它的main class是or

Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)

Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD 抽象 2.2 Spark 编程接口 2.2.1 例子 – 监控日志数据挖掘 2.3 RDD 模型的优势 2.4 不适合用 RDDs 的应用 3 Spark 编程接口 3.1 Spark 中 RDD 的操作 3.2 举例应用 3.2.1 线性回归 3.2.2 PageRank 4 表达 RDDs 5