ps:硬件配置其实都是根据实际的情况的,没有说某种配置就可以套在各种场景上

大部分spark 任务都是要到外部存储系统去读取数据源,比如hdfs,hbase等等,让spark计算尽可能近的数据源是很重要的,说白了就是数据本地性。所以这种情况一般都建议部署spark worker节点跟hdfs datanode节点一致。(跟hbase regionserver与hdfs datanode一对一同理的)

比如spark standalone,那么worker节点与datanode一致,spark on yarn,nodemanager节点跟datanode节点一致。此外对于低延迟的存储系统,比如hbase,spark计算节点应尽可能的与它错开,避免资源抢占,产生干扰。

关于磁盘:

虽然spark基于内存做大量的计算,但是当内存中数据放不下的时候,还是会保存数据到本地磁盘。stage之间的中间结果一样,也是要落磁盘的。对于磁盘一般推荐每个节点4-8块(如果每个节点的磁盘容量确定,那么不建议磁盘少、每块容量过大这种形式。我们生产上使用的盘每块1.1T,每个节点20+块)并且不需要做RAID,单独挂载即可,在linux环境下,挂载磁盘时可以对noatime参数设置以减少不必要的写入。对于spark,配置spark.local.dir参数,多块盘以逗号分割填写,当然,最好跟hdfs配置的磁盘一致。

关于内存:

通常情况,不管是8G还是上百G的内存机器(但节点),spark都能运行的比较好。但是在内存分配上,推荐分配75%的内存给spark,25%的内存留给系统和buffer cache

究竟需要多少的内存是取决于你的application的,如何判断你的application在某数据集下需要用多少内存,可以读取数据源创建RDD然后进行cache,在spark web ui界面查看storage大小,得到一个估计值。当然这跟你使用哪种cache level以及使用哪种序列化也有关系(所以最好先计划好用哪种序列化方式,以及哪种persist方式);此外,如果单节点内存很大,比如超过200G,分配给spark executor的内存不适合过大。可以单个节点多分配几个executor

关于网络:

推荐10 Gigabit或者更高的网卡配置,尤其有大量的shuffle存在时,比如groupby,reduceby,sql join之类的。另外可以在spark web ui界面查看通过网络传输的shuffle数据量。

关于cpu:

单节点至少8-16核,根据你应用的实际负载决定,在内存中计算的情况下,那么存在瓶颈的可能就是cpu或者网络带宽

spark集群硬件建议的更多相关文章

  1. 【Spark学习】Apache Spark集群硬件配置要求

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4135912.html 目录 存 ...

  2. zhihu spark集群,书籍,论文

    spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...

  3. Spark集群 + Akka + Kafka + Scala 开发(4) : 开发一个Kafka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  4. 安装Spark集群(在CentOS上)

    环境:CentOS 6.4, Hadoop 1.1.2, JDK 1.7, Spark 0.7.2, Scala 2.9.3 1. 安装 JDK 1.7 yum search openjdk-deve ...

  5. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  6. Spark集群搭建中的问题

    参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...

  7. Spark集群术语

    Spark集群术语解析 1. Application Application是用户在Spark上构建(编写)的程序,包含driver program 和executors(分布在集群中多个节点上运行的 ...

  8. spark集群的简单测试和基础命令的使用

    写此篇文章之前,已经搭建好spark集群并测试成功: spark集群搭建文章链接:http://www.cnblogs.com/mmzs/p/8193707.html 一.启动环境 由于每次都要启动, ...

  9. H01-Linux系统中搭建Hadoop和Spark集群

    前言 1.操作系统:Centos7 2.安装时使用的是root用户.也可以用其他非root用户,非root的话要注意操作时的权限问题. 3.安装的Hadoop版本是2.6.5,Spark版本是2.2. ...

随机推荐

  1. SQL注入之SQLmap

    注意:sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点. 1.

  2. 还在用逆向工程?太Low了,试试通用Mapper吧!

    什么是通用Mapper? 通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查. 什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件.它不是为 ...

  3. 二、js中基础知识

    该篇文章主要是强化一下自己javaScript的基础,让写代码变得更轻松些.基础好的请忽略.    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...

  4. VUE 使用axios请求第三方接口数据跨域问题解决

    VUE是基于node.js,所以解决跨域问题,设置一下反向代理即可. 我这里要调用的第三方接口地址为 http://v.juhe.cn/toutiao/index?type=top&key=1 ...

  5. 【Go语言系列】2.1、Go语言基本程序结构:注释

    注释在程序中的作用是对程序进行注解和说明,便于对源码的阅读.在源码中适当地添加注释,能够提高源码的可读性. Go语言的注释主要分成两类,分别是单行注释和多行注释. 单行注释: //单行注释 多行注释: ...

  6. WCF 学习

    https://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html using System.ServiceModel; name ...

  7. 线程高级篇-Lock锁实现生产者-消费者模型

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景.高效的性能,java还提供了Lock接口及其实现类ReentrantLock和 ...

  8. Spring中的BeanPostProcessor和BeanFactoryPostProcessor

    BeanPostProcessor BeanFactoryPostProcessor 标准ioc容器初始化之后的后置处理器 BeanDefintionRegisterPostProcessor 在所有 ...

  9. centos下离线安装zip和unzip

    首先如果你的centos可以联网,那可以不用看了,直接yum install -y zip unzip就行,非常的痛快! 如果不能联网,像我一样,只能用vpn连上去,做了点限制.那就非常烦了,yum了 ...

  10. SQL statement ignored

    存储过程语句错误,字段或变量名可能拼错,导致存储过程无法执行. 解决办法:仔细检查存储过程里的变量,字段,语句等是否正确.