集群经济放缓由于Ganglia指标填充根分区

解决集群经济放缓是因为Ganglia度量数据爆炸填充根分区。

写的arjun.kaimaparambilrajan

去年发表在:2022年3月4日
删除

请注意

本文适用于砖运行时7.3 LTS下面。

问题

集群开始放缓,可能显示的结合以下症状:

  1. 不健康的集群事件报告:
    • 请求超时。司机暂时不可用。
    • Metastore下降。
    • DBFS下降。
  2. 你看不到任何高GC事件或内存利用率与驱动相关的过程。
  3. 当你使用前司机节点上你看到一个间歇性高平均负载。
  4. Ganglia相关gmetad过程显示间歇性高CPU利用率。
  5. 根磁盘显示高磁盘使用情况df - h /。具体地说,/var/lib/ganglia/rrds显示了较高的磁盘使用情况。
  6. Ganglia界面无法显示载荷分布。

您可以验证这个问题通过查找文件当地的的前缀/var/lib/ganglia/rrds。一般情况下,这个目录应该只有文件前缀应用程序——< applicationId >

例如:

当地rw-rw-rw % sh ls -ltrhR /var/lib/ganglia/rrds/ | grep - i - 1 ganglia ganglia 616 k当地6月29日18:00 - 1593453624916. driver.databricks.directorycommit.markerreaderrors.count。rrd -rw-rw-rw - 1 ganglia ganglia 616 k当地6月29日18:00 - 1593453614595. - driver.databricks.directorycommit.deletedfilesfiltered.count.rrd -rw-rw-rw - 1 ganglia ganglia 616 k当地6月29日18:00 - 1593453614595. driver.databricks.directorycommit.autovacuumcount.count。rrd -rw-rw-rw - 1 ganglia ganglia 616 k当地6月29日18:00 - 1593453605184. driver.codegenerator.generatedmethodsize.min.rrd

导致

Ganglia指标通常使用不到10 gb的磁盘空间。然而,在某些情况下,一个“数据爆炸”发生,导致根分区填补与Ganglia指标。数据爆炸还创建一个脏缓存。Ganglia指标,当这一切发生的时候,可以使用超过100 gb的磁盘空间的根。

这个“数据爆炸”可能发生如果你火花会话变量定义为全球Python文件,然后调用函数定义在相同的文件来执行Apache火花转换数据。当这种情况发生时,火花会话逻辑可以序列化,连同所需的函数定义,导致火花工作节点上创建会话。

例如,采取以下火花会话定义:

%从pyspark python。sql进口SparkSession def get_spark():““返回一个火花会话。””“返回SparkSession.builder.getOrCreate()如果“火花”不是在全局():火花= get_spark () def发生器(分区):打印(globals()(“火花”))为行分区:收益率(word.lower()字行(“价值”))

如果你使用下面的示例命令,当地的前缀的文件创建:

%从再生产python导入ganglia_test df =火花。createDataFrame ((((“Hello”))((“火花”)),(“价值”))df.rdd.mapPartitions (ganglia_test.generator) .toDF((“价值”)),告诉()

print (globals()(“火花”))声明发电机()函数不会导致一个错误,因为它可以作为全局变量在工作节点。它可能会失败,无效关键错误在某些情况下,这个值是不能作为一个全局变量。流媒体工作,执行批间隔短容易这个问题。

解决方案

确保你没有使用SparkSession.builder.getOrCreate ()定义一个火花会话作为一个全局变量。

进行故障排除时,您可以使用文件的时间戳与当地的前缀,以帮助确定问题时改变首次引入。

这篇文章有用吗?