新彩天欢迎您!
幻海优品

Apache Flume - 获取Twitter数据

使用Flume,我们可以从各种服务中获取数据并将其传输到集中存储(HDFS和HBase)。本章介绍如何从Twitter服务获取数据并使用Apache Flume将其存储在HDFS中。

如Flume Architecture中所述,Web服务器生成日志数据,此数据由代理收集水槽。通道将此数据缓冲到接收器,最终将其推送到集中存储。

在本章提供的示例中,我们将创建一个应用程序并使用实验从中获取推文Twitter源码由Apache Flume提供。我们将使用内存通道缓冲这些推文和HDFS接收器将这些推文推送到HDFS。

Fetch数据

要获取Twitter数据,我们必须按照下面给出的步骤减去;

  • 创建一个Twitter应用程序
  • 安装/启动HDFS
  • 配置Flume

创建Twitter应用程序

为了从Twitter获取推文,需要创建一个Twitter应用程序。按照以下步骤创建Twitter应用程序。

步骤1

要创建Twitter应用程序,请单击以下链接 https://apps.twitter.com/ 。登录您的Twitter帐户。您将拥有一个Twitter应用程序管理窗口,您可以在其中创建,删除和管理Twitter应用程序。

应用程序管理

步骤2

单击创建新应用程序按钮。您将被重定向到一个窗口,在该窗口中您将获得一个申请表,您必须填写您的详细信息才能创建应用程序。填写网站地址时,请提供完整的网址格式,例如 http://example.com。

创建应用程序

步骤3

填写详细信息,完成后接受开发人员协议,单击页面底部的创建您的Twitter应用程序按钮。如果一切顺利,将使用给定的详细信息创建一个应用程序,如下所示。

应用程序已创建

第4步

在页面底部的键和访问标记标签下,您可以观察到名为的按钮创建我的访问令牌。单击它以生成访问令牌。

密钥访问令牌

第5步

最后,点击页面右侧顶部的测试OAuth 按钮。这将显示一个页面,其中显示您的消费者密钥,消费者密钥,访问令牌,访问令牌密钥。复制这些细节。这些对于在Flume中配置代理非常有用。

OAuth工具

启动HDFS

由于我们将数据存储在HDFS中,因此我们需要安装/验证Hadoop。启动Hadoop并在其中创建一个文件夹来存储Flume数据。在配置Flume之前,请按照以下步骤进行操作。

步骤1:安装/验证Hadoop

安装 Hadoop 。如果您的系统中已经安装了Hadoop,请使用Hadoop版本命令验证安装,如下所示。

 
$ hadoop version

如果您的系统包含Hadoop,并且您已设置路径变量,那么您将得到以下输出−

 
Hadoop 2.6.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r
e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1
编译作者:jenkins于2014-11-13T21:10Z
使用protoc编译2.5.0
来源于校验和18e43357c8f927c0695f1e9522859d6a
此命令使用/ home / Hadoop / hadoop / share / hadoop / common运行/hadoop-common-2.6.0.jar

第2步:启动Hadoop

浏览 sbin Hadoop目录和启动yarn和Hadoop dfs(分布式文件系统),如下所示。

 
cd / $ Hadoop_Home / sbin /
$ start-dfs.sh
localhost:起始namenode,登录到
/home/Hadoop/hadoop/logs/hadoop-Hadoop-namenode-localhost.localdomain.out
localhost:启动datanode,记录到
/home/Hadoop/hadoop/logs/hadoop-Hadoop-datanode-localhost.localdomain.out
启动辅助名称节点[0.0.0.0]
启动secondarynamenode,登录到
/home/Hadoop/hadoop/logs/hadoop-Hadoop-secondarynamenode-localhost.localdomain.out
$ start-yarn.sh
起始纱守护程序
启动resourcemanager,记录到
/home/Hadoop/hadoop/logs/yarn-Hadoop-resourcemanager-localhost.localdomain.out
localhost:起始nodemanager,登录到
/ home / Hadoop / hadoop / logs / yarn -Hadoop-nodemanager-localhost.localdomain.out

步骤3:在HDFS中创建目录

在Hadoop DFS中,您可以使用命令 mkdir 创建目录。浏览它并在所需路径中创建一个名为 twitter_data 的目录,如下所示。

 
$ cd / $ Hadoop_Home / bin /
$ hdfs dfs -mkdir hdfs:// localhost:9000 / user / Hadoop / twitter_data

配置Flume

