由于netty客户端主机名解析,aws工作人员无法通信

vc6uscn9  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(258)

我实际上正在研究拓扑,从kafka获取数据,并将它们持久化到elasticsearch中。首先,我使用了基本的kafkaspout from storm dependency来监听来自一个精确kafka主题的数据,然后,我重新实现了elasticsearch hadoop项目中的elasticsearch bolt:https://github.com/elastic/elasticsearch-hadoop/blob/master/storm/src/main/java/org/elasticsearch/storm/esbolt.java. 目标是在elasticsearch中写几个索引。因此,当我处理来自kafka的消息时,当kafka队列中的数据数量增加时,我会遇到一些异常。这是工作日志中堆栈跟踪的一部分:

2016-04-13T22:24:44.641+0000 b.s.m.n.Client [ERROR] failed to send 580 messages to Netty-Client-ip-[internal-ip].ec2.internal/[internal-ip]:6700: 
java.nio.channels.ClosedChannelException
2016-04-13T22:24:44.641+0000 b.s.m.n.Client [ERROR] failed to send 575 messages to Netty-Client-ip-[internal-ip].ec2.internal/[internal-ip]:6700:
java.nio.channels.ClosedChannelException
2016-04-13T22:25:05.970+0000 b.s.m.n.Client [WARN] Re-connection to ip-[internal-ip].ec2.internal/[internal-ip]:6701 was successful but 52890 messages
has been lost so far
2016-04-13T22:36:33.571+0000 b.s.m.n.StormClientHandler [INFO] Connection failed Netty-Client-ip-ip-[internal-ip].ec2.internal/[internal-ip]:6701
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[na:1.8.0_77]
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) ~[na:1.8.0_77]
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[na:1.8.0_77]
at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[na:1.8.0_77]
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[na:1.8.0_77]
at org.apache.storm.netty.channel.socket.nio.NioWorker.read(NioWorker.java:64) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [storm-core-0.9.6.jar:0.9.6]
at org.apache.storm.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [storm-core-0.9.6.jar:0.9.6]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_77]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_77]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77]

我使用的是一个由3个节点组成的风暴集群(1个nimbus+ui+zookeeper和2个supervisors)。风暴版本0.9.6。每台机器都有4gb ram,这是我的storm.yml配置文件的内容:

storm.zookeeper.servers:
  - "nimbus-ip"
storm.local.dir: "/mnt/storm"
nimbus.seeds: ["nimbus-ip"]
storm.zookeeper.port: 2181
ui.port: 8080
nimbus.host: "nimbus-ip"
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
storm.messaging.netty.max_wait_ms: 10000

有人能帮我知道为什么工人不能沟通由于网络客户端主机名决议?我已经在0.9.4版本的storm中看到了一个关于这个问题的报告https://issues.apache.org/jira/browse/storm-908. 有没有可能0.9.6版本没有解决这个问题?
非常感谢!!

jum4pzuy

jum4pzuy1#

我是从谷歌来这里寻找类似问题的答案的。在我的例子中,错误是:

o.a.s.m.n.Client [ERROR] connection attempt 104 to Netty-Client-ip-XXX-XXX-XXX-XXX.ec2.internal/XXX.XXX.XXX.XXX:6703 failed: java.net.ConnectException: Connection refused: ip-XXX-XXX-XXX-XXX.ec2.internal/XXX.XXX.XXX.XXX:6703

这是出现在一个2节点风暴群(v1.0.1)上。
起初,我认为这是aws的一个网络问题(我在这里部署节点)。我开始研究安全组规则,/etc/hosts文件等等,这些都没有帮助。
经过一番搜索,我发现:https://issues.apache.org/jira/browse/storm-1382 我想也许问题根本不是网络,但另一端的某些东西没有运行。
所以,我用ssh-d连接到一个worker节点,并查看了主管日志,其中显示了很多类似的内容:

o.a.s.d.supervisor [INFO] 30236e62-d2e1-4d5c-b75c-f54ef07653a4 still hasn't started

当我查看worker.log本身时,我发现默认的java版本有问题。这是我的问题,但其他人的问题可能与工人可能失败的其他原因有关。
不管怎样,一旦我设置了正确的默认java版本,它就开始生效了。

相关问题