Learning Spark
一套大数据解决方案通常包含多个重要组件,从存储、计算和网络等硬件层,到数据处理引擎,再到利用改良的统计和计算算法、数据可视化来获得商业洞见的分析层。这中间,数据处理引擎起到了十分重要的作用。
硬件产业的不断发展使得内存计算成为了可能,Spark由此出现.
MapReduce 在迭代计算和交互计算的任务上表现得效率低下。因此,Spark 从一开
始就是为交互式查询和迭代算法设计的,同时还支持内存式存储和高效的容错机制。
Spark是一个通用计算框架.
Spark对Hadoop MapReduce的改进:
1.速度更块
2.丰富的API带来更强大的易用性
3.Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等
不论你只有一台电脑还是有一个庞大的集群,Spark都能成为令你运筹帷幄的数据分析工具.
Spark的核心是一个对由很多计算任务组成的,运行在多个工作机器或者是一个计算集群上的应用进行调度,分发以及监控的计算引擎
Spark Core实现了Spark的基本功能,主要包含:任务调度,内存管理,错误恢复,与存储系统交互等模块.Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset,简称 RDD)的 API 定义。RDD 表示分布在多个计算节点上可以并行操作的元素集合,是Spark 主要的编程抽象。
Spark SQL 是 Spark 用来操作结构化数据的程序包
Spark Streaming是Spark提供的对实时数据进行流式计算的组件
Spark 中还包含一个提供常见的机器学习(ML)功能的程序库,叫作 MLlib
GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算
Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark 支持在各种集群管理器(cluster
manager)上运行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自带的一个简易调度
器,叫作独立调度器
数据科学任务(数据科学家)
数据科学家:主要负责分析数据并建模的人.数据科学家有可能具备SQL、统计、预测建模(机器学习)等方面的经验,以及一定的使用 Python、Matlab 或 R 语言进行编程的能力
数据处理应用(数据工程师)
使用 Spark 开发生产环境中的数据处理应用的软件开发者.这些开发者一般有基本的软件工程概念,比如
封装、接口设计以及面向对象的编程思想,他们通常有计算机专业的背景,并且能使用工程技术来设计和搭建软件系统,以实现业务用例。
例子:
利用Spark来监控并预测城市拥堵情况.
Hadoop 并非 Spark 的必要条件,Spark 支持任何实现
了 Hadoop 接口的存储系统
Spark用户界面查看关于任务和集群的各种信息。通常为
http://[ipaddress]:4040,具体见运行spark时的提示
每个Spark应用都由一个驱动器程序来发起集群上的各种并行操作。Spark shell本身就是一个驱动器程序。 驱动器程序通过一个SparkContext(sc)对象来访问Spark
在单一的驱动器程序中编程,让代码自动运行在多个节点上
Spark在shell中使用与嵌套在Java,scala或Python的程序中使用的主要区别在于shell已经自行初始化SparkContext
在Java和Scala中,只需要在应用添加一个对于Spark-core工件的Maven依赖
groupId = org.apache.spark
artifactId = spark-core_2.10
version = 1.2.0
spark-submit脚本会帮我们引入Python程序的Spark依赖。
spark-submit xxx.py
from pyspark import SparkConf,SparkContext
conf = SprakConf().setMaster("local").setAppName("My app")
#setMaster(集群URL):告诉Spark如何连接到集群上。此处是local,即单机上
sc = SparkContext(conf=conf)

浙公网安备 33010602011771号