用于实时数据流的Storm-kafka Hortonworks教程

时间:2015-05-20 15:02:55

标签: apache-storm

阅读问题陈述后欢迎任何想法。

背景: 使用Apache Kafka发布消息: Kafka经纪人正在运行。 Kafka生成器是创建消息并将其发布到Kafka代理以供进一步使用的应用程序。因此,为了让Kafka消费者使用数据,Kafka主题需要在Kafka生产者和消费者开始发布消息和消费消息之前创建

Kafka测试成功,因为Kafka消费者能够使用Kafka主题和显示结果的数据。

在启动Storm拓扑之前,请停止Kafka使用者,以便Storm Spout能够处理来自kafka主题的数据流源。

使用Apache Storm实时处理数据: 创建Storm拓扑后,Storm Spout会处理数据流源,这意味着Spout将从kafka主题中读取数据。另一方面,Spout将数据流传递给Storm Bolt,后者将数据处理并创建为HDFS(文件格式)和HBase(db格式)以用于存储目的。

  1. Zookeeper znode缺少最后一个子znode。 从日志文件, 2015-05-20 04:22:43 b.s.util [错误]异步循环死了! java.lang.RuntimeException:java.lang.RuntimeException:org.apache.zookeeper.KeeperException $ NoNodeException:KeeperErrorCode = / Brokers / topics / truckevent / partitions的NoNode
  2. Zookeeper是分发应用程序的协调服务。从zookeeper客户端,我们总能看到/ brokers / topics / truckevent,但是在运行storm时总是会丢失最后一个znode。如果我们手动创建znode,我设法解决了这个问题。但是,相同的方法不再适用于后续测试。

    1. Storm(TrucjHBaseBolt是java类)无法访问与HBase表的连接。 从日志文件, 2015-05-20 04:22:51 c.h.t.t.TruckHBaseBolt [错误]检索连接和访问HBase表时出错
    2. 我手动创建Hbase表和HBase的数据格式。但是,检索与HBase的连接仍然失败。

      1. Storm(HdfsBolt java类)报告了当暴风用户将数据写入hdfs时被拒绝的权限。 从日志文件, 2015-05-20 04:22:43 b.s.util [错误]异步循环死了! java.lang.RuntimeException:准备HdfsBolt时出错:Permission denied:user = storm,access = WRITE,inode =" /":hdfs:hdfs:drwxr-xr-x
      2. 任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

对问题1的建议:

停止风暴拓扑。在运行storm的zookeeper中手动删除与主题相关的znode,然后重新启动storm topology。 这将创建新的znodes。

对问题2的建议:

如果能够连接到Hbase,请首先使用java代码进行检查。然后在Storm拓扑中测试相同的逻辑。

回答问题3:

根据您的日志user = storm,但您编写的目录由hdfs拥有。因此,请更改该目录的用户权限,并使用 chown 命令为用户制作风暴。