Spark官方文档:https://spark.apache.org/docs/2.3.0/rdd-programming-guide.html
本文涉及的版本号:2.3.0
1.什么是Spark
Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境.提供了 java,scala, python,R 等语言的调用接口
Spark2.3版本后,python对spark支持越来越好了
spark源码托管在git上:https://github.com/apache/spark
2.Spark特点
Spark之所以这么受关注,主要是因为其有与其他大数据平台不同的特点
(1)轻量级快速处理
大数据处理中速度往往被置于第一位,Spark允许传统Hadoop集群中的应用程序在内存中以100倍的速度运行,即使在磁盘上运行也能快10倍。Spark通过减少磁盘IO来达到性能的提升,它们将中间处理数据全部放到了内存中。Spark使用了RDD(Resilient Distributed Datasets)数据抽象,这允许它可以在内存中存储数据,只在需要时才持久化到磁盘。这种做法大大的减少了数据处理过程中磁盘的读写,大幅度的降低了运行时间。
(2)易于使用
Spark支持多语言。Spark允许Java、Scala、Python及R(Spark 1.4版最新支持),这允许更多的开发者在自己熟悉的语言环境下进行工作,普及了Spark的应用范围,它自带80多个高等级操作符,允许在shell中进行交互式查询,它多种使用模式的特点让应用更灵活
(3)支持复杂查询
除了简单的map及reduce操作之外,Spark还支持filter、foreach、reduceByKey、aggregate以及SQL查询、流式查询等复杂查询。
Spark更为强大之处是用户可以在同一个工作流中无缝的搭配这些功能,例如Spark可以通过Spark Streaming获取流数据,然后对数据进行实时SQL查询或使用MLlib库进行系统推荐,而且这些复杂业务的集成并不复杂,因为它们都基于RDD这一抽象数据集在不同业务过程中进行转换,转换代价小,体现了统一引擎解决不同类型工作场景的特点。
(4)实时的流处理
对比MapReduce只能处理离线数据,Spark还能支持实时流计算。Spark Streaming主要用来对数据进行实时处理,当然在YARN之后Hadoop也可以借助其他的工具进行流式计算
(5)与已存Hadoop数据整合
著名的大数据产品开发公司Cloudera曾经对Spark Streaming有如下评价:
Spark不仅可以独立的运行(使用standalone模式),还可以运行在当下的YARN管理集群中。它还可以读取已有的任何Hadoop数据,这是个非常大的优势,它可以运行在任何Hadoop数据源上,比如HBase、HDFS等。如果合适的话,这个特性让用户可以轻易迁移已有Hadoop应用
(6)活跃和不断壮大的社区
Spark起源于2009年,当下已有超过50个机构730个工程师贡献过代码,与2014年6月相比2015年代码行数扩大了近三倍(数据源于Spark Summit 2015公布的数据),这是个惊人的增长
3.Spark组成部分
Spark可以一站式解决大数据的各种场景的
Batch本质上是Spark-Core
- Spark SQL: 提供了类 SQL 的查询,返回 Spark-DataFrame 的数据结构(类似 Hive)
- Spark Streaming: 流式计算,主要用于处理线上实时时序数据(类似 storm)
- MLlib: 提供机器学习的各种模型和调优
- GraphX: 提供基于图的算法,如 PageRank
4.Spark的安装
建议采用编译后的安装包进行安装。
(1)安装Pthon3并配置环境变量
验证python3的安装结果:
(2)解压Spark安装包,并配置环境变量
(3)启动spark
方式1:spark-shell
方式2:pyspark
【小结】
Spark是近年来大数据领域的热门技术,值得我们花大力气学习、掌握,甚至精通。