前言

接下来下定决心好好学习Spark了。。。ps:关于Spark安装和使用以及Spark分布式集群环境搭建,请见参考内容1-4,这里就不作阐述了。

步骤

  1. 首先安装Scala插件,File->Settings->Plugins,搜索出Scla插件,点击Install安装;

  2. File->New Project->maven,新建一个Maven项目,填写GroupId和ArtifactId;


  3. 编辑pom.xml文件,添加项目所需要的依赖:前面几行是系统自动生成的,我们只需要从<version>1.0-SNAPSHOT</version>之后开始添加就行。关于spark.version和scala.version需要在服务器通过启动spark-shell查询。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artifactId>SparkPi</artifactId><version>1.0-SNAPSHOT</version><properties><spark.version>2.4.4</spark.version><scala.version>2.11</scala.version></properties><repositories><repository><id>nexus-aliyun</id><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></repository></repositories><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-hive_${scala.version}</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_${scala.version}</artifactId><version>${spark.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><version>2.15.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.6.0</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.19</version><configuration><skip>true</skip></configuration></plugin></plugins></build></project>
    
  4. File->Project Structure->Libraries,选择和Spark运行环境一致的Scala版本

  5. File->Project Structure->Modules,在src/main/下面增加一个scala文件夹,并且设置成source文件夹

  6. 在scala文件夹下面新建一个scala文件SparkPi


    SparkPi文件的代码如下:其中,setMaster用来指定spark集群master的位置;setJars用来指定程序jar包的位置,此位置在下面1步中添加程序jar包的output directory可以看到。

    import scala.math.random
    import org.apache.spark._object SparkPi {def main(args: Array[String]) {val conf = new SparkConf().setAppName("Spark Pi").setMaster("spark://222.201.187.178:7077").setJars(Seq("E:\\IdeaProjects\\SparkPi\\out\\artifacts\\SparkPi_jar\\SparkPi.jar"))val spark = new SparkContext(conf)val slices = if (args.length > 0) args(0).toInt else 2println("Time:" + spark.startTime)val n = math.min(1000L * slices, Int.MaxValue).toInt // avoid overflowval count = spark.parallelize(1 until n, slices).map { i =>val x = random * 2 - 1val y = random * 2 - 1if (x*x + y*y < 1) 1 else 0}.reduce(_ + _)println("Pi is roughly " + 4.0 * count / n)spark.stop()}
    }
    
  7. File->Project Structure->Artifacts,新建一个Jar->From modules with dependencies…,选择Main Class,之后在Output Layput中删掉不必要的jar


    这里的output directory即为前面SparkPi.scala代码里setJars用来指定程序jar包的位置

    注意这里如果没有删除没用的jar包,后面执行会报错java.lang.ClassNotFoundException: SparkPi$$anonfun$1

  8. 在服务器集群配置文件/usr/local/spark/conf/spark-env.sh中加入以下代码:

    export SPARK_SUBMIT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
    
      address:JVM在5005端口上监听请求,这个设定为一个不冲突的端口即可。  server:y表示启动的JVM是被调试者,n表示启动的JVM是调试器。suspend:y表示启动的JVM会暂停等待,直到调试器连接上才继续执行,n则JVM不会暂停等待。
    
  9. 在服务器Master节点主机上启动hadoop集群,然后再启动spark集群,最后运行jps命令检查进程。

    cd /usr/local/hadoop/
    sbin/start-all.sh # 启动hadoop集群
    cd /usr/local/spark/
    sbin/start-master.sh # 启动Master节点
    sbin/start-slaves.sh # 启动所有Slave节点
    jps
    
  10. 在IDEA上添加远程配置,根据spark集群中spark-env.sh的SPARK_SUBMIT_OPTS的变量,对远程执行进行配置,保持端口号一致

  11. 配置完成,右键run执行scala程序。初次运行报错如下,选择右下角弹窗中的enable auto import,然后再重新执行一次。


    完美!!!

  12. 结束记得关闭spark集群哦

    sbin/stop-master.sh # 关闭Master节点
    sbin/stop-slaves.sh # 关闭Worker节点
    cd /usr/local/hadoop/
    sbin/stop-all.sh # 关闭Hadoop集群
    

参考内容

  • Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04_厦大数据库实验室博客
    http://dblab.xmu.edu.cn/blog/install-hadoop/
  • Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS_厦大数据库实验室博客
    http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
  • Spark安装和使用_厦大数据库实验室博客
    http://dblab.xmu.edu.cn/blog/931-2/
  • Spark 2.0分布式集群环境搭建_厦大数据库实验室博客
    http://dblab.xmu.edu.cn/blog/1187-2/
  • 利用idea对spark程序进行远程提交和调试 - yiluohan0307的专栏 - CSDN博客
    https://blog.csdn.net/yiluohan0307/article/details/80048765
  • 使用Intellij IDEA开发并提交Spark应用到远程Spark集群 - Camu7s的专栏 - CSDN博客
    https://blog.csdn.net/Camu7s/article/details/45530295
  • Intellij IDEA连接Spark集群 - MSTK - 博客园
    https://www.cnblogs.com/mstk/p/6875068.html?utm_source=itdadao&utm_medium=referral
  • java.lang.ClassNotFoundException: SparkPi$$anonfun$1 - weixin_34019144的博客 - CSDN博客
    https://blog.csdn.net/weixin_34019144/article/details/86440499

IDEA连接Spark集群执行Scala程序相关推荐

  1. 本地Spark连接远程集群Hive(Scala/Python)

    精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 摘要:本地Spa ...

  2. window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建

    软件 1.anaconda(python3.6) 2.spark-2.4.3-bin-hadoop2.7(spark版本要和集群上的一样) 3.JDK1.8 python环境配置 pip instal ...

  3. Intellij IDEA连接Spark集群

    1. 首先安装Scala插件,File->Settings->Plugins,搜索出Scla插件,点击Install安装: 2. File->New Project->mave ...

  4. Mac M1搭建hadoop+spark集群教程

    最近一直在搞Mac虚拟机,尝试了parallel.vmware.utm,感觉效果都不是很好,踩了了很多很多坑,parallel破解直接劝退我,并且也不是很稳定:wmware for m1刚开始装了一次 ...

  5. 如何将Jupyter Notebook连接到远程Spark集群并每天运行Spark作业?

    As a data scientist, you are developing notebooks that process large data that does not fit in your ...

  6. spark集群访问mysql_spark连接数据源以及在spark集群上跑

    1.spark连接mysql import org.apache.spark.SparkConf import org.apache.spark.sql.{SaveMode, SparkSession ...

  7. intellij连接真实spark集群运行wordcount-Java

    #--------------------------------------------------------------------------------------------------- ...

  8. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

  9. 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce

    场景:将Python程序通过hadoop-streaming提交到Hadoop集群执行. 参考:http://www.michael-noll.com/tutorials/writing-an-had ...

  10. 成功启动spark集群程序,使用多台电脑进行计算

    单独启动spark集群(不启动hadoop集群) start-spartk-all.sh spark-submit --class org.apache.spark.examples.JavaSpar ...

最新文章

  1. 深入理解CUDA线程层次以及关于设置线程数的思考
  2. windows命令行安装python3_Python3---windows安装与运行
  3. 牛客 - 牛牛的Link Power II(线段树)
  4. Spring Cloud Hystrix的请求合并
  5. 干货!Redis集群工作原理解析
  6. 拥有触觉分析能力,上交MIT获IROS 2020最佳论文奖
  7. lua的元表、模块和面向对象
  8. VMware虚拟机环境下配置centos的固定IP并用xshell连接
  9. 行车记录仪数据集_福特自动驾驶数据集公布 总体积达1.6TB或为数据最全的数据集之一...
  10. 怎么用计算机测试手速,火凤凰游戏APM实时手速测试器
  11. 22条创业军规(读书)
  12. 无损检测行业市场发展机遇分析及市场规模竞争战略可行性研究预测
  13. Python简单词云的制作
  14. IDEA怎么查看现在的项目使用的JDK版本?
  15. 如何通过U盘给笔记本安装Ubuntu系统
  16. SpringBoot项目——————签到与签退管理(源码分享)
  17. 黑白棋出现pass 的条件 java_JAVA黑白棋之学习感悟
  18. 英伟达 jetson xavier agx 开发(2)修改内核设备树
  19. 详解诊断数据库ODX-C
  20. sip信令常用的响应码

热门文章

  1. Java 8 你需要掌握的新特性
  2. PHP 遍历文件夹及文件类及处理类
  3. spring mvc+myibatis项目大致框架-spring mvc wendang
  4. 如何让普通用户执行一些root用户才能执行的命令
  5. cisco用户隔离配置
  6. python文本风格_Python的代码风格
  7. java canvas画矩形,HTML5 编程之Canvas
  8. mysql 关闭严格_mysql关闭严格模式
  9. 百度搜索(URL)中汉字转为什么编码问题
  10. astype()函数