上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

pyspark的部署,standalone模式和yarn模式的原理以及一些运用

guduadmin11天前

开启spark服务之前要先优先打开hdfs服务和相应的历史服务器

standalone模式

  • hdfs开启
    start-dfs.sh
    
    • yarn开启
      $HADOOP_HOME/sbin/start-yarn.sh
      
      • 开启yarn的历史服务器
        $HADOOP_HOME/bin/mapred --daemon start historyserver
        
        • 开启spark的历史服务器

          在spark/sbin目录下执行

          start-history-server.sh
          
          • 开启spark服务

            在spark/sbin目录下执行

            ./start-all.sh
            

            要注意不要直接执行start-all,不然是启动hdfs服务的

            • 访问sparkmaster服务

              观察spark-master是否处于工作状态中,可以访问{master-node}:8080端口,其中会给出master节点的工作端口和地址。

              通过这个地址就能够创建standalone状态的spark集群服务。

            • 观察spark程序运行状态

              在spark job运行的过程中,可以访问{master-node}:4040端口,会给出进程具体的工作状态过程。

              要注意在job结束后该端口就会被关闭,无法访问。

              spark程序中Job、State、Task三个概念之间的关系

              一个spark程序(Application)可以被拆分成多个job,每个job又可以被拆分成多个state(stage),

              每个state又会分出多个task来执行。

              每个task占据一个线程

              spark中线程和进程之间的关系

              spark每个task占据一个线程

              每次提交spark的applicatio任务,master(Driver)节点会分析该application,然后决定要使用多少个executor,每个executor会占据一个进程。每个worker节点中都包含一个executor进程。

              driver会将一个application根据action算子的数量,将一个application拆分成多个job,在每个job的内部,根据有向无环图(DAG)再将一个job划分成多个stage,每个stage的内部也根据DAG拆分成多个task,每个task占据一个线程。

              DAG scheduler负责任务的拆分,然后将taskset交给task manager,task manager负责将task放在具体的executor上执行。

              spark standalone HA 模式

              standalone 存在master单点故障的问题,即master一旦宕机,则该standalone集群即不可用

              解决方法:使用zookeeper的standby masters

              • 设置多个master节点,但是保证只有一个master处于激活状态,其余的master节点都是处于standby状态
              • 当一个master宕机的时候,另一个standby的master就会被激活
              • 系统的信息都被持久化到了文件系统中,包括worker、driver、application等信息,因此,后续提交的job就会由新的master来执行,正在进行中的job不受影响

                启动zookeeper

                在zookeeper/bin目录下执行

                ./zkServer.sh start
                

                spark on yarn 模式

                spark on yarn模式就是不需要创建spark独立的集群,让spark依赖于yarn集群。

                在standalone模式中,如果已经有了yarn集群,那么在单独部署一个spark集群,就对资源的利用率进行了降低。

                on yarn模式中,不需要部署spark集群,只需要通过一个服务器充当客户端将spark部署到yarn集群上即可。

                spark on yarn的本质

                • master 角色由yarn的resourcemanager担当
                • worker的角色由NodeManger担当
                • Driver运行在yarn的容器内或者在提交任务的客户端进程中
                • executor运行在yarn的容器中

                  spark on yarn的部署

                  确保两个环境变量配置好了

                  • HADOOP_CONF_DIR
                  • YARN_CONF_DIR

                    spark on yarn的两种模式

                    两种模式的主要区别在于driver的运行位置不同

                    • cluster模式

                      driver运行在yarn容器的内部,和applicationmaster运行在同一个容器内

                      • 缺点:需要进入到容器的内部才能够看到driver的日志,client模式可以直接在客户端的标准流中看到日志的输出
                      • 优点:通讯效率较高、较为稳定,适合生产模式
                      • client模式

                        driver运行在客户端进程中,运行在spark-submit的进程中。

                        • 缺点:通讯效率较cluster模式相对较低,且基于客户端进程,较为不稳定
                        • 优点:输出日志较容易观察,适合测试开发环境

                          client模式

                          pyspark的部署,standalone模式和yarn模式的原理以及一些运用,在这里插入图片描述,第1张

                          cluster模式

                          pyspark的部署,standalone模式和yarn模式的原理以及一些运用,在这里插入图片描述,第2张

                          pyspark on spark原理

                          pyspark的部署,standalone模式和yarn模式的原理以及一些运用,在这里插入图片描述,第3张

                          • driver端

                            python通过socket与spark创建的driver运行的底层JVM进行交互,代码通过py4j转换成java代码,创建对应的sc,实现与spark的运行

                          • worker端

                            worker上会创建一个pyspark的守护进程,driver的指令发送给executor的jvm,jvm将其转发给pyspark的守护进程,守护进程将该指令调度到运行中的python程序上。

                            本质上worker端的python进程在工作,但是指令来自于jvm,通过RPC协议发送给python进程

网友评论

搜索
最新文章
热门文章
热门标签