[spark]-Spark2.x集群搭建与参数详解
在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的。我们可以了解到每个参数配置的作用是什么。这里将详细介绍Spark集群搭建以及xml参数配置。Spark的集群搭建分为分布式与伪分布式,分布式主要是与hadoop Yarn集群配合使用,伪分布式主要是单独使用作为测试。
Spark完全分布式搭建
由于Hadoop和Spark集群占用的内存较高,这种完全分布式集群的搭建对于跑应用来说太吃力,如果有服务器可以尝试,这里采用虚拟机方式实验,详情请看我的博客园:Hadoop2.8与spark2.1集群搭建
这里是一个早前的实验,但是确实没有怎么使用,因为当时对参数没有做优化,也没有理解其中个参数的含义。所以跑应用很吃力,而且会非常卡。下面直接介绍其中的各个参数。
Spark配置参数详解
上一步配置Spark集群的时候我们使用了三个节点:一个Master ,两个Worker,我们启动脚本的时候就会启动三个守护进程,分别名为Master,worker,worker。
conf/slaves.xml
配置:在这里我们指定哪些机器作为Worker节点。伪分布式的话不要配置,因为Master,worker会在一个节点上启动。
conf/spark-env.sh
配置:核心配置文件,配置的是spark应用的运行环境,详细配置了各个组件的细节。下面是他的一些参数
参数 | 简介 |
---|---|
SPARK_MASTER_IP | 指定master进程所在的机器的ip地址 |
SPARK_MASTER_PORT | 指定master监听的端口号(默认是7077) |
SPARK_MASTER_WEBUIPORT | 指定master web ui的端口号(默认是8080) |
SPARK_LOCAL_DIRS | 指spark的工作目录,包括了shuffle map输出文件,以及持久化到磁盘的RDD等 |
SPARK_WORKER_PORT | worker节点的端口号,默认是随机的 |
SPARK_WORKER_CORES | worker节点上,允许spark作业使用的最大cpu数量,默认是机器上所有的cpu core |
SPARK_WORKER_MEMORY | worker节点上,允许spark作业使用的最大内存量,格式为1000m,2g等,默认最小是1g内存 |
SPARK_WORKER_INSTANCES | 当前机器上的worker进程数量,默认是1,可以设置成多个,但是这时一定要设置SPARK_WORKER_CORES,限制每个worker的cpu数量 |
SPARK_WORKER_DIR | spark作业的工作目录,包括了作业的日志等,默认是spark_home/work |
SPARK_DAEMON_MEMORY | 分配给master和worker进程自己本身的内存,默认是1g |
SPARK_PUBLISC_DNS | master和worker的公共dns域名,默认是空 |
其中一些参数跟我们单独启动master和worker进程的命令行参数后面添加参数是一样的,如:sbin/start-master.sh --port 7078(或--memory 500m)
,类似这种方式,可以指定一样的配置属性。我们可以在spark-evn.sh中就去配置好这些参数,但是有时候需要根据情况临时需改配置,我们就可以使用这种在启动Master/Worker脚本时,添加参数的方式来进行配置。通常还是在脚本spark-env.sh中配置好,脚本命令行参数通常用于临时的情况。
✌( •̀ ω •́ )也就是说,有些master和worker的配置,可以在spark-env.sh中部署时即配置,但是也可以在start-slave.sh脚本启动进程时命令行参数设置但是命令行参数的优先级比较高,会覆盖掉spark-env.sh中的配置
。
参数 | 简介 |
---|---|
SPARK_MASTER_OPTS | 设置master的额外参数,使用"-Dx=y"设置各个参数 |
比如说export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"
参数(x) | 默认值(y) | 简介 |
---|---|---|
spark.deploy.defaultCores | 无限大 | 每个spark作业最多在standalone集群中使用多少个cpu core,默认是无限大,有多少用多少 |
spark.deploy.retainedApplications | 200 | 在spark web ui上最多显示多少个application的信息 |
spark.deploy.retainedDrivers | 200 | 在spark web ui上最多显示多少个driver的信息 |
spark.deploy.spreadOut | true | 资源调度策略,spreadOut会尽量将application的executor进程分布在更多worker上,适合基于hdfs文件计算的情况,提升数据本地化概率;非spreadOut会尽量将executor分配到一个worker上,适合计算密集型的作业 |
spark.deploy.timeout | 60 | 单位秒,一个worker多少时间没有响应之后,master认为worker挂掉了 |
参数 | 简介 |
---|---|
SPARK_WORKEROPTS | worker的额外参数,使用"-Dx=y"设置各个参数 |
SPARK_WORKEROPTS的一些参数配置(x,y)如下:
参数(x) | 默认值(y) | 简介 |
---|---|---|
spark.worker.cleanup.enabled | false | 是否启动自动清理worker工作目录,默认是false |
spark.worker.cleanup.interval | 1800 | 单位秒,自动清理的时间间隔,默认是30分钟 |
spark.worker.cleanup.appDataTtl | 7 * 24 * 3600 | 默认将一个spark作业的文件在worker工作目录保留多少时间,默认是7天 |
参数 | 简介 |
---|---|
SPARK_DAEMON_JAVAOPTS | 设置master和worker自己的jvm参数,使用"-Dx=y"设置各个参数 |
这里一些内存相关的参数大家看过就明白了,为什么之前用分布式的集群,每个worker节点才1个g内存,根本是没有办法使用standalone模式和yarn模式运行作业的,仅仅是启动进程耗费的内存就已经非常严重了,其中一些内存分配不合理就会导致启动的时候资源分配失败.如果还要在Yarn模式上运行的话,Hadoop集群进程还会占用一部分内存。所以说Spark使用是非常消耗资源的。有时候资源也会成为性能的一个瓶颈。
[spark]-Spark2.x集群搭建与参数详解的更多相关文章
- Spark —— 高可用集群搭建
一.集群规划 这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop00 ...
- Spark高可用集群搭建
Spark高可用集群搭建 node1 node2 node3 1.node1修改spark-env.sh,注释掉hadoop(就不用开启Hadoop集群了),添加如下语句 export ...
- mongo 3.4分片集群系列之五:详解平衡器
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- mongo 3.4分片集群系列之六:详解配置数据库
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- spark完全分布式集群搭建
最近学习Spark,因此想把相关内容记录下来,方便他人参考,也方便自己回忆吧 spark开发环境的介绍资料很多,大同小异,很多不能一次配置成功,我以自己的实际操作过程为准,详细记录下来. 1.基本运行 ...
- spark教程(一)-集群搭建
spark 简介 建议先阅读我的博客 大数据基础架构 spark 一个通用的计算引擎,专门为大规模数据处理而设计,与 mapreduce 类似,不同的是,mapreduce 把中间结果 写入 hdfs ...
- Kafka_2.12-2.5.1集群搭建与参数调优
Kafka是目前业界使用最广泛的消息队列.数据流转常见这样的业务场景,客户端把采集到的日志推送给Kafka,业务方可以消费Kafka的数据落地HDFS,用于离线分析,也可以使用Spark或Flink消 ...
- spark学习7(spark2.0集群搭建)
第一步:安装spark 将官网下载好的spark-2.0.0-bin-hadoop2.6.tgz上传到/usr/spark目录下.这里需注意的是spark和hadoop有对应版本关系 [root@sp ...
- spark高可用集群搭建及运行测试
文中的所有操作都是在之前的文章spark集群的搭建基础上建立的,重复操作已经简写: 之前的配置中使用了master01.slave01.slave02.slave03: 本篇文章还要添加master0 ...
随机推荐
- Leetcode题库——5.最长回文子串
@author: ZZQ @software: PyCharm @file: longestPalindrome.py @time: 2018/9/18 20:06 要求:给定一个字符串 s,找到 s ...
- “吃神么,买神么”的第一个Sprint计划(第六天)
“吃神么,买神么”项目Sprint计划 ——5.26 星期二(第六天)立会内容与进度 摘要:logo最终出来了,,背景也出来了,可以开始将完成的部分放到同一个文件中,决定剩下的时间把昨晚的部分贴上去 ...
- Android-TCP编程
以下是PC端代码: package com.example.sxb.myapplication;import java.io.BufferedReader;import java.io.IOExcep ...
- 团队作业5-Alpha版本测试报告
1.在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? 修复的Bug: a. 修复的bug: 页面打开后比例改变: 出现中文乱码: 点击按钮时不能响应: 导航栏加入显示错误: 上传图片后 ...
- OSG学习:计算纹理坐标
在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲 ...
- wpf后台设置颜色(背景色,前景色)
有时候你是不是也会遇到要在wpf后台给某个控件设置背景色或者给文字设置前景色的情况? 本人最近看到一个从自定义的combobox读取系统字体和颜色的实例,该实例实现了随字体combobox选项改变而改 ...
- C# id 字符串之类的拼接
背景 : id数组 [1,2,3,4,45,7] 要拼接字符串‘1’,‘2’,‘3’,看了同事自己写了代码 string+=‘,’ 之类的 头大 解决:string有静态函数 ,string.Jo ...
- 如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
今天有个工作是把所有的确认按钮放在取消按钮的左边,类似于下图这样的,公司用的时antd组件 但是antd组件的按钮时确认键放在右边的 可以采用下面的方式,将按钮调换过来: 对的,就是在modal里面的 ...
- Java中split的对象被特殊字符(.或|)分隔
在Java中,一个String对象被一些特殊字符分隔时,可以使用split()方法,生成一个String[],然后进行其他的操作,就像下面这样: String str = "a1_b1_c1 ...
- static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...