apache-spark - 在YARN中启用CPU调度是否会真正改善Spark中的并行处理?

标签 apache-spark hadoop bigdata yarn hdp

具有容量调度程序的YARN在为用户请求分配资源时将仅考虑内存。如果我提交像这样的Spark作业“--master yarn --deploy-mode client --driver-memory 4g --executor-memory 4g --num-executors 1 --executor-cores 3“,yarn将为执行者分配 4gb内存和1 vcpu ,但是在执行任务时,它将并行执行3个任务。

是否仅使用一个内核就可以一次执行3个一组的所有任务?

因此,如果我启用了CPU调度和CGroups(在HDP集群中),yarn会分配3个vcpu内核,并且这3个任务集将在每个cpu中执行吗?真的会缩短处理时间吗?

到目前为止,由于启动节点管理器中的以下错误“无法执行cpu权重;无法在以下位置写入cgroup:/ sys / fs / cgroup,我无法在群集(HDP 2.6.5 centos 7.5)中启用CPU调度” / cpu,cpuacct”

最佳答案

不,vcore和vcpus实际上是一个逻辑结构,与系统上的实际内容无关,但与正在运行的进程数密切相关。如果进程是为此目的而设计的,则OS(在这种情况下为Linux)将工作迁移到所有CPU。由于运行多个线程,大多数长时间运行的Java应用程序将执行此操作。
除非启用CGroup,否则YARN不会控制CPU内核。 YARN唯一可控制的是内存使用率。无关紧要的原因是,典型的Hadoop工作负载受I / O约束,而不受CPU约束。
引用文献

  • Using CGroups with YARN
  • 关于apache-spark - 在YARN中启用CPU调度是否会真正改善Spark中的并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53260323/

    相关文章:

    java - 什么会导致我的 Spark Streaming 检查点不完整?

    scala - Spark agg 为多列收集单个列表

    linux - 如何查看edgenodes的数量?

    bigdata - Q/kdb+ 读取巨大的文本文件

    hadoop - HDFS的默认 block 大小为128 MB,而Hive的默认 strip 大小为250 MB

    apache-spark - Spark CSV 2.1 文件名

    apache-spark - Spark RDD 缓存能走多远?

    hadoop - hadoop mr1和yarn和mr2之间的区别?

    python - Python hdfs3无法列出非所有文件

    java - 无法从Hive更改表格位置