美文网首页Spark在简书spark
Spark On Yarn 如何提高CPU利用率

Spark On Yarn 如何提高CPU利用率

作者: _雷雷_ | 来源:发表于2016-02-04 18:16 被阅读2166次

问题描述:       

Spark on Yarn是利用yarn进行资源调度,这两天我写的一个程序处理大概100W行文本,文本格式是txt,数据大小为50M左右。我将Scala写的代码打包扔到集群上执行,这么点数据量都需要执行3个小时,都说Spark是大数据处理的利器,但是哪里出问题了呢?带着这个问题,我查看了4个Slave节点(24核,60G内存)的CPU利用率如下图:

cpu利用率

很明显,Job没有充分利用CPU。

解决方案:

首先我探索了spark-submit里的各个参数,主要关注了:number-executors和executor-cores,改了各种配置,他们都对提高CPU的利用率不起作用。

spark-submit参数

由于我的代码核心就是对一个RDD做map操作如下,其中调用了BLAS库做矩阵运算:

核心代码

我考虑了是不是需要将hadoop里的map/reduce vcore设置大一些,即mapreduce.map.cpu.vcores 和 mapreduce.reduce.cpu.vcores设置大些,可是依然不起作用。

最后,发现问题的关键了,我输入数据源为一个txt文件,数据并没有分片,所以导致单机单核可以执行,并没有利用到Hadoop/Spark的并行处理的优势。下面我就将数据源分片:

split -l 20000 xxx.txt -d -a 4 xxx.txt._

其实也可以这样来使得数据分片,这样的效果没有验证。

val distFile = sc.textFile("data.txt",num_of_partition)

这个命令将数据源(100W行)分成了 50份,这样的话集群就对此文件并行执行了。下面是执行结果:

spark-submit yarn占用资源 cpu利用率

感觉速度快了很多,这次任务执行大概20min。如果有说的不对的地方,请大家多多指教,欢迎交流。

相关文章

  • Spark On Yarn 如何提高CPU利用率

    问题描述: Spark on Yarn是利用yarn进行资源调度,这两天我写的一个程序处理大概100W行文本...

  • Spark优化

    Spark优化 worker 的资源分配:cpu, memroy, executors spark.yarn.ex...

  • 进程与线程

    注意: 多线程可以提高CPU利用率,不能提高内存利用率 进程 wait()、notify()和notifyAll(...

  • Flink on yarn

    使用Yarn统一管理资源的好处 1)、Yarn的资源可以按需使用,提高集群的资源利用率 2)、Yarn的任务有优先...

  • YARN 原理简介

    YARN 组件 参考:Spark on Yarn | Spark,从入门到精通 YARN 采用 Master/Sl...

  • 多线程的那点事(一)

    多线程 优点 能适当的提高程序的执行效率. 能适当提高资源利用率.(CPU、内存利用率). 缺点 创建线程是有开销...

  • 多线程的优点和缺点有哪些?

    多线程的优点和缺点有哪些? 优点: 能适当提高程序的执行效率 能适当提高资源利用率(CPU、内存利用率) 缺点: ...

  • 操作系统学习(三) —— CPU调度

    第三部分 CPU调度 一、相关基本概念 引入多程序设计,目的是提高计算机资源利用率,尤其是CPU利用率(CPU u...

  • Swift- 多线程编程Thread

    多线程的优缺点 优点:能适当提高程序的执行效率,能适当提高资源利用率(CPU,内存) 缺点:线程越多,CPU在调度...

  • Spark2x on yarn日志配置详解

    概述 Spark on Yarn的日志配置分为两类: Spark on Yarn client模式 Spark o...

网友评论

    本文标题:Spark On Yarn 如何提高CPU利用率

    本文链接:https://www.haomeiwen.com/subject/fyvekttx.html