一.介绍
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
二.特点
快速(计算的中间结果是存在于内存中),易用,通用,随处运行,代码简洁。
hadoop对比版本历史
spark 与 mapreduce 比对
三.生态圈
Spark Core
Spark的核心,提供底层框架及核心支持。
Spark Streaming
可以进行实时数据流式计算。
BlinkDB
一个用于在海量数据上进行交互式SQL查询的大规模并行查询引擎,允许用户通过权衡数据精度缩短查询响应时间,数据的精度将被控制在允许的误差范围内。
Spark SQL
可以执行SQL查询,支持基本的SQL语法和HiveQL语法,可读取的数据源包括Hive、HDFS、关系数据库(如MySQL)等。
MLBase
是Spark生态圈的一部分,专注于机器学习领域,学习门槛较低。
MLBase由4部分组成:MLlib、MLI、ML Optimizer和MLRuntime。
MLlib部分算法如下。
Spark GraphX
图计算的应用在很多情况下处理的数据量都是很庞大的。如果用户需要自行编写相关的图计算算法,并且在集群中应用,难度是非常大的。而使用GraphX即可解决这个问题,因为它内置了许多与图相关的算法,如在移动社交关系分析中可使用图计算相关算法进行处理和分析。
SparkR
AMPLab发布的一个R语言开发包,使得R语言编写的程序不只可以在单机运行,也可以作为Spark的作业运行在集群上,极大地提升了R语言的数据处理能力。
四.spark构架
客户端
用户提交作业的客户端。
Driver
运行Application的main()函数并创建SparkContext。
SparkContext
整个应用的上下文,控制应用的生命周期。
Cluster Manager
资源管理器,即在集群上获取资源的外部服务,目前主要有Standalone(Spark原生的资源管理器)和YARN(Hadoop集群的资源管理器)。
SparkWorker
集群中任何可以运行应用程序的节点,运行一个或多个Executor进程。
Executor
执行器,在Spark Worker上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executor。
Task
被发送到某个Executor的具体任务。
五.sprak 的作业运行流程
spark 有三种运行模式 ,Stand alone ,YARN , Mesos
六.核心数据集RDD
RDD(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。
Spark RDD转换和操作示例
窄依赖:
表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对应于一个子RDD的分区。
宽依赖:
表现为存在一个父RDD的一个分区对应一个子RDD的多个分区。
Scala
一.介绍
Scala是Spark编程常用的语言之一。
Scala与java的关系
所以使用scala时必须在java的前提上
Scala是一门以Java虚拟机 (JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如: Java、C、C++等,动态语言如:JS)。
1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。 (多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
2)Scala源代码 (.scala) 会被编译成Java字节码 (.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。