You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无公网IP本地PC如何通过IntelliJ IDEA向远程Spark集群提交代码?

正好我之前也做过类似的操作,给你整理一套从本地IntelliJ IDEA开发Scala/Spark代码,再提交到远程华为云Spark集群的完整流程,都是实操验证过的:

本地IntelliJ IDEA配置远程Spark集群提交环境

一、先把本地基础环境对齐集群

  • 务必安装和集群完全匹配的版本:Scala 2.11.8、JDK 1.8.0_101,版本差一点都可能触发兼容性问题,踩过坑的人都懂😂
  • 打开IntelliJ IDEA,安装Scala插件(在Settings -> Plugins里搜索安装,装完重启IDE生效)

二、创建Spark项目并配置依赖

推荐用Maven管理项目,依赖更清晰:

  • 新建Scala-Maven项目,或者在现有Maven项目中添加Scala支持
  • pom.xml里添加Spark依赖,注意版本要和集群的Spark 2.0.1、Scala 2.11对应,而且要加<scope>provided</scope>避免和集群已有的依赖冲突:
<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.0.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

三、两种提交方式任你选

方式1:IDEA直接提交到远程集群(开发调试更方便)

  • 点击顶部菜单Run -> Edit Configurations,点+号选择Spark Application
  • 关键参数配置:
    • Main class:填你的Spark主类全路径(比如com.xf.MySparkDemo
    • Cluster manager:选Spark Standalone
    • Master URL:填远程集群master的地址spark://172.17.0.4:7077(默认端口7077,改了的话填你自己的端口)
    • JVM options:一定要加-Dspark.driver.host=你的本地PC公网IP!因为远程worker节点需要回调本地driver,局域网的话得做端口映射或者用VPN让集群能访问到你
    • 最后在Configuration标签页,选对项目模块的classpath,工作目录设为项目根目录

方式2:打包后通过命令行提交(正式运行更稳妥)

  • 先在IDEA里打包:Maven项目执行mvn clean package,生成瘦包就行(因为集群已有Spark依赖)
  • 用scp把jar包传到集群master节点:
scp target/your-spark-job.jar root@172.17.0.4:/opt/spark-jobs/
  • 登录到master节点,执行spark-submit命令:
spark-submit \
  --class com.xf.MySparkDemo \
  --master spark://172.17.0.4:7077 \
  /opt/spark-jobs/your-spark-job.jar

四、几个容易踩坑的注意点

  • 版本一致性!版本一致性!版本一致性!重要的事说三遍,本地和集群的Scala、Spark、JDK版本必须完全一致,不然各种ClassNotFoundException找上门
  • 如果本地在局域网,一定要确保集群能访问到你的本地IP,要么做端口映射,要么用VPN打通网络,不然worker连不上driver会报错
  • 集群防火墙要开放7077(master通信端口)以及driver的端口,避免连接被拒绝
  • 先写个简单的WordCount程序测试,跑通了再搞复杂业务逻辑

内容的提问来源于stack exchange,提问作者XF Xu

火山引擎 最新活动