SPARK配置

原创
2017/02/08 13:21
阅读数 64

SPARK配置

  1. spark的配置有几种,这里主要讲如何与yarn结合。

    其实也没什么好讲,因为实在太简单了。如果运用yarn机制,那么spark没有什么服务需要启动。只是在执行spark代码时,需要通过yarn来临时加载spark解释器,并执行用户的spark程序。原理就是这么简单。

    所以在提交spark程序的时候,告诉spark解释器, 这次的程序通过yarn来分配节点,每个节点计划使用多少内存和cpu来运行程序。这就实现了spark和yarn的结合。这个问题的难点就在于如何来指挥yarn,合理的分配资源。

    首先看一下yarn的资源管理架构。yarn负责提供container,让每个资源请求方的任务,都放在container里运行。每个节点上都可以产生若干个container。当然,这个是yarn的术语,对于spark来说container就是executor。

    yarn的container里面有啥,无非就是cpu+内存.这里的cpu,yarn称之为vcore,也就是intel cpu核的概念。spark在执行任务的时候,首先要规划一下,本次任务申请几个容器来跑,每个容器里放几颗cpu和多大内存 。

    一般来说,我们运行spark任务,都希望能够把集群资源用满。那么集群的资源,是怎么定的呢?这个通常是由yarn来定的。yarn会确定总的资源大小,然后spark任务就只能在这个总的资源大小里来申请。假设yarn划定的资源池为每节点,15vcore, 63G内存,那么这就是可分配资源。

    根据总的资源,我们来规划我们需要的executor/container,以及对应的cpu和内存。一般来说,容器的数量其实是根据cpu个数来反推的。所以我们会先确定每个容器里的cpu个数,通常不要超过5个,这样就可以限制每个容器中并行任务的数量。一个cpu对应一个任务。确定cpu数量之后,根据集群总的cpu数量,来计算可以有多少个容器。例如以上例子中,如果有6个节点,那么集群总的cpu数量为90,那么集群上最多可以有18个container,也就是18个executor。但是,通常要给master节点留出点资源,所以17个executor就差不多了。

此外,为了提高执行效率,可以事先把$SPARK_HOME/jars里的jar包,都上传到hdfs文件系统,避免每次在执行用户程序时,都要上传一遍。然后修改spark-defaults.conf文件,告知spark程序,文件放在hdfs什么地方。

>hadoop fs -put $SPARK_HOME/jars/*.jar /user/spark/share/lib
>vi $SPARK_HOME/conf/spark-defaults.conf
spark.yarn.jars hdfs://hd-master:9000/user/spark/share/lib/*.jar

spark执行错误,例如客户端连接超时.此时有可能是因为资源不足的缘故.例如cpu不够分,内存不够分。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部