zoukankan      html  css  js  c++  java
  • Spark实战(七)spark streaming +kafka(Python版)

    spark常用的启动方式

    一、Local(本地模式)

       Spark单机运行,一般用于开发测试。可以通过Local[N]来设置,其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。spark-submit 和 spark-submit --master local 效果是一样的,同理spark-shell 和 spark-shell --master local 效果是一样的
       运行该模式非常简单,只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker守护进程,也不用启动Hadoop的各服务(除非需要用到HDFS)
       这个SparkSubmit进程既是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色。
       示例如下:

    spark-submit --class JavaWordCount --master local[10] JavaWordCount.jar file:///tmp/test.txt 
    
    代码中设置:
    spark = SparkSession
                .builder
                .appName("PythonWordCount")
                .master("local")
                .getOrCreate()
    
    sc = spark.sparkContext
    parsed =urllib.parse.urlparse("http://www.baidu.com")
    print(parsed.netloc)
    
    spark-submit --master local[2] 代表会有2个线程(每个线程一个core)来并发执行应用程序。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    本地伪集群运行模式:

    spark-submit --master local-cluster[2, 3, 1024]
    
    • 1

       上面这条命令代表会使用2个executor进程,每个进程分配3个core和1G的内存,来运行应用程序。SparkSubmit依然充当全能角色,又是Client进程,又是driver程序,还有点资源管理的作用。生成的两个CoarseGrainedExecutorBackend,就是用来并发执行程序的进程。

    二、Standalone模式

    1.Spark自带Cluster Manager的Standalone Client模式:

       构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。和单机运行的模式不同,这里必须在执行应用程序前,先启动Spark的Master和Worker守护进程。这种运行模式,可以使用Spark的8080 来观察资源和应用程序的执行情况了。
       启动示例如下:

    spark-submit --master spark://mini1:7077或者 spark-submit --master spark://mini1:7077 --deploy-mode client
    
     spark = SparkSession
                 .builder
                 .appName("PythonWordCount")
                 .master("spark://mini1:7077")
                 .getOrCreate()
         sc = spark.sparkContext
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.spark自带cluster manager的standalone cluster模式(集群):

       示例如下:

    spark-submit --master spark://mini1:6066 --deploy-mode cluster
    
    • 1

       客户端的SparkSubmit进程会在应用程序提交给集群之后就退出,同时Master会在集群中选择一个Worker进程生成一个子进程DriverWrapper来启动driver程序,而该DriverWrapper 进程会占用Worker进程的一个core,所以同样的资源下配置下,会比第3种运行模式,少用1个core来参与计算。
       

    三、Spark on Yarn模式

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

       Spark客户端直接连接Yarn。不需要额外构建Spark集群。现在越来越多的场景,都是Spark跑在Hadoop集群中,所以为了做到资源能够均衡调度,会使用YARN来做为Spark的Cluster Manager,来为Spark的应用程序分配资源。
       按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式: yarn-client模式、yarn-cluster模式。当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行。Spark可以使得多个Tasks在同一个容器里面运行。
       使用如下命令执行应用程序:

    spark-submit --master yarn 
    或者 spark-submit --master yarn --deploy-mode client
    
    • 1
    • 2

       在Resource Manager节点上提交应用程序,会生成SparkSubmit进程,该进程会执行driver程序。
       RM会在集群中的某个NodeManager上,启动一个ExecutorLauncher进程,来做为ApplicationMaster。另外,也会在多个NodeManager上生成CoarseGrainedExecutorBackend进程来并发的执行应用程序。

    2.基于YARN的Resource Manager的Custer模式(集群)

       使用如下命令执行应用程序:

    spark-submit --master yarn --deploy-mode cluster
    
    • 1

       在Resource Manager端提交应用程序,会生成SparkSubmit进程,该进程只用来做Client端,应用程序提交给集群后,就会删除该进程。
       Resource Manager在集群中的某个NodeManager上运行ApplicationMaster,该AM同时会执行driver程序。紧接着,会在各NodeManager上运行
       应用程序的结果,会在执行driver程序的节点的stdout中输出,而不是打印在屏幕上。

     conf = SparkConf()
        conf.setAppName("Spark")
        conf.setMaster('yarn') # spark standalone
        conf.set('spark.executor.instances', 3) # cluster on yarn
        conf.set('spark.executor.memory', '1g')
        conf.set('spark.executor.cores', '1')
        # conf.set('spark.cores.max', '2')
        # conf.set('spark.logConf', True)
        conf.set('spark.streaming.blockInterval', 1000*4)  # restart receiver interval
    
    sc = SparkContext(conf = conf)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    四、Spark on Mesos模式

       Spark客户端直接连接Mesos。不需要额外构建Spark集群。
       启动示例如下

    ./spark-shell --master mesos://host:port
    ./spark-shell --master mesos://host:port --deploy-mode client
    ./spark-shell --master mesos://host:port --deploy-mode cluster
  • 相关阅读:
    JQuery常用函数及功能小结
    JSP +Tomcat数据库访问
    JSP+Tomcat开发环境安装及配置
    去除Win7快捷方式的箭头
    UK Day46 MongoDB Atlas的创建+配置+连接集群
    UK Day46 MongoDB 文档基本操作 增删改查
    UK Day46 MongoDB 集合基本操作
    UK Day46 MongoDB 聚合(aggregate)操作
    MongoDB M001第五章 索引和聚合管道
    公告!
  • 原文地址:https://www.cnblogs.com/ExMan/p/14318576.html
Copyright © 2011-2022 走看看