从零搭建基于sbt和IDEA的远程spark调试工程

接着之前文章 sbt 以及 IDEA sbt 插件安装配置教程 我们可以利用sbt和IDEA搭建一套可以远程调用spark的scala项目. 本文就详细的介绍一下方法和其中的各种坑.

前置条件

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进程:

spark进程

同时还可以访问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 创建:

scala 版本最好与系统安装的一样, 以免出现问题:

最后点 finish 整个工程就搭建好了:

引入依赖和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-ideasbt 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)


选择mainclass, 并且勾选 Include in project build(就是在build的时候就要生成jar包)

注意路径就是要往setJars里写的:

运行

点击确定,运行, 之后项目就可以远程调用spark了. 结果如下:


参考

(一) 从零开始搭建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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容