【Spark学习】Apache Spark集群硬件配置要求
Spark版本:1.1.1
本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接:
http://www.cnblogs.com/zhangningbo/p/4135912.html
目录
- 存储系统
- 本地磁盘
- 内存
- 网络
- CPU核数
Spark开发人员收到的最常见的问题就是如何为Spark做硬件配置。然而恰当的硬件配置取决于你的应用环境,所以我们推荐考虑如下几个要素。
存储系统
因为大部分Spark作业很可能要从外部存储系统(如HDFS、HBase)读取数据,所以,把Spark平台尽可能地部署在靠近这类存储系统的地方是很重要的。我们推荐从以下几个方面考虑Spark的部署:
- 如果有可能,那么就把Spark与HDFS运行在相同的节点上。最简单的方法就是在HDFS的节点上直接创建Spark Standalone集群,同时分别配置Spark和Hadoop对于内存和CPU的使用量以避免相互干扰(对于Hadoop,相关选项如:
mapred.child.java.opts用于设置每个任务需要分配的内存量,
mapred.tasktracker.map.tasks.maximum和
mapred.tasktracker.reduce.tasks.maximum
)。要不然,你还可以在通用集群管理器(比如Mesos或Hadoop YARN)上运行Hadoop和Spark。用于设置
任务总数 - 如果不可能,那么就在HDFS所在的局域网内的其他节点上运行Spark。
- 对于HBase这样的低延迟数据库存储系统,最好是在存储系统以外的其他节点上运行计算作业,以避免干扰。
本地磁盘
当Spark在内存中执行大量的计算作业时,实际上它仍然会使用本地磁盘来存储那些不适合放入RAM中的数据,还有那些在各个stage之间保存的临时输出数据。我们推荐每个节点配备4-8个磁盘,且不要设置为RAID模式(仅仅是作为单独的装载点)。在Linux系统下,以noatime命令行选项装载磁盘可以减少不必要的读磁盘操作。在Spark中,把变量spark.local.dir配置为以逗号分隔的本地磁盘列表。如果你正在运行着HDFS,那么,最好和HDFS使用相同的磁盘。
内存
通常,在内存容量为8GB到数百GB的主机上,Spark都能很好地运行。在任何情况下,我们都推荐最多只把物理主机上75%的内存分配给Spark;剩下的留给操作系统和缓存。
你需要多少内存取决于你的应用程序。要确定你的应用程序在某个数据集上执行时需要多少内存,可以在Spark RDD中加载一部分数据集,并借用Spark 监控UI(http://<driver-node>:4040
)上的存储表格(Storage tab)来查看其内存用量。要注意的是内存用量受存储级别和序列化格式的影响极大——解决方法详见Spark调优一文。
最后,请注意,配置了200GB以上内存的Java 虚拟机并不能总是正常工作。如果你购买的主机配备的内存超过了这个数值,那么可以在每个主机上启动多个worker JVM来解决这个问题。在Spark Standalone集群上,你可以使用配置文件conf/spark-env.sh中的变量SPARK_WORKER_INSTANCES
来设置每个节点上的worker数量,用变量SPARK_WORKER_CORES来设置每个worker上分配的CPU核数。
网络
我们的经验表明,当数据加载到内存时,大多数Spark应用程序都将受制于网络。最好的办法就是使用10Gbps或更高带宽的网络来加快应用的执行速度。这个办法对于那些分布式reduce应用程序(如group-bys,reduce-bys,及SQL joins)特别有用。在任何一个应用程序中,你都可以从其监控UI(http://<driver-node>:4040
)上看到Spark通过网络传输了多少数据量。
CPU核数
Spark可以在每个主机上很好地缩放数十个CPU核,因为它在线程间极少共享信息。你很可能会在每台主机上最少配置8-16个CPU核。根据你的工作负载所需的CPU成本,你可能还需要更多的CPU核:因为一旦把数据都加载到内存,那么大多数应用程序的瓶颈要么在于CPU,要么在于网络。
【Spark学习】Apache Spark集群硬件配置要求的更多相关文章
- Spark学习之在集群上运行Spark(6)
Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...
- Spark学习之在集群上运行Spark
一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...
- hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置
配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume 文章目录 环境介绍 节点介绍 ...
- hadoop+tachyon+spark的zybo cluster集群综合配置
1.zybo cluster 架构简述: 1.1 zybo cluster 包含5块zybo 开发板组成一个集群,zybo的boot文件为digilent zybo reference design提 ...
- Spark学习笔记——在集群上运行Spark
Spark运行的时候,采用的是主从结构,有一个节点负责中央协调, 调度各个分布式工作节点.这个中央协调节点被称为驱动器( Driver) 节点.与之对应的工作节点被称为执行器( executor) 节 ...
- Apache + Tomcat 集群的配置
公司最近新接了一个项目,客户要求WEB SERVER 必须是APACHE,,由于之前的项目一直都是NGINX,,无奈啊,,由于对方的IT又是在三哥的过度,经过一番的争执只能顺应三哥三姐的要求..
- Hadoop 集群硬件配置
- 在local模式下的spark程序打包到集群上运行
一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
随机推荐
- Servlet的应用
1.重定向 HttpServletRequest接口提供的sendRedirect()方法用于生产302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的U ...
- python判断文件目录是否存在
import os os.path.isfile('test.txt') # 如果不存在就返回False os.path.exists(directory) # 如果目录不存在就返回False o ...
- Android Studio上的几个插件
转载:http://blog.csdn.net/maosidiaoxian/article/details/44992655 以下所有插件都可以在Idea的插件库中找到,如果你与我一样在Android ...
- 自动化:Appium运行成功,取得一个小的胜利
看过乙醇大神的博文,然后又看了一些大神的博文,自己陆陆续续的折腾了一个月,今天上午的时候,appium终于跑起来了.纪念下,在自动化路上取得的一个小胜利 Appium版本:1.2 Python版本:2 ...
- ZOJ 3607 Lazier Salesgirl(贪心)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607 题意:一个卖面包的小姑娘,给第i个来买面包的人的价格是pi, ...
- 使用截图方式将Excel导出为PNG图片的不可行性
博主前面一篇文章使用了JAVA的Robot机制 模拟打开Excel然后Robot移动到指定区域,截图并生成PNG格式图片 试图使用这种方式将复杂的Excel报表转化成无差别的PNG图片 但是这种方式遇 ...
- 1085: [SCOI2005]骑士精神
A*搜索. A*搜索的基础百度百科(实在偷懒没看论文之类的),在这里不说了. A*搜索很关键的是h(n)估价函数的选取(表示现在到结束节点需要的距离) 设d(n)为实际到结束节点的距离.h(n)< ...
- 使用 google gson 转换Timestamp为JSON字符串
package com.test.base; import java.lang.reflect.Type; import java.sql.Timestamp; import java.text.Da ...
- 真正解决ASP.NET每一个页面首次访问超级慢的问题 (转载)
原文:http://www.afuhao.com/article_articleId-219.shtml 摘要:ASP.NET页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢.你也许认为它是在 ...
- Only one instance of a ScriptManager can be added to the page.
一般出现在一个页面用了多个用户控件,而每个用户控件中都用到了ScriptManager,最好的办法是控件中不要加上 <asp:ScriptManager ID="Scr ...