Spark - 使用IDEA远程调试位于Yarn-Client模式下的Spark集群相关配置
2017-08-26 12:25
585 查看
环境介绍
我使用的是基于Ambari 的 HDP-2.6.1.0-129的Hadoop环境1.Spark 1.6.3
2.Scala 2.10.6(可以使用2.11以后的 版本)
开发环境是IDEA 2017.2版本,使用sbt进行编译。
新建工程
使用IDEA进行工程创建在此不赘述,需要注意的是如果在创建工程时没有选择正确的scala版本,可以在项目内的build.sbt文件中修改为正确的scala版本
依赖配置
sbt需要配置的依赖较为简单,我们这一次编写的demo是一个计算Pi的近似值的spark软件,所以只需要添加本地与Spark Yarn通信的依赖name := "SparkDemo_2_10_6" version := "0.1" scalaVersion := "2.10.6" name := "SparkXScalaDemo" libraryDependencies ++= Seq( "org.apache.spark" % "spark-yarn_2.10" % "1.6.3" )
如上面所示,在
libraryDependencies里添加
spark-yarn_2.10依赖,如果你的scala版本是
2.11则应该添加
spark-yarn_2.11
注意
spark-core依赖已经被集成进入yarn依赖中,无需再添加
代码设置
联系Yarn集群需要你提供你的HDP集群的配置,所以去Ambari下把服务器的配置文件下载下来然后需要将这些配置文件放进一个Source或者Res文件夹,注意要去Project Structure中进行设置
完成了这些就能保证IDEA能够正常与Spark集群通信
然后是代码编写,我们的示例代码如下
import org.apache.spark.{SparkConf, SparkContext} import scala.math.random object SparkPi{ def main(args:Array[String]){ val conf = new SparkConf().setAppName("Spark Pi") System.setProperty("hadoop.home.dir","C:\\Users\\sha0w\\hadoop-bin") System.setProperty("HADOOP_USER_NAME", "hdfs") conf.setMaster("yarn-client").setAppName("SparkPi") conf.setJars(List("C:\\Users\\sha0w\\IdeaProjects\\SparkDemo_2_10_6\\target\\scala-2.10\\sparkx 4000 scalademo_2.10-0.1.jar")) conf.set("spark.yarn.preserve.staging.files","false") conf.set("spark.yarn.jar", "hdfs://yourID:port/apps/spark/spark-assembly-1.6.3.2.6.1.0-129-hadoop2.7.3.2.6.1.0-129.jar") //这部分需要指定对应的assembly包在HDFS内的地址,类似于Kylin使用Spark引擎的设置,这个包可以在/usr/hdp/current/spark-client/lib中找到 conf.set("HDP_VERSION","2.6.1.0-129") conf.set("spark.yarn.dist.files", "yarn-site.xml") conf.set("yarn.resourcemanager.hostname", "packone168") val spark =new SparkContext(conf) val slices = if(args.length > 0) args(0).toInt else 2 val n = 100000 * slices val count = spark.parallelize(1 to n, slices).map { i => val x = random * 2 - 1 val y = random * 2 - 1 if(x*x + y*y <1) 1 else 0 }.reduce(_ + _) println("Pi is roughly "+ 4.0 * count / n) spark.stop() } }
这些配置我是尽可能详细地配置,有心人可以尝试减少一些看能不能使用,关键是
conf.setMaster("yarn-client")设置为集群链接模式
小问题
17/08/26 11:42:49 INFO client.RMProxy: Connecting to ResourceManager at packone168/10.0.86.168:8050 17/08/26 11:43:09 INFO ipc.Client: Retrying connect to server: packone168/10.0.86.168:8050. Already tried 0 time(s); maxRetries=45 17/08/26 11:43:29 INFO ipc.Client: Retrying connect to server: packone168/10.0.86.168:8050. Already tried 1 time(s); maxRetries=45 17/08/26 11:43:49 INFO ipc.Client: Retrying connect to server: packone168/10.0.86.168:8050. Already tried 2 time(s); maxRetries=45 17/08/26 11:44:09 INFO ipc.Client: Retrying connect to server: packone168/10.0.86.168:8050. Already tried 3 time(s); maxRetries=45 17/08/26 11:44:29 INFO ipc.Client: Retrying connect to server: packone168/10.0.86.168:8050. Already tried 4 time(s); maxRetries=45
可能是因为我是用手机热点测试的,等下周一上班拿内网测试一下链接。
结语
发现网上讲这个远程调试的都是stand alone模式,我又比较怕麻烦,所以这是我自己摸索出来的连接Client的设置方法,希望大家多多指教。相关文章推荐
- 蜗龙徒行-Spark学习笔记【五】IDEA中集群运行模式的配置
- 如何使用Spark的local模式远程读取Hadoop集群数据
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
- 4000 win7下用Intelij IDEA 远程调试spark standalone 集群
- IDEA【基本配置1】配置SBT 和 scala 并在spark环境中进行wordcount测试(spark集群运行模式)
- 在spark开发环境中使用Standalone模式调试集群运行
- windows10下使用idea远程调试hadoop集群
- 如何使用Spark的local模式远程读取Hadoop集群数据
- Spark远程调试配置,在IDEA中的配置
- Zeppelin 0.6.2使用Spark的yarn-client模式
- RedHat系统下的网络配置,主机名的修改,进入单用户模式修改root密码和使用SSH远程连接工具
- Tomcat使用IDEA远程Debug调试
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop伪分布模式并运行Wordcount示例(1)
- 在PHPDesigner7中使用Xdebug进行调试的相关配置
- 如何使用 Idea 远程调试 Java 代码
- IDEA下使用Jetty进行Debug模式调试
- Tomcat使用MyEclipse远程调试Java代码配置详解
- 在游戏全屏模式下,使用远程调试的设置方法
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop-伪分布模式并运行Wordcount(2)