spark基础知识

spark基础知识

ApacheSpark是一个围绕速度、易用性和复杂分析构建的大数据处理框架

官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍

Hadoop有两个核心模块,分布式存储模块HDFS和分布式计算模块Mapreduce

spark本身并没有提供分布式文件系统,因此spark的分析大多依赖于Hadoop的分布式文件系统HDFS

Hadoop的Mapreduce与spark都可以进行数据计算,而相比于Mapreduce,spark的速度更快并且提供的功能更加丰富

SparkCore:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和SparkCore之上的

SparkSQL:提供通过ApacheHive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,SparkSQL查询被转换为Spark操作。

SparkStreaming:对实时数据流进行处理和控制。SparkStreaming允许程序能够像普通RDD一样处理实时数据

MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。

GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDDAPI,包含控制图、创建子图、访问路径上所有顶点的操作

Spark运行特点:

每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行Task。这种Application隔离机制是有优势的,无论是从调度角度看(每个Driver调度他自己的任务),还是从运行角度看(来自不同Application的Task运行在不同JVM中),当然这样意味着SparkApplication不能跨应用程序共享数据,除非将数据写入外部存储系统

Spark与资源管理器无关,只要能够获取executor进程,并能保持相互通信就可以了

提交SparkContext的Client应该靠近Worker节点(运行Executor的节点),最好是在同一个Rack里,因为SparkApplication运行过程中SparkContext和Executor之间有大量的信息交换

Task采用了数据本地性和推测执行的优化机制

spark基础知识

https://blog.csdn.net/swing2008/article/details/60869183

支持多种编程语言接口:Java、Scala、Python,许多大公司如IBM等大力支持推广Spark的发展;

介绍了Spark的安装,Sparkshell、RDD、SparkSQL、SparkStreaming等的基本使用。

RDD

RDD记录是的数据的来源,和数据是通过什么方式由原数据转换得来(转换方法),每一个转换的方式(转换方法)都有所记录下来,所以一个个RDD是有链接关系的。

转换的过程中是不会进行相关运算和数据生成的,只是记录了相关的转换过程信息,当遇到行动方法时就取出RDD中的转换过程从头到尾进行相关的转换运算,这样的可以不保存中间转换结果,而减少数据复制和落盘的操作了

例子:

1.通过读取文件生成一个RDD,RDD记录了转换信息为RDD[readfile]

2.RDD通过过滤得到RDD1,RDD记录了转换信息为RDD[readfile,filter]

3.RDD1通过过滤得到RDD2,RDD记录了转换信息为RDD[readfile,filter,filter2]

4.到运行时,任务就会从文件读取一行行的数据并调用filtert得到新的数据,并将新数据作为filter2的输入,最后得到filter2处理后的数据.

RDD

它是个弹性分布式数据集

弹性:数据是记录了数据是如何生成的,并不是记录了具体的数据,所以具有弹性,转换可以随时加入而不会对数据产生任何影响(数据是行动时才进行数据输入输出的)

分布式:原始数据是存放在分布式系统的,RDD在真实转换过程中数据是分布在和个运行任务的机器中

RDD可以持久化到硬盘或内存当中(因为只是一个描述的信息(数据生成过程的描述信息)),为一个分区的数据集,分区的多少决定了并行计算的粒度;

Spark中存在两种依赖:窄依赖(NarrowDependencies)、宽依赖(WideDependencies);

窄依赖(NarrowDependencies):一个父RDD的分区只能被一个子RDD的一个分区使用;

宽依赖(WideDependencies):多个子RDD的分区依赖于一个父RDD的同一个分区;

DAG图(有向无环图)

GraphX

https://www.cnblogs.com/sharpxiajun/p/5506822.html(Spark)

相关推荐