Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在长时间运行的Spark map作业中监视进度和恢复?_Apache Spark - Fatal编程技术网

Apache spark 如何在长时间运行的Spark map作业中监视进度和恢复?

Apache spark 如何在长时间运行的Spark map作业中监视进度和恢复?,apache-spark,Apache Spark,我们使用Spark来运行一个ETL过程,通过该过程,数据从一个大型(500+GB)MySQL数据库加载,并转换为聚合的JSON文件,然后写入AmazonS3 我的问题有两个方面: 这项工作可能需要很长时间才能运行,如果能够了解映射的进展情况,那就太好了。我知道Spark有一个内置的日志管理器。它是否像在每个映射中放置一个log语句那样简单?我想知道每个记录何时被映射 假设这个巨大的任务在中间失败(可能是在DB记录上阻塞或者MySQL连接下降)。有没有一种简单的方法可以从火花中恢复?我听说缓存/检

我们使用Spark来运行一个ETL过程,通过该过程,数据从一个大型(500+GB)MySQL数据库加载,并转换为聚合的JSON文件,然后写入AmazonS3

我的问题有两个方面:

  • 这项工作可能需要很长时间才能运行,如果能够了解映射的进展情况,那就太好了。我知道Spark有一个内置的日志管理器。它是否像在每个映射中放置一个log语句那样简单?我想知道每个记录何时被映射

  • 假设这个巨大的任务在中间失败(可能是在DB记录上阻塞或者MySQL连接下降)。有没有一种简单的方法可以从火花中恢复?我听说缓存/检查点可能会解决这个问题,但我不确定如何解决


    谢谢

    似乎有两个问题,没有答案和细节。无论如何,假设我的答案是非火花流式回答,并根据我自己的阅读/研究参考其他答案,有限的回答:

  • 记录阶段、任务和作业的进度检查时,请执行以下操作:

    • 通过log4j进行全局日志记录,并通过在SPARK_HOME/conf文件夹下存储的模板下使用模板log4j.properties.template文件对其进行裁剪,该文件作为定义日志记录要求的基础,用于个人目的,但在SPARK级别

    • 通过使用Logger编程,使用import org.apache.log4j.{Level,Logger}

    • RESTAPI以获取SPARK作业的状态。请看这个启发性的博客:

    • 还可以使用Spark侦听器

    • :http://:8080通过Web UI查看进度

  • 取决于故障类型。优雅与非优雅、容错方面或内存使用问题,以及严重的数据库复制密钥错误等,具体取决于使用的API

    • 请参阅SPARK通过查看DAG并尝试通过重新执行所需内容来重建分区来处理其自身的故障。这一切都包含了无需进行任何操作的容错方面
    • SPARK无法控制的事情意味着一切都结束了。例如,由于在大规模计算中超过上的各种参数而可能导致的内存问题,DF JDBC针对存储写入时出现重复错误,JDBC连接中断。这意味着重新执行

  • 另一方面,有些方面即使存在故障,也不会被记录为故障,例如,某些Hadoop存储管理器上的重复密钥插入。

    回答得很好!这对我很有帮助。我已经使用log4j设置了日志记录,只需在我的映射和reduce函数中记录一些内容,以确保在运行过程中所有映射都正确。此外,对于失败,我发现一篇文章建议使用累加器优雅地处理错误。我最终通过一个累加器收集失败的记录。这样,剩下的工作就可以运行了,我可以回来在以后的运行中修复损坏的记录。对你很好,先生,有很多方法可以解决这个问题-尽管我是一个爱猫的人!