编写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就是程序的输出结果。
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- Windows下Scala环境搭建
- Spark随谈——开发指南(译)
- Rabbitmq集群搭建笔记
- 单机版搭建Hadoop环境图文教程详解
- Spark,一种快速数据分析替代方案
- RH436 Day1 课后总结
- RH436 Day2 课后总结
- MySQL Cluster如何创建磁盘表方法解读
- hadoop常见错误以及处理方法详解
- Windows7下安装Scala 2.9.2教程
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- Windows Server 2003 下配置 MySQL 集群(Cluster)教程
- MySQL Cluster集群的初级部署教程