【问题标题】:How to debug Flink itself using Intellij IDEA如何使用 Intellij IDEA 调试 Flink 自身
【发布时间】:2023-02-01 18:37:10
【问题描述】:

想通过flink源码研究stream原理,需要debug看看效果如何 我已经编译了 Flink 源代码并将项目导入到 Intellij IEDA,但我无法将其作为独立集群运行。我正在使用 JDK 11 和 maven 3.6.3 在 Windows 10 上工作 我将主类设置为

org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint

并从 IDEA 运行它,但我收到了一些警告和异常

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/C:/Users/%e5%88%98%e8%bf%9c%e5%8d%9a/.m2/repository/org/apache/hadoop/hadoop-auth/2.8.5/hadoop-auth-2.8.5.jar) to method sun.security.krb5.Config.getInstance()
WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.Objects.requireNonNull(Objects.java:221)
    at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.shutDownAsync(ClusterEntrypoint.java:586)
    at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.startCluster(ClusterEntrypoint.java:242)
    at org.apache.flink.runtime.entrypoint.ClusterEntrypoint.runClusterEntrypoint(ClusterEntrypoint.java:729)
    at org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint.main(StandaloneSessionClusterEntrypoint.java:59)

如何启动 JobManager 并调试它?

我尝试使用 IDE 通过 Flink 源代码启动 JobManager,然后启动任务管理器。我希望我可以调试它们。

【问题讨论】:

    标签: debugging intellij-idea apache-flink


    【解决方案1】:

    只需编写一个简单的工作流(或使用 Flink 网站上提供的众多示例之一),然后使用 LocalStreamEnvironment 执行它。这将自动启动一个 JobManager 和 TaskManager,作为 Flink MiniCluster 的一部分。

    【讨论】:

    • 我知道这可以启动一个 MiniCluster 并让我调试工作流,但它不会帮助我调试 Flink 本身,例如 JobManager 如何与 TaskManager 通信; Flink 如何创建 DAG 和管理资源等。
    • Flink MiniCluster 比你想象的更类似于运行在独立 JVM 中的集群。 client还是会创建DAG提交给job manager,job manager会和task manager等进行通信。
    【解决方案2】:

    这个问题通过配置 VM 选项和程序参数来解决。 对于 Windows10,VM 选项为:

    -Dlog4j.configuration=file:{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0confmy-log4j-console.properties 
    -classpath {source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-cep-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-connector-files-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-csv-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-dist-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-json-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-scala_2.12-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-shaded-zookeeper-3.5.9.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-table-api-java-uber-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-table-planner-loader-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblink-table-runtime-1.16.0.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblog4j-core-2.17.1.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblog4j-slf4j-impl-2.17.1.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblog4j-1.2-api-2.17.1.jar;{source_code_path}link-1.16.0link-dist	argetlink-1.16.0-binlink-1.16.0liblog4j-api-2.17.1.jar;
    

    程序参数是

    -c flink-dist	argetlink-1.16.0-binlink-1.16.0conf
    

    目标路径与 Linux 上的略有不同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2019-11-28
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多