zoukankan      html  css  js  c++  java
  • 【Spark】Spark必不可少的多种集群环境搭建方法


    Local模式运行环境搭建

    小知识

    Local模式常用语本地开发测试,分为Local单线程Local-cluster多线程,也被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,直接运行在本地,便于调试,通常用来验证开发出来的应用程序逻辑上有没有问题。
    其中N代表可以使用N个线程,每个线程拥有一个core。 N是一个正整数,表示启动多少个线程来模拟spark的集群的运行。如果不指定N,则默认是1个线程(该线程有1个core)。
    如果是local[*],表示使用与CPU核实相等个数的线程数来运行spark的程序 (Run Spark locally with as many worker threads as logical cores on your machine.)

    搭建步骤

    一、上传压缩包并解压

    将编译后的压缩包上传到/export/softwares目录下并解压,这里有编译CDH版本Spark的方法

    cd /export/softwares
    tar -zxvf spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz -C ../servers/
    
    二、修改Spark配置文件

    复制出一份即可

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    cp spark-env.sh.template spark-env.sh
    
    三、启动验证进入Spark-shell
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    ./bin/spark-shell  --master  local
    

    退出

    :quit
    
    四、运行Spark自带的测试jar包
     bin/spark-submit   通过spark-submit脚本来执行任务
    > --class org.apache.spark.examples.SparkPi    指定我们main方法所在的程序
    > --master local[2]     指定master所在的服务器
    > --executor-memory 1G   executor分配内存
    > --total-executor-cores 2   一共给分配多少个CPU核数
    > /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar    指定我们需要运行的jar包的路径
    > 100    参数,迭代计算次数
    

    standAlone模式运行环境搭建

    搭建步骤

    一、修改配置文件

    修改spark-env.sh,添加指定内容

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    vim spark-env.sh
    
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    export SPARK_MASTER_HOST=node01
    export SPARK_MASTER_PORT=7077
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
    

    修改slaves文件

    cp slaves.template slaves
    vim slaves
    
    node02
    node03
    

    修改spark-defaults.conf
    为了方便调试开发,一般都会经过配置将spark程序的运行日志保存到HDFS上,方便运行程序之后的开发调试

    cp spark-defaults.conf.template spark-defaults.conf
    vim spark-defaults.conf
    
    spark.eventLog.enabled  true
    spark.eventLog.dir       hdfs://node01:8020/spark_log
    spark.eventLog.compress true
    

    在HDFS上穿件日志文件存放的目录

    hdfs dfs -mkdir -p /spark_log
    
    三、将配置好的安装包分发到其他机器
    cd /export/servers/
    scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node02:$PWD
    scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node03:$PWD
    
    四、启动Spark程序

    在第一台服务器执行以下命令

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    sbin/start-all.sh
    sbin/start-history-server.sh
    
    五、页面访问

    访问Spark:http://node01:8080/
    查看spark任务的历史日志:http://node01:4000/

    六、进入Spark-shell测试启动
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    bin/spark-shell  --master spark://node01:7077
    
    :quit
    
    七、运行Spark自带的测试jar包
    bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master spark://node01:7077 
    --executor-memory 1G 
    --total-executor-cores 2 
    /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar 
    500
    

    HA模式运行环境搭建

    搭建步骤

    一、停止Spark集群
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    sbin/stop-all.sh
    sbin/stop-history-server.sh
    
    二、修改配置文件

    修改Spark-env.sh

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    vim spark-env.sh
    
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    # 注释这行
    # export SPARK_MASTER_HOST=node01
    
    export SPARK_MASTER_PORT=7077
    
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
    
    # 添加这行
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"
    

    剩下修改slaves文件、spark-defaults.conf在搭建standAlone集群已经修改

    三、配置文件分发到其他服务器
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    scp spark-env.sh node02:$PWD
    scp spark-env.sh node03:$PWD
    
    四、启动Spark集群

    在node01启动

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    sbin/start-all.sh
    sbin/start-history-server.sh
    

    可以在node02和node03都启动master节点

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    sbin/start-master.sh
    

    这样 http://node02:8080/http://node03:8080/都可以访问

    五、进入Spark-shell
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/
    bin/spark-shell --master spark://node01:7077,node02:7077,node03:7077
    
    :quit
    
    六、运行Spark自带的测试jar包
    bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master spark://node01:7077,node02:7077,node03:7077 
    --executor-memory 1G 
    --total-executor-cores 2 
    /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar 
    100
    

    On Yarn模式运行环境搭建

    官方文档说明

    http://spark.apache.org/docs/latest/running-on-yarn.html
    http://spark.apache.org/docs/latest/running-on-yarn.html#configuration
    On Yarn有两种部署模式:
    Client Mode —— In client mode, the driver runs in the client process, and the application master is only used for requesting resources from YARN. Driver程序运行在客户端进程里面,appmaster仅仅用于资源的申请
    Cluster Mode —— the Spark driver runs inside an application master process which is managed by YARN on the cluster, and the client can go away after initiating the application. Spark驱动程序在应用程序主进程中运行,应用程序主进程由集群上的YARN管理,客户端可以在启动应用程序后离开。 适用于实际工作环境

    tips

    如果Spark程序是运行在yarn上,就不需要Spark集群了,只需要找任意一台服务器配置Spark的客户端提交任务到yarn集群上即可
    如果yarn集群不够,可以在hadoop的配置文件yarn-site.xml中添加两个配置并重启yarn集群,用来跳过yarn集群资源的检查

    <property>
    	<name> yarn.nodemanager.pmem-check-enabled</name
    	<value>false</value>
    </property>
    <property>
    	<name> yarn.nodemanager.vmem-check-enabled</name
    	<value>false</value>
    </property>
    

    搭建步骤

    一、三台机器都修改spark-env.sh
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    vim spark-env.sh
    

    添加以下配置

    export HADOOP_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
    export YARN_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
    
    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf
    scp spark-env.sh node02:$PWD
    scp spark-env.sh node03:$PWD
    
    二、三台机器添加spark环境变量
    vim /etc/profile
    
    export SPARK_HOME=/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    export PATH=:$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
    
    source /etc/profile
    
    三、任务提交
    1.Client模式

    ① 步骤
    在node03服务器执行以下命令

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    
    bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master yarn 
    --deploy-mode client 
    /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar 
    10
    

    ② 任务提交过程解析
    在这里插入图片描述
    Client模式更适用于测试,因为Driver运行在本地,会与yarn集群中的Executor进行大量的通信,如此一来会造成客户机网卡流量的大量增加。
    注意: ApplicationMaster有launchExecutor和申请资源的功能,并没有作业调度的功能。

    2.Cluster模式

    ① 步骤
    在node03执行以下命令

    cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
    
    bin/spark-submit --class org.apache.spark.examples.SparkPi 
    --master yarn 
    --deploy-mode cluster 
    --driver-memory 1g 
    --executor-memory 1g 
    --executor-cores 1 
    /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar 
    10
    

    ② 任务提交过程分析
    在这里插入图片描述
    Cluster模式主要用于实际工作当中,因为Driver运行在Yarn集群的某一台NodeManager中,每次提交任务的Driver所在的机器都是随机的,不会产生某一台机器网卡流量激增的现象,缺点是任务提交后看不到日志,只能通过yarn查看日志
    本模式下的ApplicationMaster除了launchExecutor和申请资源的功能外,也拥有了任务调度的功能。
    停止集群任务命令:yarn application -kill applicationID

    四、访问历史日志界面

    http://node01:8088/cluster/app/applicationId

  • 相关阅读:
    Inno Setup区段之Dirs篇
    Inno Setup区段之Tasks篇
    leetcode刷题-69x的平方根
    7.27 判断子序列
    7.26 矩阵中的最长递增路径
    PMP | 备考笔记
    数据结构--数组存储二叉树(Java)
    数据结构--哈希表(Java)
    查找--斐波那契查找(Java)
    牛客网--字节跳动面试题--特征提取
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772415.html
Copyright © 2011-2022 走看看