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或者网络带宽

最新文章

  1. 使用Xcode6和IOS8SDK以后遇到的问题
  2. Maven使用常见问题整理
  3. Verilog篇(二)系统函数
  4. oracle修改连接空闲自动断开
  5. iOS开发——UI篇&下拉弹出列表选择项效果
  6. 转载SSIS中的容器和数据流—数据转换(Transformations)
  7. Qt Creator插件工作流程代码走读
  8. 20. leetcode 171. Excel Sheet Column Number
  9. Bellman-Ford&&SPFA
  10. 后台管理系统之系统操作日志开发(Java实现)
  11. ThinkPHP CI codeignitor 框架 apache 重写 url 隐藏index.php 服务器 报错:Object not found! 可能是.htaccess隐藏index.php
  12. emwin 之消息 WM_INIT_DIALOG
  13. CF 681
  14. struts笔记
  15. VIM选择文本块/复制/粘贴
  16. 深入浅出“跨视图粒度计算”--2、INCLUDE表达式
  17. django fileup-load
  18. SQL点点滴滴_查询类型和索引-转载
  19. http://www.cnblogs.com/carekee/articles/1854674.html
  20. java后端技术

热门文章

  1. Solr与tomcat搭建(搭建好)
  2. scrapy 中没有 crawl 命令
  3. python 网络爬虫(二)
  4. 攻防世界web进阶区(1)
  5. 2_03_MSSQL课程_查询_分组和连接
  6. C++ 定位错误行
  7. day11-Python运维开发基础(迭代器与可迭代对象、高阶函数)
  8. Unnatural
  9. Cookie存储在哪里
  10. 联想电脑硬盘保护系统EDU8.0.1iso安装