zoukankan      html  css  js  c++  java
  • 关于Spark中的常见问题及解决方法(1)

    前言

    对于Spark的故障排除,很多因素都可能会影响Spark作业,我们无法涵盖所有内容。 但我们可以讨论一些更常见的Spark问题。

    Spark作业无法启动

    这个问题经常出现,特别是当我们刚开始使用新的部署或环境时。
    主要症状

    • Spark作业无法启动
    • 除了驱动程序之外,Spark UI不会显示群集上的任何节点。
    • Spark UI显示的信息好像不正确。

    可能的原因分析
    这种情况通常发生在群集或应用程序的资源需求没有被正确配置。 在配置群集的过程中,我们可能错误地配置了某些内容(络,文件系统和其他资源),导致运行Driver的节点无法与Executor通信。 这可能是因为我们未指定打开特定的IP和端口号或使用了错误的IP和端口号。 另外,也可能是因为我们的应用程序为每个Executor请求的资源大于集群管理器当前空闲的资源,在这种情况下,Driver将会一直等待,直到Executor启动。

    可能的解决方法

    • 确保机器可以在指定的端口上相互通信。 理想情况下,除非使用更严格的安全限制,否则应该打开工作节点之间的所有端口。
    • 确保Spark资源配置正确,并且集群管理器也被正确配置。 可以尝试先运行一个简单的应用程序,看看是否有效。 一个常见问题可能是每个Executor请求的内存多于集群管理器可以自由分配的内存,因此可以比较一下UI中显示的空闲内存和spark-submit提交的内存配置。

    运行前的出现错误

    这种问题很可能是因为我们修改了一些代码,导致程序无法正常运行。

    主要症状

    • 命令根本无法运行,并且输出大量的错误消息。
    • 检查Spark UI时候发现没有任何jobs,stages或tasks运行。

    可能的原因分析

    在检查并确认Spark UI环境选项卡显示应用程序的信息都正确后,在仔细检查我们的Spark代码。 很多时候,可能会出现一个简单的拼写错误或不正确的列名,导致Spark作业无法编译到其底层的Spark计划中。

    可能的解决方法

    • 查看Spark返回的错误,以确认代码中没有问题,例如提供错误的输入文件路径或字段名称。
    • 仔细检查群集的Driver,Executor和正在使用的存储系统之间的网络连接是否正常
    • 错误的库或CLASSPTH值可能存在导致加载库的版本不正确。 尝试简化应用程序,直到获得一个重现问题的较小版本(例如,只读取一个数据集)。

    运行中出现错误

    主要症状

    • 一个Spark作业在整个集群上成功运行,但下一个失败。
    • 多步查询中某一步的失败。
    • 一个定时作业,昨天运行成功,但今天失败了。

    可能的解决方法

    • 检查数据格式是否存符合预期。 这可能是由于某些上游数据出现变化造成的。
    • 如果在运行查询时(即在启动任务之前)弹出错误,这意味着我们可能拼错了查询中引用的列名,或者引用的列,视图或表不存在。
    • 仔细查看堆栈跟踪,试图找到涉及哪些组件的线索(例如,运行时所用的算子和所处于的阶段)
    • 尝试通过逐步检查输入数据并确保数据格式正确。 还可以尝试删除部分逻辑来缩小排查范围。
    • 如果作业运行任务一段时间后失败,则可能是由于输入数据本身存在问题,其中可能是因为没有正确schema或数据与schema不匹配。 例如,指定的schema中表名数据不包含空值,但实际数据包含空值,这可能导致某些转换失败。
    • 也有可能是因为代码逻辑问题导致崩溃,在这种情况下,Spark显示代码抛出的异常。 在这种情况下,可以在Spark UI上查看标记为“失败”的任务,还可以查看该计算机上的日志以了解失败时正在执行的操作。 我们尝试在代码中添加更多日志来确定正在处理哪些数据记录,是哪些数据导致失败

    参考资料

    [BOOK] Spark - The Definitive Guide

  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611292.html
Copyright © 2011-2022 走看看