Spark2.x 集群搭建与参数详解

本贴最后更新于 2595 天前,其中的信息可能已经斗转星移

在前面的 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_PORTworker节点的端口号,默认是随机的
SPARK_WORKER_CORESworker节点上,允许spark作业使用的最大cpu数量,默认是机器上所有的cpu core
SPARK_WORKER_MEMORYworker节点上,允许spark作业使用的最大内存量,格式为1000m,2g等,默认最小是1g内存
SPARK_WORKER_INSTANCES当前机器上的worker进程数量,默认是1,可以设置成多个,但是这时一定要设置SPARK_WORKER_CORES,限制每个worker的cpu数量
SPARK_WORKER_DIRspark作业的工作目录,包括了作业的日志等,默认是spark_home/work
SPARK_DAEMON_MEMORY分配给master和worker进程自己本身的内存,默认是1g
SPARK_PUBLISC_DNSmaster和worker的公共dns域名,默认是空
其中一些参数跟我们单独启动master和worker进程的命令行参数后面添加参数是一样的,如:`sbin/start-master.sh --port 7078(或--memory 500m)`,类似这种方式,可以指定一样的配置属性。我们可以在spark-evn.sh中就去配置好这些参数,但是有时候需要根据情况临时需改配置,我们就可以使用这种在启动Master/Worker脚本时,添加参数的方式来进行配置。通常还是在脚本spark-env.sh中配置好,脚本命令行参数通常用于临时的情况。 :v:( •̀ ω •́ )也就是说,有些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.retainedApplications200在spark web ui上最多显示多少个application的信息
spark.deploy.retainedDrivers200在spark web ui上最多显示多少个driver的信息
spark.deploy.spreadOuttrue资源调度策略,spreadOut会尽量将application的executor进程分布在更多worker上,适合基于hdfs文件计算的情况,提升数据本地化概率;非spreadOut会尽量将executor分配到一个worker上,适合计算密集型的作业
spark.deploy.timeout60单位秒,一个worker多少时间没有响应之后,master认为worker挂掉了
参数简介
SPARK_WORKEROPTSworker的额外参数,使用"-Dx=y"设置各个参数

SPARK_WORKEROPTS 的一些参数配置(x,y)如下:

参数(x)默认值(y)简介
spark.worker.cleanup.enabledfalse是否启动自动清理worker工作目录,默认是false
spark.worker.cleanup.interval1800单位秒,自动清理的时间间隔,默认是30分钟
spark.worker.cleanup.appDataTtl7 * 24 * 3600默认将一个spark作业的文件在worker工作目录保留多少时间,默认是7天
参数简介
SPARK_DAEMON_JAVAOPTS设置master和worker自己的jvm参数,使用"-Dx=y"设置各个参数

这里一些内存相关的参数大家看过就明白了,为什么之前用分布式的集群,每个 worker 节点才 1 个 g 内存,根本是没有办法使用 standalone 模式和 yarn 模式运行作业的,仅仅是启动进程耗费的内存就已经非常严重了,其中一些内存分配不合理就会导致启动的时候资源分配失败.如果还要在 Yarn 模式上运行的话,Hadoop 集群进程还会占用一部分内存。所以说 Spark 使用是非常消耗资源的。有时候资源也会成为性能的一个瓶颈。

  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 562 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
rzx
此生最怕深情被辜负,最怕兄弟成陌路。对世界充满善意,同时又充满深深的恨意,我渴望天降甘霖福泽众生,又渴望灭世洪水重创世纪。 广州

推荐标签 标签

  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 344 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    166 引用 • 1486 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 4 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    20648 引用 • 80710 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 3 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 721 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    175 引用 • 994 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 605 关注
  • CodeMirror
    1 引用 • 2 回帖 • 127 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 51 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 5 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 45 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 54 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 598 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 137 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 4 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 621 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 10 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 4 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 370 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 42 关注