【发布时间】:2018-08-01 16:44:47
【问题描述】:
我想使用flume将数据从hdfs目录传输到hdfs目录中,在这个传输中我想应用处理morphline。
例如:我的来源是
"hdfs://localhost:8020/user/flume/data"
我的水槽是
"hdfs://localhost:8020/user/morphline/"
水槽可以吗?
如果是,源水槽的类型是什么?
【问题讨论】:
我想使用flume将数据从hdfs目录传输到hdfs目录中,在这个传输中我想应用处理morphline。
例如:我的来源是
"hdfs://localhost:8020/user/flume/data"
我的水槽是
"hdfs://localhost:8020/user/morphline/"
水槽可以吗?
如果是,源水槽的类型是什么?
【问题讨论】:
据我所知,没有读取 HDFS 数据的来源。主要原因是 Flume 旨在移动以某种方式发送到代理的大量数据。如文档中所述:
“Flume 源消耗由外部源(如 Web 服务器)传递给它的事件。外部源以目标 Flume 源可识别的格式向 Flume 发送事件。例如,Avro Flume 源可用于从 Avro 客户端或流中其他从 Avro 接收器发送事件的 Flume 代理接收 Avro 事件。可以使用 Thrift Flume Source 定义类似的流,以接收来自 Thrift Sink 或 Flume Thrift Rpc Client 的事件或用 Flume thrift 协议生成的任何语言编写的 Thrift 客户端。”
您可以在official web page 获得所有可用的资源。
话虽如此,您将需要一些进程来负责读取输入的 HDFS 文件并将其发送到任何可用的源。 ExecSource 可能适合您的需要,因为您可以指定将要运行的命令以生成输入数据。这样的命令可以是hadoop fs -cat /hdfs/path/to/input/data 或类似的东西。
尽管如此,考虑到您想要执行的处理,我想您将需要一个自定义接收器来实现它。我的意思是,源部分只是用于读取数据并以 Flume 事件的形式将其放入 Flume 通道。然后,一个或多个接收器将通过处理这些事件并生成适当的输出来消耗这些事件。
【讨论】:
另一种选择是将 netcat 源连接到同一个接收器,然后将 cat 文件连接到其中...
【讨论】: