Spark 介绍
行业广泛使用Hadoop来分析他们的数据集。原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持可扩展,灵活,容错和成本有效的计算解决方案。这里,主要关注的是在处理大型数据集时在查询之间的等待时间和运行程序的等待时间方面保持速度。
Spark由Apache Software Foundation引入,用于加速Hadoop计算软件过程。
对于一个普遍的信念,Spark不是Hadoop的修改版本,并不是真的依赖于Hadoop,因为它有自己的集群管理。
Spark以两种方式使用Hadoop : 一个是存储,另一个是处理。由于Spark具有自己的集群管理计算,因此它仅使用Hadoop进行存储。
Apache Spark是一种快速的集群计算技术,专为快速计算而设计。它基于Hadoop MapReduce,它扩展了MapReduce模型,
以有效地将其用于更多类型的计算,包括交互式查询和流处理。
Spark的主要特性是它的内存中集群计算,提高了应用程序的处理速度。
1.Apache Spark的特性:
a.速度:在迭代循环的计算模型下,spark比Hadoop快100倍,在磁盘运行spark比hadoop快10倍;
b.易用性:spark提供多种语言的API,如Java、Python、Scala、R、SQL等
c.扩展性:在spark RDD基础上,提供一整套的分析计算模型:spark SQL、spark Stresaming、spark MLlib 和 GraphX;
d.运行: spark支持在 Hadoop, Apache Mesos, Kubernetes, standalone, or in the cloud.
2.Spark的组件:
1)Apache Spark Core
Spark Core是spark平台的基础通用执行引擎,所有其他功能都是基于Spark Core。它在外部存储系统中提供内存计算和引用数据集。
2)Spark SQL
Spark SQL是Spark Core之上的一个组件,它引入了一个称为SchemaRDD的新数据抽象,它为结构化和半结构化数据提供支持。
3)Spark Streaming
Spark Streaming利用Spark Core的快速调度功能来执行流式分析。它以小批量获取数据,并对这些小批量的数据执行RDD(弹性分布式数据集)转换。
4)MLlib (Machine Learning Library)
MLlib是Spark之上的分布式机器学习框架,因为基于分布式内存的Spark架构。根据基准,它是由MLlib开发人员针对交替最小二乘法(ALS)实现完成的。
Spark MLlib是基于Hadoop磁盘的Apache Mahout版本的9倍(在Mahout获得了Spark接口之前)。
5) GraphX
GraphX是Spark上的一个分布式图形处理框架。它提供了一个用于表达图形计算的API,可以通过使用Pregel抽象API为用户定义的图形建模。它还为此抽象提供了一个优化的运行时。
3.Spark RDD 弹性分布式数据集(简单了解)
弹性分布式数据集(RDD)是Spark的基本数据结构。
它是一个不可变的分布式对象集合。 RDD中的每个数据集划分为逻辑分区,可以在集群的不同节点上计算。
RDD可以包含任何类型的Python,Java或Scala对象,包括用户定义的类。
有3种方法来创建RDD: 1)并行化驱动程序中的现有集合 2)引用外部存储系统中的数据集 3)调用SparkContext对象的 makeRDD() 方法
4.MapReduce中的数据共享及迭代操作与Spark RDD中的数据共享及迭代操作
Spark多种运行模式:
Local模式
Cluster模式 :standalone,Yarn,Messos(国内很少用)
5.spark的Local模式:
0).版本选型:spark2.1.2。依赖scala2.11.8
1).下载spark2.1.2.tar.gz
2).解压安装:
$>cd /home/hyxy/apps/
$>cp /mnt/hgfs/2.安装环境/download/apache-spark/spark-2.1.2-bin-hadoop2.7.tgz .
$>tar -zxvf spark-2.1.2-bin-hadoop2.7.tgz
$>ln -s spark-2.1.2-bin-hadoop2.7 spark
3).