Spark streaming java自定义接收器在EMR客户端模式和集群模式下的yarn中出现问题。
以下是问题所在。
当我们在EMR集群(yarn)上运行spark streaming的JavaCustomReceiver时,它会随机绑定一个executor上的listener。因此,我们所要做的就是将所有传入流量转移到它随机选择的ip。
当执行程序失败时,事情会变得更糟。重启后,它会尝试将侦听器绑定到另一个执行器上,这也是随机选择的。再一次,我们必须将传入流量转移到新选择的节点。
我的问题是: 1.我们可以不在我们选择的特定执行器上绑定侦听器吗?(修复要绑定的监听器的ip )如果没有...2.有没有什么方法可以让我们通过编程知道它在哪个执行器上重新启动了监听器?(因为它选择随机节点来启动该接收器),最重要的是。3.不能在运行驱动的节点上绑定监听器吗?(在客户端模式下运行时)
仅供参考
我们已经尝试了Receiver超类的preferredLocation,但我们没有同样的运气。
在这方面的任何帮助都是非常感谢的。
发布于 2017-01-24 14:00:42
我在使用Flume时也遇到了同样的问题。即使我向FlumeUtils.createStream传递了我的首选位置主机名,它也会尝试运行每个节点,但除了确切的节点之外,所有节点都会失败。如果我传递0.0.0.0作为主机,那么它的行为就像您所描述的那样。它选择一个随机节点来启动接收器。
问题:资源管理器无法决定运行接收器的首选工作节点。
解决方案:
对于我的情况FQDN,hostname不起作用。IP是解决方案。
我还计划在节点上运行,在该节点上,driver作为客户端运行,但spark将接收器推送到工作节点。如果您的客户端节点是工作节点,那么这将不会是一个问题。如果它不是-like我情况下客户端是一个女王(名字)节点-,那么您应该选择一个很酷的工作者节点来运行接收器:)
我希望它能帮上忙。
https://stackoverflow.com/questions/41793721
复制相似问题