一、Spark与Scala版本兼容问题: Spark运行在Java 8 +,Python 2.7 + / 3.4 +和R 3.1+上。对于Scala API,Spark 2.4.2使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x)。 请注意,自Spark 2.2.0起,对2.6.5之前的Java 7,Python 2.6和旧Hadoop版本的支持已被删除。自2.3.0起,对Scala 2.10的支持被删除。自Spark 2.4.1起,对Scala 2.11的支持已被弃用,将在Spark 3.0中删除。 https://spark.apache.org/docs/latest/index.html
二、官网下载安装Scala:scala-2.12.8.tgz https://www.scala-lang.org/download/ tar -zxvf scala-2.12.8.tgz -C /opt/module mv scala-2.12.8 scala 测试:scala -version 启动:scala
三、官网下载安装Spark:spark-2.4.2-bin-hadoop2.7.tgz https://www.apache.org/dyn/closer.lua/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.7.tgz 解压、重命名 启动spark ①先启动hadoop 环境 start-all.sh ②启动spark环境 进入到SPARK_HOME/sbin下运行start-all.sh /opt/module/spark/sbin/start-all.sh [注] 如果使用start-all.sh时候会重复启动hadoop配置,需要./在当前工作目录下执行命令 jps 观察进程 多出 worker 和 mater 两个进程。 查看spark的web控制页面:http://bigdata128:8080/ 显示spark的端口是7070 ③启动Spark Shell 此模式用于interactive programming,先进入bin文件夹后运行:spark-shell SecureCRT 下 spark-shell 下scala> 命令行无法删除,解决办法: https://blog.csdn.net/nicolewjt/article/details/87368749 ④退出Spark Shell scala> :quit
四、使用Spark Shell编写代码 读取本地文件
显示第一行内容
读取HDFS文件
对上述hdfs根目录下f1.txt文件进行词频统计
查看结果
五、用Scala语言编写Spark独立应用程序 见参考资料:Spark2.1.0入门:第一个Spark应用程序:WordCount
六、用Java语言编写Spark独立应用程序
分布式计算归根到底还是一个Map和Reduce操作,Map操作对每个数据块进行计算,Reduce操作对结果进行汇总,现在一些NoSQL分布式数据库其实也是这么一套计算框架,只是map和reduce太基础,太简陋,实现相关的业务时开发比较复杂,不符合生产力发展的需求,这样Spark对map和reduce进行了抽象和封装提出了RDD的概念
RDD的提出是Spark的最大的进步,它让我们不再关注计算本身,以前我们老想着map,reduce啥的,RDD对数据集进行抽象,我们的关注点变成了数据集本身,又借鉴了函数式编程的一些思想,我们可以对数据集做各种各样的操作(spark的transformation和action),Spark框架底层转换了map和reduce的操作,大大的提高了生成力。当然还加入了一些优化,比如map的输出不需要落地,其实要做大数据的计算怎么可能不落地。做大数据的聚集操作时磁盘和网络IO依旧是制约速度的主要原因 https://www.cnblogs.com/gaoxing/p/4916785.html
《深入理解SPARK:核心思想与源码分析》一书对Spark1.2.0版本的源代码进行了全面而深入的分析,旨在为Spark的优化、定制和扩展提供原理性的指导。阿里巴巴集团专家鼎力推荐、阿里巴巴资深Java开发和大数据专家撰写。 本书分为三篇: 准备篇(第1~2章),介绍了Spark的环境搭建、设计理念与基本架构,帮助读者了解一些背景知识。 核心设计篇(第3~7章),着重讲解SparkContext的初始化、存储体系、任务提交与执行、计算引擎及部署模式的原理和源码分析。通过这部分的内容,读者可以通过源码剖析更加深入理解Spark的核心设计与实现,以便在实际使用中能够快速解决线上问题并对性能进行调优。 扩展篇(第8~11章),主要讲解基于Spark核心的各种扩展及应用,包括SQL处理引擎、Hive处理、流式计算框架Spark Streaming、图计算框架GraphX、机器学习库MLlib等内容。通过阅读这部分内容,读者可以扩展实际项目中对Spark的应用场景,让Spark焕发活力。