文章目录
一、提出任务
单词计数是学习分布式计算的入门程序,有很多种实现方式,例如MapReduce;使用Spark提供的RDD算子可以更加轻松地实现单词计数。
在IntelliJ IDEA中新建Maven管理的Spark项目,并在该项目中使用Scala语言编写Spark的WordCount程序,最后将项目打包提交到Spark集群(Standalone模式)中运行。
预备工作:启动集群的HDFS与Spark
HDFS上的单词文件-word.txt
二、完成任务
(一)新建Maven项目,基于JDK1.8
设置信息(项目名称、保存位置、组编号以及项目编号)
单击[finish]按钮
将Java目录改为Scala目录
(二)添加相关依赖和构建插件
由于源程序目录改成了scala,在元素里必须添加子元素,指定目录src/main/scala
(三)创建日志属性文件
(四)创建词频 统计单例对象
(五)本地运行程序,查看结果
查看HDFS上的结果文件内容
创建文本文件-word.txt
上传到HDFS的/input目录
给程序设置命令行参数(注意两个参数之间必须有空格)
查看HDFS上的结果文件内容
(六)对于程序代码进行解析
(七)将spark项目编译和打包
(八)将词频统计应用上传到虚拟机
将SparkRDDWordCount-1.0-SNAPSHOT.jar上传到master虚拟机/app目录
(九在集群上执行词频统计应用)
1、提交应用程序到集群中运行
(1)不带参数运行程序
原因是Maven项目里依赖的Scala版本问题
在pom.xml文件里修改Scala依赖的版本以及Spark依赖的版本
查看到输出结果
还可以查看HDFS的结果文件
(2)带参数运行程序
执行命令:spark-submit --master saprk://master:7077 --class net.py.rdd.WordCountSparkRDDWordCount-1.0-SNAPSHOT.jar hdfs://master:9000/imput/word.txt hdfs://master:9000/word_result
查看输出结果
还可以查看HDFS上的结果文件
2、命令参数解析
-master:Spark Master节点的访问路径。由于在WordCount程序中已经通过setMaster()方法指定了该路径,因此该参数可以省略。
-class:SparkWordCount程序主类的访问全路径(包名.类名)。
3、Spark WebUI界面查看应用程序信息
应用程序运行的过程中,可以访问Spark的WebUIhttp://master:8080/,查看正在运行的应用程序的状态信息(也可以查看已经完成的应用程序)