gpt4 book ai didi

apache-spark - Spark 流 JavaCustomReceiver

转载 作者:行者123 更新时间:2023-12-04 04:22:55 25 4
gpt4 key购买 nike

在 EMR 客户端模式和集群模式下, yarn 中的 Spark 流式 Java 自定义接收器问题。

以下是问题。

当我们在 EMR 集群( yarn )上运行 spark 流的 JavaCustomReceiver 时,它会随机将监听器绑定(bind)到执行器之一。所以我们所要做的就是将所有传入的流量转移到它随机选择的那个 ip。

当那个执行者失败时,事情会变得更糟。重新启动后,它尝试在另一个执行器上绑定(bind)监听器,再次随机选择。我们必须再次将传入流量转移到新选择的节点。

我的问题是:
1. 我们不能在我们选择的特定执行者上绑定(bind)监听器吗? (修复 ip 以便监听器绑定(bind))
如果不...
2. 无论如何我们可以通过程序知道它在哪个执行器上重新启动了监听器? (因为它选择随机节点来启动该接收器)
最重要的是。
3. 驱动运行的节点可以不绑定(bind)监听吗? (在客户端模式下运行时)

供引用

我们已经尝试过 Receiver 父类(super class)的 preferredLocation,但我们没有同样的运气。

对此的任何帮助都将受到高度赞赏。

最佳答案

我在使用 Flume 时遇到了同样的问题。即使我通过 FlumeUtils.createStream 我的首选位置主机名,它也会尝试运行每个节点,但除了确切节点之外的所有节点都失败了。如果我将 0.0.0.0 作为主机传递,那么它的行为与您描述的一样。它选择一个随机节点来启动接收器。

问题:
资源管理器无法决定运行接收器的首选工作节点。

解决方案:

  • 确保覆盖首选位置
  • 确保使用确切的节点引用作为 Spark+Flume Integration 指示的首选位置。 => "请注意
    主机名应与资源使用的主机名相同
    集群中的管理器(Mesos、YARN 或 Spark Standalone),以便
    资源分配可以匹配名称并启动接收器
    合适的机器。”。

    对于我的 FQDN,主机名不起作用。 IP是解决方案。
  • 确保您传递的 IP 属于 Spark Worker 节点(数据节点)。如果您传递非数据节点机器的 IP 地址,它也会失败。

    我还计划在驱动程序作为客户端运行但 spark 将接收器推送到工作节点的节点上运行。如果您的客户端节点是工作节点,那么这将不是问题。如果不像我的情况,客户端是一个女王(名称)节点,那么你应该选择一个很酷的工作节点来运行接收器:)

  • 我希望它有所帮助。

    关于apache-spark - Spark 流 JavaCustomReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793721/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com