本帖最后由 不二晨 于 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
|
|