Spark工作只会挂起大数据

use*_*267 6 hadoop amazon-emr emr hadoop-yarn apache-spark

我试图从s3(15天的数据)查询.我试着单独查询它们(每天)它工作正常.它也能正常工作14天.但是当我查询15天时,作业一直在运行(挂起)并且任务#没有更新.

我的设置 :

我正在使用具有动态分配和最大资源打开的51节点集群r3.4x large.

我所做的只是=

val startTime="2017-11-21T08:00:00Z"
val endTime="2017-12-05T08:00:00Z"

val start = DateUtils.getLocalTimeStamp( startTime )
val end = DateUtils.getLocalTimeStamp( endTime )

val days: Int = Days.daysBetween( start, end ).getDays

val files: Seq[String] = (0 to days)
      .map( start.plusDays )
      .map( d => s"$input_path${DateTimeFormat.forPattern( "yyyy/MM/dd" ).print( d )}/*/*" )

sqlSession.sparkContext.textFile( files.mkString( "," ) ).count
Run Code Online (Sandbox Code Playgroud)

当我运行相同的14天时,我得到了197337380(计数),我分别运行了第15天,得到了27676788.但是当我查询15天总共工作挂起

更新:

这项工作很好:

  var df = sqlSession.createDataFrame(sc.emptyRDD[Row], schema)

    for(n <- files ){
      val tempDF = sqlSession.read.schema( schema ).json(n)
      df = df(tempDF)
    }

df.count
Run Code Online (Sandbox Code Playgroud)

但有人可以解释为什么它现在有效但不是之前?

更新:将mapreduce.input.fileinputformat.split.minsize设置为256 GB后,它现在工作正常.

roh*_*lky 9

动态分配和最大化资源分配都是不同的设置,当其他活动时,将禁用一个.通过在EMR中最大化资源分配,每个节点启动1个执行程序,并将所有核心和内存分配给该执行程序.

我建议采取不同的路线.你似乎有一个包含51个节点的非常大的集群,不确定它是否是必需的.但是,请遵循此经验法则,您将了解如何调整这些配置.

  • 集群内存 - 至少是您正在处理的数据的2倍.

现在假设您需要51个节点,请尝试以下操作:

  • r3.4x有16个CPU - 因此您可以将其中一个用于操作系统和其他进程.
  • 将执行程序数设置为150 - 这将为每个节点分配3个执行程序.
  • 将每个执行程序的核心数设置为5(每个节点3个执行程序)
  • 将执行程序内存设置为大致总主机内存/ 3 = 35G
  • 您必须控制并行性(默认分区),将其设置为您拥有的总核心数~800
  • 调整shuffle分区 - 使这个核心数量增加两倍 - 1600

以上配置对我来说就像一个魅力.您可以在Spark UI上监视资源利用率.

此外,在您的纱线配置/etc/hadoop/conf/capacity-scheduler.xml文件中,设置yarn.scheduler.capacity.resource-calculatororg.apache.hadoop.yarn.util.resource.DominantResourceCalculator- 这将允许Spark真正完全控制这些CPU.更改后重新启动纱线服务.


roh*_*roh 0

您应该增加执行程序内存和#执行程序,如果数据很大,请尝试增加驱动程序内存。

我的建议是不要使用动态资源分配,让它运行并查看它是否仍然挂起(请注意,spark 作业可能会消耗整个集群资源,并使其他应用程序缺乏资源,请在没有作业运行时尝试此方法)。如果它没有挂起,则意味着您应该考虑资源分配,然后开始对资源进行硬编码并不断增加资源,以便找到可以使用的最佳资源分配。

以下链接可以帮助您了解资源分配和资源优化。

http://site.clairvoyantsoft.com/understanding-resource-allocation-configurations-spark-application/

https://community.hortonworks.com/articles/42803/spark-on-yarn-executor-resource-allocation-optimiz.html