您的位置:首页 > 运维架构

编写Spark程序并提交到集群上运行

2016-07-24 15:08 501 查看

編写Spark应用程序

使用SCALA IDE,新建一个SCALA PROJECT,在项目下新建一个lib的文件夹,把spark的JAR包放进去,并且build path里添加一下JAR包引用,然后添加一个SCALA类SparkRowCount,这个Spark应用程序的功能是计算数据的总行数,代码如下

import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;

object SparkRowCount {

def main(args: Array[String]) {

if (args.length < 1) {
println("Usage: please specify the file path");
System.exit(1);
}

val conf = new SparkConf().setAppName("row count");
val sc = new SparkContext(conf);
val textFile = sc.textFile(args(0));

val rowNum = textFile.count();

println("rowNum: " + rowNum);
}
}


整个项目的结构如下图:



导出JAR

右击项目名称,选择export,再选择JAR File,然后next>,如下图:



做个简单的配置,然后一路next,最后finish,如下图:



把JAR上传到HDFS上

hadoop@master:~$ hadoop-2.4.0/bin/hadoop fs -put sparkrowcount.jar  /jar/


其中,/jar/是HDFS上的根目录下的jar文件夹。

上传测试数据集

对于测试数据集,可以随便找个文件上传就好,因为只是统计文件里的行数,所以,不限文件内容。

提交作业到Spark集群

前提:hadoop spark都以开启

hadoop@master:~$ jps
3857 Master
8227 Jps
3555 ResourceManager
3155 NameNode
3382 SecondaryNameNode


提交格式如下:

详细请参官方文档:

http://spark.apache.org/docs/latest/submitting-applications.html

./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]


选项说明:

–class: 应用程序的入口 (例如SparkRowCount)

–master: 集群的master的URL (例如 spark://master:7077,master是我的集群中master的主机名)

–deploy-mode: driver的部署方式,cluster或client,默认为client (default: client) †

–conf: 指定Spark的配置,格式为 “key=value”,要有引号.

application-jar: 应用程序JAR的路径,URL必须是在集群中全局可见的,例如,hdfs://或file://,例如我的是hdfs://master:9000/jar/sparkrowcount.jar.

application-arguments: 应用程序传到主函数的参数

hadoop@master:~$ spark-1.6.0-bin-hadoop2.4/bin/spark-submit \
> --class SparkRowCount \
> --master spark://master:7077 \
> --deploy-mode cluster \
> hdfs://master:9000/jar/sparkrowcount.jar \
> hdfs://master:9000/test/data/knowledgeGraph/knowledgeGraph-100M.json


查看进度和结果

可以通过spark的web頁面进行查看,地址为:

http://master:8080/

在Completed Drivers里,找到最上面这个,这个是最新运行的,然后点击进去:



把頁面拉到最下面,找到Finished Drivers,点击查看最上面这个的logs的stdout:



然后,就可以看到程序的输出结果,如下图:



其中,rowNum: 6480000就是程序的输出结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark scala hadoop cluster