【Spark】---- Spark 硬件配置

存储系统
Spark任务须要从一些外部的存储系统加载数据(如:HDFS 或者 HBase),重要的是存储系统要接近Spark系统,咱们有以下推荐:
 
(1)若是可能,运行Spark在相同的HDFS节点,最简单的方法是创建一个引起相同的节点上的集群独立模式( http://spark.apache.org/docs/latest/spark-standalone.html),和配置Spark的Configure和Hadoop的内存和CPU使用避免干扰(对于Hadoop,) 或者 你可以运行Hadoop和Spark在一个相同的cluster manager 像 Mesos或者Hadoop YARN
(2)若是能,运行Spark在不一样的节点上,须要使用相同局域网内部的HDFS节点。
(3)对于低延迟数据存储如同HBase,使用不一样的节点上的数据比使用本地存储系统数据 干扰更小(可是HBase存储比本地存储避免干扰性方面表现的更好)
 
本地硬盘
虽然Spark可以在内存中执行大量的计算,它仍然须要本地硬盘做为数据的存储,不适合把数据存储在RAM中,以及保护中间的输出阶段,咱们推荐每一个节点有4-8个硬盘,没有配置RAID(就如同不一样的挂载点) 在Linux中挂载硬盘 使用noatime option( http://www.centos.org/docs/5/html/Global_File_System/s2-manage-mountnoatime.html) 减小没必要要的写操做,在Spark里面,配置 
spark.local.dir 变量以一个","号隔开( http://spark.apache.org/docs/latest/configuration.html),若是你正在运行着HDFS,它正好和HDFS放在一个相同的硬盘上。
 
内存
通常而言,Spark可以运行在任意的 8G to hundreds of gigabytes 的内存的机器上,全部状况下,咱们推荐最多给Spark配置 75%的内存容量,其余的容量是系统和buffer缓存使用。
你的内存须要多大是依靠你的Application决定的,肯定你的应用使用多少内存特定大小,你须要加载一部分特定的数据到Spark RDD 并使用 UI的存储选项卡(http://<driver-node>:4040)观测内存使用量。注意,内存使用量大大影响存储水平和序列化格式,看调度指南如何优化( http://spark.apache.org/docs/latest/tuning.html)。
最后,注意,Java VM在超过200 GB的RAM上并不老是表现良好。若是你这这样的RAM机器,你能够在上面多跑几个Worker,在Spark的独立模式中,你可以在每一个节点上设置多个Workers ,设置 conf/spark-env.sh 中的SPARK_WORKER_INSTANCES变量,而且设置 SPARK_WORKER_CORES  的核数
 
网络
 
根据经验,当数据在内存中, 使用万兆网卡程序将运行的更快,特别是“distributed reduce” application 例如 group-bys 减小,reduce-bys 和SQL的join ,在一个任何给定的application ,你可以经过UI查看Spark的shuffles的过程及多大的数据执行shuffles。
 
 
CPU 核数
 
Spark 每一个每一个集群要启动成千上万的线程,每一个集群的核数至少是8-16 核。你的工做的负载是依靠CPU ,你也须要更多的:一旦数据在内存中,更多应用取决CPU或者带宽
相关文章
相关标签/搜索