大数据 - Spark开发环境(IDEA)

Spark运行模式

本地运行模式 (单机)

       该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,通常用来验证开发出来的应用程序逻辑上有没有问题。
       运行该模式非常简单,只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker守护进程( 只有集群的Standalone方式时,才需要这两个角色),也不用启动Hadoop的各服务(除非你要用到HDFS),这是和其他模式的区别哦,要记住才能理解。
spark-submit 和 spark-submit --master local 效果是一样的
       单机模拟集群,这种运行模式和Local[N]很像,不同的是,它会在单机启动多个进程来模拟集群下的分布式场景,而不像Local[N]这种多个线程只能在一个进程下委屈求全的共享资源。通常也是用来验证开发出来的应用程序逻辑上有没有问题,或者想使用Spark的计算框架而没有太多资源。
       用法是:提交应用程序时使用local-cluster[x,y,z]参数:x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数。
spark-submit --master local-cluster[2, 3, 1024]
(同理:spark-shell --master local-cluster[2, 3, 1024]用法也是一样的

Spark自带Cluster Manager的Standalone Client模式(集群)

启动方式
       master sbin/start-master.sh -h master-hostname
       slave sbin/start-slave.sh spark:master-hostname:端口
执行命令
       spark-submit --master spark://hadoop1:7077
       和单机运行的模式不同,这里必须在执行应用程序前,先启动Spark的Master和Worker守护进程。
代表着会在所有有Worker进程的节点上启动Executor来执行应用程序,此时产生的JVM进程如下:(非master节点,除了没有Master、SparkSubmit,其他进程都一样)

基于YARN的Resource Manager的Client模式(集群)

       现在大部分环境都是Spark跑在Hadoop集群中,所以为了做到资源能够均衡调度,会使用YARN来做为Spark的Cluster Manager,来为Spark的应用程序分配资源。
       在执行Spark应用程序前,要启动Hadoop的各种服务。由于已经有了资源管理器,所以不需要启动Spark的Master、Worker守护进程。可已理解为使用了hadoop的yarn来管理Spark的工作节点
执行命令spark-submit --master yarn

IDEA开发环境

       IDEA安装scala插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
       下载sacla2.11.12,msi安装包会自动配置环境变量 https://www.scala-lang.org/download/all.html
在这里插入图片描述
       创建项目,这里因为习惯使用maven的方式,也可以使用SBT。
在这里插入图片描述
       添加Scala SDK
在这里插入图片描述
       因为IDEA的maven方式会自动设置scala的版本,需要修改pom.xml对应的scala版本和添加Spark依赖包

  <properties>
    <scala.version>2.11.2</scala.version>
  </properties>
 <dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-core_2.11</artifactId>
   <version>2.4.0</version>
 </dependency>

       创建SparkDemo对象
在这里插入图片描述

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object SparkDemo {
  def main(args: Array[String]) {
    //待处理的文件
    // 创建目录 hadoop fs -mkdir -p spark_demo/input/ hadoop fs -mkdir -p spark_demo/input/
    // 上传linux本地文件到hdfs
    val testFile = "hdfs://hadoop1:9000/spark_demo/input/words.txt"
    val conf = new SparkConf().setAppName("SparkDemo Application")
      .setMaster("local")
      //远程调试spark standalone集群
      //.setJars(List("E:\\OneDrive\\study\\spark\\out\\artifacts\\spark_jar\\spark.jar")).setMaster("spark://hadoop1:7077")
    val sc = new SparkContext(conf)
    val rdd = sc.textFile(testFile)
    //处理之后文件路径
    val wordcount = rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).map(x => (x._2,x._1)).sortByKey(false).map(x => (x._2,x._1))
    wordcount.saveAsTextFile( "hdfs://hadoop1:9000/spark_demo/out/"+System.currentTimeMillis())
    sc.stop()
  }
}

       上传待处理的文档到hdfs。

[hadoop@hadoop1 ~]$ vi /home/hadoop/words.txt

       随便输入几个单词保存退出。

[hadoop@hadoop1 ~]$ hadoop fs -put /home/hadoop/words.txt /spark_demo/input/

       代码完成之后,右键选择run “SparkApp”,运行程序进行功能测试。
       如遇到程序报错java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries,这是因为windows环境变量不兼容的原因。
       解决办法:
       下载winutils地址https://github.com/srccodes/hadoop-common-2.2.0-bin下载解压
       复制winutils.exe winutils.pdb到之前配置好的hadoop/bin目录下
       目录 http://hadoop1:50070/explorer.html 查看输出结果
在这里插入图片描述

用spark-submit方式

       打包SparkApp程序:File—>preject structure —>from modules with dependencies:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
       可以看到spark.jar编译打包在项目out文件,然后上传spark.jar到/home/hadoop/下,用spark-submit方式测试jar包:

[hadoop@hadoop1 ~]$ cd /app/hadoop/spark-2.4.0-bin-hadoop2.7/
[hadoop@hadoop1 spark-2.4.0-bin-hadoop2.7]$ bin/spark-submit  --master yarn --deploy-mode client  /home/hadoop/spark.jar

远程调试spark standalone集群

       启动spark standalone集群模式

[hadoop@hadoop1 spark-2.4.0-bin-hadoop2.7]$ cd sbin/./start-all.sh
[hadoop@hadoop1 sbin]$ ./start-all.sh

       将SparkDemo中的

  val conf = new SparkConf().setAppName("SparkDemo Application")
  .setMaster("local")

        改成

 val conf = new SparkConf().setAppName("SparkDemo Application")
.setJars(List("E:\\OneDrive\\study\\spark\\out\\artifacts\\spark_jar\\spark.jar")).setMaster("spark://hadoop1:7077")

       Github地址:https://github.com/lyhkmm/spark-demo

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值