我们必须使用 conf 文件夹中的配置文件配置源,通道和接收器。本章给出的示例使用Apache Flume提供的实验源,名为 Twitter 1%Firehose 内存通道和HDFS接收器。

Twitter 1%Firehose Source

这个来源是高度实验性的。它使用流API连接到1%的示例Twitter Firehose,并不断下载推文,将它们转换为Avro格式,并将Avro事件发送到下游的Flume接收器。

我们将通过以下方式获取此源代码默认随着Flume的安装。对应于此源的 jar 文件可以位于 lib 文件夹中,如下所示。

Twitter Jar文件

设置类路径

classpath 变量设置为 Flume-env.sh 文件中的 lib Flume文件夹,如下所示。

 
export CLASSPATH = $ CLASSPATH:/ FLUME_HOME / lib / *

此来源需要详细信息,例如使用者密钥,使用者密钥,访问令牌,访问Twitter应用程序的令牌密钥。在配置此来源时,您必须为以下属性提供值−

  • 频道

  • 来源类型:org.apache.flume.source.twitter.TwitterSource

  • consumerKey − OAuth使用者密钥

  • consumerSecret − OAuth消费者秘密

  • accessToken − OAuth访问令牌

  • accessTokenSecret − OAuth令牌密钥

  • maxBatchSize −应该在Twitter批处理中的最大Twitter消息数。默认值为1000(可选)。

  • maxBatchDurationMillis −关闭批处理之前等待的最大毫秒数。默认值为1000(可选)。

频道

我们正在使用内存频道。要配置内存通道,必须为通道类型提供值。

  • 输入−它保留了频道的类型。在我们的示例中,类型为 MemChannel

  • 容量−它是通道中存储的最大事件数。其默认值为100(可选)。

  • TransactionCapacity −它是通道接受或发送的最大事件数。它的默认值是100(可选)。

HDFS Sink

此接收器将数据写入HDFS。要配置此接收器,您必须提供以下详细信息。

  • 频道

  • type − hdfs

  • hdfs.path − HDFS中目录的路径,用于存储数据。

我们可以根据场景提供一些可选值。下面给出了我们在应用程序中配置的HDFS接收器的可选属性。

  • fileType −这是我们的HDFS文件所需的文件格式。 SequenceFile,DataStream CompressedStream 是此流可用的三种类型。在我们的示例中,我们使用 DataStream

  • writeFormat −可以是文本也可以是可写的。

  • batchSize −它是在将文件刷新到HDFS之前写入文件的事件数。它的默认值是100.

  • rollsize −触发滚动的文件大小。默认值为100.

  • rollCount −它是在滚动之前写入文件的事件数。它的默认值是10.

示例 - 配置文件

以下是一个示例配置文件。复制此内容并保存为 twitter.conf 在Flume的conf文件夹中。

 
#命名组件现任代理人。
TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS
#描述/配置源
TwitterAgent.sources.Twitter .type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.consumerKey =你的OAuth消费者密钥
TwitterAgent.sources.Twitter.consumerSecret =你的OAuth消费者秘密
TwitterAgent.sources.Twitter.accessToken =您的OAuth使用者密钥访问令牌
TwitterAgent.sources.Twitter.accessTokenSecret =您的OAuth使用者密钥访问令牌秘密
TwitterAgent.sources.Twitter.keywords =教程指向,java, bigdata,mapreduce,mahout,hbase,nosql
#描述/配置接收器
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
TwitterAg ent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
#描述/配置频道
TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100
#将源和接收器绑定到通道
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channel = MemChannel

执行

浏览Flume主目录并执行如下所示的应用程序。

 
$ cd $ FLUME_HOME
$ bin / flume-ng agent --conf ./conf/-f conf / twitter.conf
Dflume.root.logger = DEBUG,console -n TwitterAgent

如果一切顺利,将会开始将推文流式传输到HDFS。下面给出了获取推文时命令提示符窗口的快照。

获取推文

验证HDFS

您可以使用下面给出的URL访问Hadoop管理Web UI。

 
http:// localhost:50070 /

单击页面右侧名为 Utilities 的下拉列表。你可以看到两个选项,如下面给出的快照所示。

验证HDFS

单击浏览文件系统,然后输入存储推文的HDFS目录的路径。在我们的示例中,路径将是 / user / Hadoop / twitter_data / 。然后,您可以看到存储在HDFS中的推特日志文件列表,如下所示。

浏览文件系统

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除