我需要一种机制来从node-red发送数据,以便存储在HDFS(Hadoop)中。 我更喜欢数据流。我正在考虑使用'websocket out'节点将数据写入其中并使用Flume代理进行读取。
我是node-red的新手。
如果我不是,请你知道我是否在正确的方向并澄清一些细节吗?任何替代方法也应该没问题。
更新:node-red提供'bluemixhdfs'节点,该节点与IBM bluemix完全绑定,而我只使用vanilla hadoop。
答案 0 :(得分:2)
我最近对我的一个小项目有类似的问题。所以我试着解释一下我的方法。
一点背景:在应用程序中,我不得不对来自不同数据源的实时流数据进行一些处理。与此同时,我还需要存储流数据以供将来处理。
我使用 Apache Kafka 消息代理作为Node-RED和HDFS之间的集成代理(以及Apache Spark Stream处理引擎)。
在Node-RED中,我使用Kafka节点将来自不同数据源的流数据发布到Kafka中的单独主题。 Node-RED flow with Streaming data sources and Apache Kafka
然后使用HDFS接收器(Kafka Connect组件)将流数据存储到HDFS。 Flow Architecture for Node-RED to HDFS and Spark Streaming using Kafka Message broker
当使用Node-RED将IoT传感器,股票市场数据,社交媒体数据,天气api等许多流数据源作为单个流连接然后想要使用HDFS时,也可以采用这种方法存储这些数据以便进一步处理。
答案 1 :(得分:1)
我担心我不是Hadoop专家,因此可能无法直接提供答案。然而,看起来Kafka支持websockets,这应该是合理的性能。
根据您的架构,您应该注意websocket安全性。除非NR和Hadoop都在私有安全网络上,否则websockets可能难以正确保护。
我认为只要每个事务的数据大小不太大(kb而不是Gb),websocket性能就是合理的。您需要进行一些测试,因为影响Node-RED性能的因素太多,无法轻松预测它是否具备您所需的性能。
Node-RED支持多种类型的连接,因此如果websockets不能在您的架构中工作,那么还有很多其他的,例如UNIX管道,TCP或UDP连接。