Unified engine for large-scale data analytics
Spark是用于大规模数据处理的统一分析引擎
2009年Spark诞生于加州大学伯克利分校AMP实验室,
2013年其原创团队建立了Databricks公司,并将Spark捐献给了Apache软件基金会,
2014年成为Apache顶级项目,2016年发布了Spark2.0,2019年10月发布
Spark3.0预览版,2020年6月18日Spark3.0正式发布
Spark的发展历史,经过几个重要阶段,如下图所示
自2009年伯克利的AMP实验室将Spark开源以来,Spark在大数据处理领域发展相当迅速
,并获得了巨大的成功。如今,Spark已经成为最活跃的开源项目之一,
是大数据处理、数据科学、机器学习和数据分析工作负载的事实上的统一引擎
从世界著名的开发者论坛Stack Overflow的数据可以看出,2015年开始Spark
每月的问题提交数量已经超越Hadoop,而2018年Spark Python 版本的API
PySpark每月的问题提交数量也已超过Hadoop.2019年排名Spark第一,PySark
第二;而十年累计排名Spark第一,PySpark第三。按照这个趋势发展下去,Spark和
PySpark在未来很长一段时间内应该还会处于垄断地位
将从下面三个步骤展开
原理
操作
测试
1.保证有JDK(Spark 源码是使用Scala编写的,编译成.class文件,运行
在JVM之上)
2.Scala的SDK?—不在Linux上进行Spark开发则不需要
3.安装包下载
目前使用Spark最新稳定版本:3.0.x系列
http://archive.apache.org/dist/spark/spark-3.0.1/
在本地使用多线程模拟Spark集群中的各个角色
1.上传:将安装包上传至linux
2.解压 tar -zxvf spark-3.0.1-bin-hadoop2.7.tgz
3.改权限,如果有权限问题,可以修改为root,方便学习时操作,实际
中使用运维分配的用户和权限即可
chown -R root /export/server/spark-3.0.1-bin-hadoop2.7
chgrp -R root /export/server/spark-3.0.1-bin-hadoop2.7
1.上传测试文件
2.启动bin目录下的spark-shell
/xxx/spark/spark-3.0.1-bin-hadoop2.7/bin
3.运行成功以后,有如下提示信息
4.打开webUI: http://shcas.com.cn:4040 (浏览器可以看到spark任务页面)
5.执行命令脚本wordcount
测试代码1(可以直接复制,粘贴到服务器spark启动界面执行):
val textFile = sc.textFile("/app/gzengine/spark/word.txt")
val counts = textFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
counts.collect
测试代码1
val textFile = sc.textFile("/app/gzengine/spark/word.txt")
val counts = textFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
counts.saveAsTextFile("/xxx/spark/text.txt")
总的来说,开箱即用,非常简单。除了local本地模式,还有独立集群、独立集群高可用、on yarn 等部署方式,需要用到多台服务器,在配置文件中配置
Spark环境搭建-Standalone-独立集群-原理
Spark环境搭建-Standalone-HA-独立集群(高可用)-原理