摘要: 我们要配置源,信道,并使用在配置文件中下沉的conf文件夹中。这一章中给出的示例使用阿帕奇水槽提供一个实验源名为Twitter的1%流水内存通道和HDFS下沉。 Twitter1%Firehose来源 这个源是高度实验性的。 ...
我们要配置源,信道,并使用在配置文件中下沉的conf文件夹中。这一章中给出的示例使用阿帕奇水槽提供一个实验源名为Twitter的1%流水内存通道和HDFS下沉。
Twitter1%Firehose来源
这个源是高度实验性的。它使用流API连接到1%的示例TwitterFirehose,并持续下载tweets,将其转换为Avro格式,并将Avro事件发送到下游Flume接收器。
我们将默认获得这个源和Flume的安装。该罐子对应于这个源文件可以在位于LIB文件夹,如下图所示。
设置类路径
在设置类路径变量的LIB水槽的文件夹中Flume-env.sh文件,如下所示。
exportCLASSPATH=$CLASSPATH:/FLUME_HOME/lib/*
这源需要的详细信息,如消费者的关键,消费者的秘密,访问令牌,以及访问令牌秘密Twitter的应用程序。配置此源时,必须向以下属性提供值-
频道
源类型:org.apache.flume.source.twitter.TwitterSource
consumerKey?-OAuth用户端密钥
consumerSecret?-OAuth用户端密钥
的accessToken?-OAuth访问令牌
accessTokenSecret?-的OAuth令牌秘密
maxBatchSize?-Twitter消息,应该是在叽叽喳喳批次的最大数量。默认值为1000(可选)。
maxBatchDurationMillis?-毫秒的最大数量为关闭一批前等待。默认值为1000(可选)。
渠道
我们正在使用内存通道。要配置内存通道,您必须对渠道的类型提供价值。
类型?-它拥有信道的类型。在我们的例子中,类型为MemChannel。
容量?-它是存储在信道的事件的最大数量。其默认值为100(可选)。
TransactionCapacity?-它是信道接收或发送事件的最大数量。其默认值为100(可选)。
HDFS接收器
此接收器将数据写入HDFS。要配置此片,你必须提供以下资料。
渠道
类型?-HDFS
hdfs.path?-在HDFS的目录中的数据将被存储的路径。
我们可以根据场景提供一些可选值。下面给出了我们在应用程序中配置的HDFS接收器的可选属性。
的fileType?-这是我们的HDFS文件的所需文件格式。SequenceFile,的数据流中和CompressedStream可与此流的三种类型。在我们的例子中,我们使用了的数据流中。
writeFormat?-可能是文本或可写的。
BATCHSIZE?-这是之前被冲洗到HDFS写入文件的事件的数量。其默认值为100。
rollsize?-这是文件的大小来触发一卷。默认值为100。
rollCount?-它是写入到该文件中被卷之前事件的数目。其默认值为10。
示例-配置文件
下面给出了配置文件的示例。复制此内容,并保存为twitter.conf在水槽的conf文件夹。
#Namingthecomponentsonthecurrentagent.
TwitterAgent.sources=Twitter
TwitterAgent.channels=MemChannel
TwitterAgent.sinks=HDFS
#Describing/Configuringthesource
TwitterAgent.sources.Twitter.type=org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.consumerKey=YourOAuthconsumerkey
TwitterAgent.sources.Twitter.consumerSecret=YourOAuthconsumersecret
TwitterAgent.sources.Twitter.accessToken=YourOAuthconsumerkeyaccesstoken
TwitterAgent.sources.Twitter.accessTokenSecret=YourOAuthconsumerkeyaccesstokensecret
TwitterAgent.sources.Twitter.keywords=tutorialspoint,java,bigdata,mapreduce,mahout,hbase,nosql
#Describing/Configuringthesink
TwitterAgent.sinks.HDFS.type=hdfs
TwitterAgent.sinks.HDFS.hdfs.path=hdfs://localhost:9000/user/Hadoop/twitter_data/
TwitterAgent.sinks.HDFS.hdfs.fileType=DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat=Text
TwitterAgent.sinks.HDFS.hdfs.batchSize=1000
TwitterAgent.sinks.HDFS.hdfs.rollSize=0
TwitterAgent.sinks.HDFS.hdfs.rollCount=10000
#Describing/ConfiguringthechannelTwitterAgent.channels.MemChannel.type=memory
TwitterAgent.channels.MemChannel.capacity=10000
TwitterAgent.channels.MemChannel.transactionCapacity=100
#Bindingthesourceandsinktothechannel
TwitterAgent.sources.Twitter.channels=MemChannel
TwitterAgent.sinks.HDFS.channel=MemChannel
执行
浏览Flume主目录并执行应用程序,如下所示。
$cd$FLUME_HOME
$bin/flume-ngagent--conf./conf/-fconf/twitter.conf
Dflume.root.logger=DEBUG,console-nTwitterAgent
如果一切顺利,将tweets流传输到HDFS将开始。下面给出了抓取tweets时命令提示符窗口的快照。
验证HDFS
您可以使用以下URL访问Hadoop管理WebUI。
http://localhost:50070/
点击命名的下拉工具在页面的右侧。您可以看到两个选项,如下面的快照所示。
点击浏览文件系统,并输入您所储存的鸣叫的HDFS目录的路径。在我们的例子中,路径是/用户/Hadoop的/twitter_data/。然后,您可以看到存储在HDFS中的twitter日志文件的列表,如下所示。
ApacheFlume-序列生成器源
在上一章中,我们已经看到了如何从twitter源提取数据到HDFS。本章介绍了如何来从数据序列发生器。
先决条件
要运行本章中提供的示例,您需要安装HDFS沿着水槽。因此,验证Hadoop安装并启动HDFS,然后继续。(参考上一章了解如何启动HDFS)。
配置Flume
我们要配置源,信道,并使用在配置文件中下沉的conf文件夹中。这一章中给出的示例使用NetCat的来源,内存通道和一个记录片。
NetCat源
在配置NetCat源时,我们必须在配置源时指定端口。现在,源(NetCat源)侦听给定的端口,并接收我们在该端口中输入的每一行作为单个事件,并通过指定的通道将其传送到接收器。
配置此源时,必须向以下属性提供值-
频道
源类型?-netcat的
绑定?-主机名或IP地址进行绑定。
端口?-端口号,这是我们希望的来源听。
渠道
我们正在使用的内存通道。要配置内存通道,你必须提供一个值,该通道的类型。下面给出了配置内存通道时需要提供的属性列表-
类型?-它拥有信道的类型。在我们的例子中,类型为MemChannel。
容量?-它是存储在信道的事件的最大数量。其默认值为100.(可选)
TransactionCapacity?-它是信道接收或发送事件的最大数量。其默认值为100.(可选)。
记录器接收器
此接收器记录传递给它的所有事件。一般来说,它用于测试或调试目的。要配置此接收器,您必须提供以下详细信息。
渠道
类型?-记录仪
配置文件示例
下面给出了配置文件的示例。复制此内容,并保存为netcat.conf在水槽的conf文件夹。
#Namingthecomponentsonthecurrentagent
NetcatAgent.sources=Netcat
NetcatAgent.channels=MemChannel
NetcatAgent.sinks=LoggerSink
#Describing/Configuringthesource
NetcatAgent.sources.Netcat.type=netcat
NetcatAgent.sources.Netcat.bind=localhost
NetcatAgent.sources.Netcat.port=56565
#Describing/Configuringthesink
NetcatAgent.sinks.LoggerSink.type=logger
#Describing/Configuringthechannel
NetcatAgent.channels.MemChannel.type=memory
NetcatAgent.channels.MemChannel.capacity=1000
NetcatAgent.channels.MemChannel.transactionCapacity=100
#Bindthesourceandsinktothechannel
NetcatAgent.sources.Netcat.channels=MemChannel
NetcatAgent.sinks.LoggerSink.channel=MemChannel
执行
浏览Flume主目录并执行应用程序,如下所示。
$cd$FLUME_HOME
$./bin/flume-ngagent--conf$FLUME_CONF--conf-file$FLUME_CONF/netcat.conf
--nameNetcatAgent-Dflume.root.logger=INFO,console
如果一切顺利,源开始侦听给定的端口。在这种情况下,它是56565。以下是NetCat源的命令提示符窗口的快照,该窗口已启动并侦听端口56565。
将数据传递到源
要将数据传递到NetCat源,您必须打开配置文件中给出的端口。打开一个单独的终端连接到使用源(56565)卷曲命令。当连接成功后,你会得到一个消息,“?连接?”,如下图所示。
$curltelnet://localhost:56565
connected
现在你可以逐行输入数据(在每行之后,你必须按Enter键)。该NetCat的源接收的每一行作为一个单独的事件,你会得到一个收到的消息“?OK?”。
每当你与传球的数据完成的,可以按(退出控制台按Ctrl+C)。下面给出的是我们已连接到使用源控制台的快照卷曲命令。
在上述控制台中输入的每一行将作为单独的事件由源接收。既然我们已经使用了记录器接收器,这些事件将通过指定通道(在这种情况下,内存通道)登录到控制台(来源控制台)。
|