zoukankan      html  css  js  c++  java
  • 运行Spark程序的几种模式

    一. local 模式 -- 所有程序都运行在一个JVM中,主要用于开发时测试
        无需开启任何服务,可直接运行 ./bin/run-example 或 ./bin/spark-submit 如:
        ./bin/run-example SparkPi 10
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[4] ./examples/jars/spark-examples_2.11-2.1.1.jar 100
        local[4] 代表会有4个线程(每个线程一个core)来并发执行应用程序。

        此模式下,
            1. 这个SparkSubmit进程又当爹、又当妈,既是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色
            2.程序的运行状态可通过 http://<driver-node>:4040 查看,但是这是临时的,程序运行完后,这个UI也就失效了。我们可以启动Spark History Server,这
        样就可以看到历史运行程序的信息了。

        开启Spark History Server,可以在spark-defaults.conf里配置如下信息:
        spark.eventLog.enabled             true
        spark.eventLog.dir                 hdfs://ubuntu1:9000/spark/eventlog
        spark.history.fs.logDirectory      hdfs://ubuntu1:9000/spark/eventlog
        
        通过: 192.168.137.11:18080 访问 history server //如果启动history的话


    二. 测试或实验性质的本地伪集群运行模式(单机模拟集群) -- 在单机启动多个进程来模拟集群下的分布式场景
        无需开启任何服务,可直接运行如下命令:
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local-cluster[2,3,512] ./examples/jars/spark-examples_2.11-2.1.1.jar 20
        local-cluster[x,y,z]参数:x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数。
        遇到的问题:sc.executorMemory默认值是1024M,如果我们设置的z的值比1024小的话,就会抛错。可以在spark-defaults.conf 里配置sc.executorMemory的大小。如:
        spark.executor.memory              512m
        设置成512(单位M)的原因是:用的是本地VM,总共内存也没多少。但是如果设置小于450m的话,还是会报错。
        此模式下:SparkSubmit依然充当全能角色,又是Client进程,又是driver程序,还有点资源管理的作用
        
        
    三. Spark自带Cluster Manager的Standalone Client模式(集群)
        需要先启动Spark的Master和Worker守护进程。提交一个任务的命令如下:
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://ubuntu1:7077 ./examples/jars/spark-examples_2.11-2.1.1.jar 100
        此模式下,1. 会在所有有Worker进程的节点上启动Executor来执行应用程序。
                  2. Master进程做为cluster manager,用来对应用程序申请的资源进行管理;
                  3. SparkSubmit 做为Client端和运行driver程序;
                  4. 运行结果在Shell里可见
        注意,Worker进程生成几个Executor,每个Executor使用几个core,这些都可以在spark-env.sh里面配置


        需要配置项:
        1. slaves 文件
        2. spark-env.sh
            export JAVA_HOME=/opt/programs/jdk1.8.0_131        
            export SPARK_MASTER_IP=ubuntu1
            export SPARK_WORKER_CORES=2
            export SPARK_EXECUTOR_MEMORY=512m
            export SPARK_WORKER_MEMORY=512m
            export SPARK_DRIVER_MEMORY=512m
        
        提交一个Spark程序后,可以通过下面的UI查看任务运行状态。
        UI: 192.168.137.11:8080
            192.168.137.11:18080 //如果启动history的话
            

    四. spark自带cluster manager的standalone cluster模式(集群)
        需要先启动Spark的Master和Worker守护进程。提交一个任务的命令如下:
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://ubuntu1:7077 --deploy-mode cluster  ./examples/jars/spark-examples_2.11-2.1.1.jar 50
        此模式下,1. 客户端的SparkSubmit进程会在应用程序提交给集群之后就退出。所以在shell里,运行结果不可见
                  2. Master会在集群中选择一个Worker进程生成一个子进程DriverWrapper来启动driver程序
                  3. 而该DriverWrapper 进程会占用Worker进程的一个core,所以同样的资源下配置下,会比第3种运行模式,少用1个core来参与计算
                  4. 应用程序的结果,会在执行driver程序的节点的stdout中输出
        
        需要配置项:同(三)
        

    五. 基于YARN的Resource Manager的Client模式(集群)
        需要先启动 Hadoop 的 YARN。不需要启动Spark的Master、Worker守护进程。运行如下命令
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client  ./examples/jars/spark-examples_2.11-2.1.1.jar 100
        此模式下:1. 在Resource Manager节点上提交应用程序,会生成SparkSubmit进程,该进程会执行driver程序。
                  2. RM会在集群中的某个NodeManager上,启动一个ExecutorLauncher进程,来做为ApplicationMaster
                  3. 也会在多个NodeManager上生成CoarseGrainedExecutorBackend进程来并发的执行应用程序
                  
        
        Yarn 集群模式需要配置项:
        1. spark-env.sh
        export JAVA_HOME=/opt/programs/jdk1.8.0_131    
        export HADOOP_HOME=/opt/programs/hadoop-2.7.3
        export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
        export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
        export SPARK_HOME=/opt/programs/spark-2.1.1-bin-hadoop2.7
        

    六. 基于YARN的Resource Manager的Cluster模式(集群)
        需要先启动 Hadoop 的 YARN。不需要启动Spark的Master、Worker守护进程。运行如下命令
        ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster  ./examples/jars/spark-examples_2.11-2.1.1.jar 100
        此模式下:1. 在Resource Manager端提交应用程序,会生成SparkSubmit进程,该进程只用来做Client端,应用程序提交给集群后,就会删除该进程。
                  2. Resource Manager在集群中的某个NodeManager上运行ApplicationMaster,该AM同时会执行driver程序
                  3. 紧接着,会在各NodeManager上运行CoarseGrainedExecutorBackend来并发执行应用程序
                  4. 应用程序的结果,会在执行driver程序的节点的stdout中输出,而不是打印在屏幕上。
                  
        
        Yarn 集群模式需要配置项:同(五)

  • 相关阅读:
    python 函数和函数名的应用
    Python 文件操作
    django报错信息解决方法
    小数据池、代码块以及深浅拷贝
    python 字典的增删改查
    ps 整理通道
    unity 捏脸相关
    Unity3D Blend Shape简析
    unity 乳摇
    爱丽丝的头发是怎么制作的
  • 原文地址:https://www.cnblogs.com/langfanyun/p/7800743.html
Copyright © 2011-2022 走看看