【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 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
随机推荐
- win7进入不了系统故障修复
问题: 由于电脑关机比较慢,等得不耐烦了,就强制关机了,以前都没事,直到昨晚打开电脑,提示windows错误恢复,试了好久,提示windows无法修复此计算机,看来是没办法了.后来进入系统还原后,总算 ...
- 对于接收到的GPS信息详解
最近一直在做gps驱动方面的东西,对于底层接收到的gps信息不是很了解,查询了资料对这些信息做出总结: 由于在室内,所以信号不是很好,接收不到卫星信号,必须站到窗口或者空旷的地方,这是gps的debu ...
- Android使用Fragment程序崩溃
调用Fragment的Activity要继承并实现Fragment.OnFragmentInteractionListener
- android源码编译1
一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...
- Effective C++学习笔记 条款07:为多态基类声明virtual析构函数
一.C++明确指出:当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,其结果未定义——实际执行时通常发生的是对象的 ...
- ha_innobase::open
http://mysql.taobao.org/monthly/2015/08/07/ /******************************************************* ...
- HTML页面导出为Word
protected void btnExport_Click(object sender, EventArgs e) { string strFileName = DateTime.Now.ToStr ...
- LA 3357 (递推 找规律) Pinary
n位不含前导零不含连续1的数共有fib(n)个,fib(n)为斐波那契数列. 所以可以预处理一下fib的前缀和,查找一下第n个数是k位数,然后再递归计算它是第k位数里的多少位. 举个例子,比如说要找第 ...
- js 写成类的形式 js 静态变量 js方法 属性 json类
function ClassStudentList() { //[{"Cid":"0d","Students":[{"Sid&qu ...
- Android设置布局背景为白色的三种方法
一.在xml文件里可以直接设置: android:background="#ffffff" 其他颜色可以看这里;http://blog.csdn.net/yanzi1225627/ ...