des*_*itb 5 hadoop-yarn apache-spark spark-streaming
在EMR客户端模式以及群集模式下,Spark Streaming Java自定义接收器问题在yarn中出现。
以下是问题。
当我们在EMR群集(纱线)上运行Spark Streaming的JavaCustomReceiver时,它将在执行程序之一上随机绑定侦听器。因此,我们要做的就是将所有传入流量转移到它随机选择的那个ip。
当那个执行器失败时,情况就更糟了。重新启动后,它将尝试将监听器绑定到另一个随机选择的执行器上。再次,我们必须将传入流量转移到该新选择的节点。
我的问题是:1.我们能否将侦听器绑定到我们选择的特定执行器上?(用于绑定侦听器的固定ip)否... 2.是否可以通过编程方式知道它在哪个执行器上重新启动了侦听器?(因为它选择了随机节点来启动该接收器),最重要的是。3.我们不能在运行驱动程序的节点上绑定侦听器吗?(在客户端模式下运行时)
费耶
我们已经尝试过Receiver超类的preferredLocation,但是我们并没有那么幸运。
对此,我们将给予任何帮助。
我在使用 Flume 时遇到了同样的问题。即使我将 FlumeUtils.createStream 传递给了我的首选位置主机名,它也会尝试运行每个节点,但除了确切的节点之外,所有节点都失败了。如果我传递 0.0.0.0 作为主机,那么它的行为就像您所描述的那样。它选择一个随机节点来启动接收器。
问题:资源管理器无法决定运行接收器的首选工作节点。
解决方案:
确保使用准确的节点引用作为首选位置,如Spark+Flume Integration => “请注意,主机名应与集群中资源管理器使用的主机名相同(Mesos、YARN 或 Spark Standalone),以便资源分配可以匹配名称并在正确的机器中启动接收器。”
对于我的情况,FQDN、主机名不起作用。IP 就是解决方案。
确保您传递的 IP 属于 Spark Worker 节点(数据节点)。如果你传递一个非datanode机器的IP地址,它也会失败。
我还计划在驱动程序作为客户端运行的节点上运行,但 Spark 将接收器推送到工作节点。如果您的客户端节点是工作节点,那么这不会成为问题。如果不是 - 就像我的情况,客户端是女王(名称)节点 - 那么你应该选择一个很酷的工作节点来运行接收器:)
我希望它有帮助。
归档时间: |
|
查看次数: |
138 次 |
最近记录: |