Flume 序列生成器源



  • 配置

    在上一章中,我们已经看到了如何从Twitter源中获取数据到HDFS。本章介绍如何从Sequence Generator中获取数据。
  • 先决条件

    要运行本章提供的示例,您需要将HDFS和Flume一起安装。因此,在继续进行操作之前,请验证Hadoop安装并启动HDFS。(请参阅上一章以了解如何启动HDFS)。
  • 配置Flume

    我们必须使用conf文件夹中的配置文件配置源,通道和接收器。本章给出的示例使用了一个序列发生器源,一个存储通道和一个HDFS接收器。
    序列发生器源(source)
    它是连续生成事件的源。它维护着一个从0开始递增1的计数器。用于测试目的。配置此源时,必须为以下属性提供值-
    • Channels
    • Source type − seq
    通道(channel)
    我们正在使用memory通道。要配置memory通道,必须为通道类型提供一个值。以下是配置内存通道时需要提供的属性列表-
    • type - 它保存通道的类型。在我们的示例中,类型为MemChannel。
    • Capacity - 这是通道中存储的最大事件数。其默认值为100。(可选)
    • TransactionCapacity - 它是通道接受或发送的最大事件数。默认值为100。(可选)。
    HDFS接收器(sink)
    该接收器将数据写入HDFS。要配置此接收器,必须提供以下详细信息。
    • Channel
    • type- HDFS
    • hdfs.path - HDFS中要存储数据的目录的路径。
    我们可以根据情况提供一些可选值。下面给出的是我们在应用程序中配置的HDFS接收器的可选属性。
    • fileType-这是我们的HDFS文件的必需文件格式。SequenceFile,DataStream和CompressedStream是此流可用的三种类型。在我们的示例中,我们正在使用DataStream。
    • writeFormat-可以是文本或可写的。
    • batchSize-它是刷新到HDFS之前写入文件的事件数。默认值为100。
    • rollsize-这是触发滚动的文件大小。默认值为100。
    • rollCount-它是滚动之前写入文件的事件数。默认值为10。
  • 示例–配置文件

    下面给出的是配置文件的示例。复制此内容并将其另存为Flume的conf文件夹中的seq_gen.conf。
    
    # Naming the components on the current agent 
    
    SeqGenAgent.sources = SeqSource   
    SeqGenAgent.channels = MemChannel 
    SeqGenAgent.sinks = HDFS 
     
    # Describing/Configuring the source 
    SeqGenAgent.sources.SeqSource.type = seq
      
    # Describing/Configuring the sink
    SeqGenAgent.sinks.HDFS.type = hdfs 
    SeqGenAgent.sinks.HDFS.hdfs.path = hdfs://localhost:9000/user/jc2182/seqgen_data
    SeqGenAgent.sinks.HDFS.hdfs.filePrefix = log 
    SeqGenAgent.sinks.HDFS.hdfs.rollInterval = 0
    SeqGenAgent.sinks.HDFS.hdfs.rollCount = 10000
    SeqGenAgent.sinks.HDFS.hdfs.fileType = DataStream 
     
    # Describing/Configuring the channel 
    SeqGenAgent.channels.MemChannel.type = memory 
    SeqGenAgent.channels.MemChannel.capacity = 1000 
    SeqGenAgent.channels.MemChannel.transactionCapacity = 100 
     
    # Binding the source and sink to the channel 
    SeqGenAgent.sources.SeqSource.channels = MemChannel
    SeqGenAgent.sinks.HDFS.channel = MemChannel 
    
  • 执行

    浏览Flume主目录并执行应用程序,如下所示。
    
    $ cd $FLUME_HOME 
    $./bin/flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/seq_gen.conf  --name SeqGenAgent 
    
    如果一切顺利,源将开始生成序列号,该序列号将以日志文件的形式推送到HDFS中。
    下面给出的是命令提示符窗口的快照,该窗口将序列生成器生成的数据提取到HDFS中。
    flume
  • 验证HDFS

    您可以使用以下URL访问Hadoop管理Web UI-
    
    http://localhost:9870/
    
    单击页面右侧名为Utilities的下拉菜单。您可以看到选项,如下图所示。
    flume
    单击browser file system,然后输入存储了由序列生成器生成的数据的HDFS目录的路径。
    在我们的示例中,路径为/user/jc2182/seqgen_data/。然后,您可以看到由序列生成器生成的日志文件列表,存储在HDFS中,如下所示。
    flume
  • 验证文件内容

    所有这些日志文件均包含顺序格式的数字。您可以使用cat命令在文件系统中验证这些文件的内容,如下所示。
    flume