Spark项目学习-慕课网日志分析-days5-Spark on Yarn

1. 概述

    (1) 在Spark中,支持4种运行模式:

    1)local:开发时使用

    2)standalone:是Spark自带的,如果一个集群是Standalone的话,那就需要在多台机器上同时部署Spark环境(不推荐)

    3)YARN:建议使用,统一使用YARN进行整个集群作业(MR,Spark)的资源调度

    4)Mesos:国内用的少

不管使用什么模式,Spark应用程序的代码是一模一样的,只需要使用--master来指定就好

    spark-submit --master   具体解析:http://spark.apache.org/docs/latest/submitting-applications.html

    (2)Spark支持可插拔的集群管理模式,对于YARN而言,Spark Application相当于客户端

    1)Client:Driver运行在客户端上(提交Spark作业的机器)

        Client会和请求到的Container进行通信来完成作业的调度和执行,Client是不能退出的

        日志信息在控制台输出,便于测试

        --master yarn

    2)Cluster:Driver运行在ApplicationMaster中(跑在YARN上)

        Client只要提交完作业就可以关掉,因为作业已经在YARN上运行了

        日志在终端是看不到的,因为日志在driver上,只能通过yarn -logs application 命令进行查看

        --master yarn cluster

    3)两种模式对比:

        前者YARN只需要申请资源,后者需要申请执行和执行

    4)Spark on YARN的使用

        设置HADOOP_CONF_DIR

        spark-shell/spark-submit运行在YARN上

2. 将程序运行在YARN之上

    (1)使用Spark完成数据清洗操作:运行在YARN上

        1. 打包时要注意,pom.xml中需要添加如下plugin

注意--files 在Spark中的使用

(2)TopN统计Spark作业:运行在YARN上

    1)设置参数从外界传入

    2)程序编译及打包

    3)在linux表上创建mysql

3. 项目性能调优

    1)集群优化

        1.存储格式的选择:行存储,列存储:www.infoq.com/cn/articles/bigdata-store-choose/

            杭存储写入是一次完成的,列是多次

    2)压缩格式选择:https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-compression-analysis/

    3)选择高性能的算子(主要体现在统计操作)

        先通过list把记录构建好,然后一起插入

        设置手工提交: connection.setAutoCommit(false)//设置手动提交

                pstmt.addBatch()

                pstmt.executeBatch()//统一批量处理

                connection.commit() //手动提交

    4)复用已有的数据

    5)参数优化:

        并行度:spark.sql.shuffle.partitions 默认是200

        分区字段类型推测:spark.sql.sources.partitionColumnTypeInference.enabled(默认开启)

猜你喜欢

转载自blog.csdn.net/canglan211/article/details/82953575