从零搭建基于sbt和IDEA的远程spark调试工程
2017-06-28 16:55
507 查看
接着之前文章 sbt 以及 IDEA sbt 插件安装配置教程 我们可以利用sbt和IDEA搭建一套可以远程调用spark的scala项目. 本文就详细的介绍一下方法和其中的各种坑.
在 C:\Windows\System32\drivers\etc\hosts 文件中添加 Spark集群的相关ip和机器名, 如下示例:
1. 解决 null\bin\winutils.exe 错误
因为Windows系统没有安装hadoop系统, 所以系统运行时会报找不到的错误(hbase等工程也会报).可以从网上下载 hadoop-common-2.2.0-bin-master.zip, 并设置环境变量, 示例如下:
2.spark 启动
要确保 spark 服务启动才可调试.
启动方法: %spark_home%/sbin/start-all.sh
启动后, 使用
![](http://os3dmpc4u.bkt.clouddn.com/201706281516_547.png)
同时还可以访问web ui界面:
http://192.168.4.225:4040/
spark web ui 一般为8080, 这可能与其他服务冲突, 解决方法是在 spark目录/sbin/start-master.sh 下, 修改这一段:
if [ “$SPARK_MASTER_WEBUI_PORT” = “” ]; then
SPARK_MASTER_WEBUI_PORT=4040
fi
![](http://os3dmpc4u.bkt.clouddn.com/201706281523_784.png)
scala 版本最好与系统安装的一样, 以免出现问题:
![](http://os3dmpc4u.bkt.clouddn.com/201706281528_772.png)
最后点 finish 整个工程就搭建好了:
![](http://os3dmpc4u.bkt.clouddn.com/201706281531_651.png)
在build.sbt中添加
core_2.11中的2.11指的是spark编译使用的scala版本, 后面的2.1.0是spark版本
添加后 IDEA 会进行自动导入, 如果没有可以ctrl+s试试, 还不行那就需要下面的插件, 使用命令
添加sbt相关插件
想要更便利的时候sbt, 最好添加下面的两个插件, gen-idea 是生成可供idea使用的项目, sbt-assembly是打包
之后就可以使用
sbt 0.13.7 之前版本的 sbt 要求sbt文件中每行代码间有一个空行, 性情请见 sbt官网关于空行的说明
写入口代码
在src/main/scala 下新建 scala 文件WordCount.scala
这里如果新建没有scala选项, 可以自己手动新建.scala文件, 后面idea会自动处理
此时, 调用本地spark执行已经没有问题了, 但是要调用集群环境依然还需要配置. 可以看到setJars方法后的jar路径. 我们要进行jar包设置
选中项目名 -> 右键 -> 选择 Open Module Settings (快捷键 F4)
![](http://os3dmpc4u.bkt.clouddn.com/201706281602_448.png)
选择mainclass, 并且勾选 Include in project build(就是在build的时候就要生成jar包)
![](http://os3dmpc4u.bkt.clouddn.com/201706281642_734.png)
注意路径就是要往setJars里写的:
![](http://os3dmpc4u.bkt.clouddn.com/201706281644_249.png)
![](http://os3dmpc4u.bkt.clouddn.com/201706281648_398.png)
(二)win7下用Intelij IDEA 远程调试spark standalone 集群 http://www.cnblogs.com/ooon/p/5490247.html
sbt Reference Manual — Getting Started summary http://www.scala-sbt.org/0.13/docs/Summary.html
Idea下用SBT搭建Spark Helloworld - X.Jan - 博客园 http://www.cnblogs.com/yongjian/p/6211007.html
前置条件
0. hosts添加地址映射在 C:\Windows\System32\drivers\etc\hosts 文件中添加 Spark集群的相关ip和机器名, 如下示例:
192.168.4.225 hadoop1 192.168.4.216 hadoop2 192.168.4.156 hadoop3 192.168.4.239 hadoop4
1. 解决 null\bin\winutils.exe 错误
因为Windows系统没有安装hadoop系统, 所以系统运行时会报找不到的错误(hbase等工程也会报).可以从网上下载 hadoop-common-2.2.0-bin-master.zip, 并设置环境变量, 示例如下:
HADOOP_HOME=E:\hadoop-2.6.0 Path=%HADOOP_HOME%\bin
2.spark 启动
要确保 spark 服务启动才可调试.
启动方法: %spark_home%/sbin/start-all.sh
启动后, 使用
jps命令可以看到Master和Worker进程:
![](http://os3dmpc4u.bkt.clouddn.com/201706281516_547.png)
同时还可以访问web ui界面:
http://192.168.4.225:4040/
spark web ui 一般为8080, 这可能与其他服务冲突, 解决方法是在 spark目录/sbin/start-master.sh 下, 修改这一段:
if [ “$SPARK_MASTER_WEBUI_PORT” = “” ]; then
SPARK_MASTER_WEBUI_PORT=4040
fi
创建工程
idea 使用 sbt 创建:![](http://os3dmpc4u.bkt.clouddn.com/201706281523_784.png)
scala 版本最好与系统安装的一样, 以免出现问题:
![](http://os3dmpc4u.bkt.clouddn.com/201706281528_772.png)
最后点 finish 整个工程就搭建好了:
![](http://os3dmpc4u.bkt.clouddn.com/201706281531_651.png)
引入依赖和sbt相关插件
添加spark依赖:在build.sbt中添加
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.0"
core_2.11中的2.11指的是spark编译使用的scala版本, 后面的2.1.0是spark版本
添加后 IDEA 会进行自动导入, 如果没有可以ctrl+s试试, 还不行那就需要下面的插件, 使用命令
sbt update gen-idea来更新了
添加sbt相关插件
想要更便利的时候sbt, 最好添加下面的两个插件, gen-idea 是生成可供idea使用的项目, sbt-assembly是打包
在project目录下新建 plugins.sbt, 然后写入: addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
之后就可以使用
sbt gen-idea和
sbt assembly命令了
sbt 0.13.7 之前版本的 sbt 要求sbt文件中每行代码间有一个空行, 性情请见 sbt官网关于空行的说明
写入口代码
在src/main/scala 下新建 scala 文件WordCount.scala
这里如果新建没有scala选项, 可以自己手动新建.scala文件, 后面idea会自动处理
object WordCount extends App { // 读取hdfs文件 // val path = "hdfs://192.168.4.216:8020/tmp/touch.data" // 读取本地文件 val path = "./README.md" // 本地调试 // val conf = new SparkConf().setAppName("SparkDemo").setMaster("local") //远程调试 val conf = new SparkConf() .setAppName("SparkDemo") .setMaster("spark://192.168.4.225:7077") .setJars(List("E:\\CodeReference\\CUNCODE\\sparkDemo\\out\\artifacts\\sparkDemo_jar\\sparkDemo.jar")) val sc = new SparkContext(conf) val lines = sc.textFile(path) val words = lines.flatMap(_.split(" ")).filter(word => word != " ") val pairs = words.map(word => (word, 1)) val wordscount: RDD[(String, Int)] = pairs.reduceByKey(_ + _) wordscount.collect.foreach(println) }
此时, 调用本地spark执行已经没有问题了, 但是要调用集群环境依然还需要配置. 可以看到setJars方法后的jar路径. 我们要进行jar包设置
jar 包设置
写代码前, 要先指定要在代码构建的时候生成jar, 这样才能提交到spark集群运行选中项目名 -> 右键 -> 选择 Open Module Settings (快捷键 F4)
![](http://os3dmpc4u.bkt.clouddn.com/201706281602_448.png)
选择mainclass, 并且勾选 Include in project build(就是在build的时候就要生成jar包)
![](http://os3dmpc4u.bkt.clouddn.com/201706281642_734.png)
注意路径就是要往setJars里写的:
![](http://os3dmpc4u.bkt.clouddn.com/201706281644_249.png)
运行
点击确定,运行, 之后项目就可以远程调用spark了. 结果如下:![](http://os3dmpc4u.bkt.clouddn.com/201706281648_398.png)
参考
(一) 从零开始搭建Spark Standalone集群环境搭建 http://www.cnblogs.com/ooon/p/5460060.html(二)win7下用Intelij IDEA 远程调试spark standalone 集群 http://www.cnblogs.com/ooon/p/5490247.html
sbt Reference Manual — Getting Started summary http://www.scala-sbt.org/0.13/docs/Summary.html
Idea下用SBT搭建Spark Helloworld - X.Jan - 博客园 http://www.cnblogs.com/yongjian/p/6211007.html
相关文章推荐
- Spark基础随笔:Spark1.6 Idea下远程调试的2种方法
- Idea基于maven,java语言的spark环境搭建
- IDEA搭建spark-scala的sbt编辑环境实现WorldCount练习
- window+idea+spark+debug windows下spark开发调试环境搭建
- idea远程调试 spark
- window+idea+spark+debug windows下spark开发调试环境搭建
- idea sbt Spark环境搭建
- spark远程debug之调试spark on yarn 程序(基于CDH平台,1.6.0版本)
- Spark基础随笔:Spark1.6 Idea下远程调试的2种方法
- 【Windows中Spark环境搭建 | 基于Maven依赖库】在windows中对spark程序进行local调试学习
- Idea下用SBT搭建Spark Helloworld
- Spark本地开发与远程调试环境搭建
- Ubuntu+Spark+IDEA+SBT+scala项目搭建流程记录
- IDEA下用SBT搭建Spark Helloworld
- 基于maven创建spark工程、调试并运行
- Spark1.6 Idea下远程调试
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
- sbt结合IDEA对Spark进行断点调试开发
- 使用IDEA基于Maven搭建多模块聚合工程——淘淘商城
- Win下用idea远程在hadoop上调试spark程序及读取hbase