黑马程序员技术交流社区

标题: 【上海校区】Spark项目学习--days5-Spark on Yarn [打印本页]

作者: 不二晨    时间: 2018-10-8 10:56
标题: 【上海校区】Spark项目学习--days5-Spark on Yarn
本帖最后由 不二晨 于 2018-10-9 11:00 编辑

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(默认开启)

【转载】https://blog.csdn.net/canglan211 ... 575?utm_source=copy

作者: 不二晨    时间: 2018-10-10 11:41
奈斯
作者: 魔都黑马少年梦    时间: 2018-11-1 16:33





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2