栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spark的安装和基础编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark的安装和基础编程

(一)完成Spark的安装,熟悉Spark Shell。

①完成Spark的安装需要安装包,压缩格式的文件spark-2.4.0-bin-without-hadoop.tgz文件已经下载到本地电脑,保存在“/home/hadoop/下载/”目录下。

②前序实验已经完成了Hadoop的单机/伪分布式配置和JAVA JDK的安装,因此在单台机器上可以按照“Hadoop(伪分布式)+Spark(Local模式)”这种方式进行Hadoop和Spark组合环境的搭建。

③安装后,进行Spark的配置文件spark-env.sh的修改。


③配置完成后就可以直接使用,不需要像Hadoop运行启动命令。通过运行Spark自带的示例,验证Spark是否安装成功。

执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中)。过滤后的运行结果如下图示,可以得到π 的 5 位小数近似值。

(二)使用Spark程序编写wordcount程序。

①启动Spark Shell,会自动创建名为sc的SparkContext对象和名为spark的SparkSession对象。

②spark创建sc,可以加载本地文件和HDFS文件创建RDD。这里用Spark自带的本地文件README.md文件测试。

③通过组合RDD操作进行组合,可以实现简易MapReduce操作。

④输入:quit,即可退出spark shell退出Spark Shell。

(三)使用scala编写Spark程序。 (1)使用sbt对Scala独立应用程序进行编译打包

①使用Scala语言编写的Spark程序,需要使用sbt进行编译打包。Spark中没有自带sbt,需要单独安装。压缩格式的文件sbt-1.3.8.tgz文件已经下载到本地电脑,保存在“/home/hadoop/下载/”目录下。

②把sbt安装到“/usr/local/sbt”目录下,使用hadoop用户登录Linux系统。


③在安装目录中创建一个Shell脚本文件,用于启动sbt。


④保存后,需要为该Shell脚本文件增加可执行权限。

⑤查看sbt版本信息。

第一次运行sbt编译打包命令速度很慢,是因为这个过程需要到国外网站下载很多的依赖包,而国外网站下载速度很慢。最终能够返回上述信息,就说明安装成功了。

(2) 编写Scala应用程序代码

①在终端中执行命令创建一个文件夹 sparkapp,作为应用程序根目录。

②在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件(vim ./sparkapp/src/main/scala/SimpleApp.scala)。

该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。不同于 Spark shell,独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。
③该程序依赖 Spark API,因此需要通过 sbt 进行编译打包。 在~/sparkapp这个目录中新建文件simple.sbt。


文件 simple.sbt 需要指明 Spark 和 Scala 的版本。在以上的配置信息中,scalaVersion用来指定scala的版本,sparkcore用来指定spark的版本,这两个版本信息都可以在之前的启动 Spark shell 的过程中,从屏幕的显示信息中找到。

(3) 使用 sbt 打包 Scala 程序。

①为保证 sbt 能正常运行,先检查整个应用程序的文件结构。

②将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):

生成的 jar 包的位置为 ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar。

(4) 通过 spark-submit 运行程序
①将生成的 jar 包通过 spark-submit 提交到 Spark 中运行。

②最终得到的结果如下。

(四)使用java编写Spark程序,熟悉maven打包过程。 (1) 安装Maven

①Ubuntu中没有自带安装maven,需要手动安装maven。压缩格式的文件apache-maven-3.6.3-bin.zip文件已经下载到本地电脑,保存在“/home/hadoop/下载/”目录下,这里选择安装在/usr/local/maven目录中。


(2) Java应用程序代码

①在终端执行命令创建一个文件夹sparkapp2作为应用程序根目录。

②在 ./sparkapp2/src/main/java 下建立一个名为 SimpleApp.java 的文件(vim ./sparkapp2/src/main/java/SimpleApp.java)。


③该程序依赖Spark Java API,因此需要通过Maven进行编译打包。在./sparkapp2目录中新建文件pom.xml。

关于Spark dependency的依赖关系,可以访问The Central Repository。搜索spark-core可以找到相关依赖关系信息。

(3) 使用Maven打Java程序

①为了保证maven能够正常运行,先执行如下命令检查整个应用程序的文件结构。

②通过如下代码将这整个应用程序打包成Jar(注意:电脑需要保持连接网络的状态,而且首次运行同样下载依赖包,同样消耗几分钟的时间)。

生成Jar包成功。

(4)通过spark-submit 运行程序

通过将生成的jar包通过spark-submit提交到Spark中运行。

(五)Hadoop和Spark直接的区别在哪里?谁的性能更好?

(1)直接区别
①应用场景不同
Hadoop和Spark两者都是大数据框架,但是各自应用场景是不同的。Hadoop是一个分布式数据存储架构,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,降低了硬件的成本。Spark是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它要借助hdfs的数据存储。
②处理速度不同
hadoop的MapReduce是分步对数据进行处理的,从磁盘中读取数据,进行一次处理,将结果写到磁盘,然后在从磁盘中读取更新后的数据,再次进行的处理,最后再将结果存入磁盘,这存取磁盘的过程会影响处理速度。spark从磁盘中读取数据,把中间数据放到内存中,完成所有必须的分析处理,将结果写回集群,所以spark更快。
③容错性不同
Hadoop将每次处理后的数据都写入到磁盘上,基本谈不上断电或者出错数据丢失的情况。Spark的数据对象存储在弹性分布式数据集 RDD,RDD是分布在一组节点中的只读对象集合,如果数据集一部分丢失,则可以根据于数据衍生过程对它们进行重建。而且RDD 计算时可以通过 CheckPoint 来实现容错。
(2) Hadoop使用磁盘进行存储并取决于磁盘读写速度, 性能较慢。Spark拥有快速的内存性能,可以减少磁盘读写操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号