开发手册 欢迎您!
软件开发者资料库

Apache Flume - Hadoop中的数据传输

Hadoop中的Apache Flume数据传输 - 从简介,Hadoop中的数据传输,架构,数据流,环境,配置,获取Twitter数据,序列生成器源,NetCat源开始,简单易学地学习Apache Flume。

据我们所知,大数据是一组无法使用传统计算技术处理的大型数据集.分析后,大数据可以提供有价值的结果. Hadoop 是一个开源框架,允许使用简单的编程模型在分布式环境中跨计算机集群存储和处理大数据.

流媒体/日志数据

通常,大多数要分析的数据都将由各种数据源生成,如应用程序服务器,社交网站,云服务器和企业服务器.此数据将采用日志文件事件的形式.

日志文件 : 通常,日志文件是文件,它列出了操作系统中发生的事件/操作.例如,Web服务器列出了日志文件中对服务器发出的每个请求.

在收集此类日志数据时,我们可以获得有关 :

  • 应用程序性能和定位各种软件和硬件故障。

  • 用户行为并获得更好的业务洞察力。

将数据传输到HDFS系统的传统方法是使用put命令。 让我们看看如何使用put命令。

HDFS put命令

处理日志数据的主要挑战是将多个服务器生成的这些日志移动到Hadoop环境。

Hadoop文件系统Shell提供了将数据插入Hadoop并从中读取的命令。 您可以使用put命令将数据插入Hadoop,如下所示。

$ Hadoop fs –put /path of the required file  /path in HDFS where to save the file

put命令的问题

我们可以使用Hadoop的put命令将数据从这些源传输到HDFS。 但是,它有以下缺点:

  • 使用put命令,我们一次只能传输一个文件,而数据生成器以更高的速率生成数据。 由于对旧数据的分析不太准确,我们需要有一个实时传输数据的解决方案。

  • 如果我们使用put命令,则需要打包数据并准备好上传。 由于Web服务器不断生成数据,因此这是一项非常困难的任务。

我们需要的是一种解决方案,它可以克服put命令的缺点,并将"流数据"从数据生成器传输到集中存储(尤其是HDFS),延迟更少。

HDFS问题

在HDFS中,该文件作为目录条目存在,并且文件的长度将被视为零,直到它被关闭。 例如,如果源正在将数据写入HDFS并且网络在操作过程中被中断(不关闭文件),则文件中写入的数据将丢失。

因此,我们需要一个可靠,可配置且可维护的系统来将日志数据传输到HDFS。

注意:在POSIX文件系统中,每当我们访问文件(比如执行写操作)时,其他程序仍然可以读取该文件(至少是文件的保存部分)。 这是因为光盘在关闭之前存在于光盘上。

可用解决方案

要将各种来源的流数据(日志文件,事件等)发送到HDFS,我们可以使用以下工具: 

Facebook的Scribe

Scribe是一种非常流行的工具,用于聚合和流式传输日志数据。 它旨在扩展到非常大量的节点,并且对网络和节点故障具有鲁棒性。

Apache Kafka

Kafka由Apache Software Foundation开发。 它是一个开源消息代理。 使用Kafka,我们可以处理具有高吞吐量和低延迟的源。

  • 应用程序性能和定位各种软件和硬件故障。

  • 用户行为并获得更好的业务洞察力。

将数据传输到HDFS系统的传统方法是使用put命令。 让我们看看如何使用put命令。

HDFS put命令

处理日志数据的主要挑战是将多个服务器生成的这些日志移动到Hadoop环境。


Hadoop文件系统Shell提供了将数据插入Hadoop并从中读取的命令。 您可以使用put命令将数据插入Hadoop,如下所示。

$ Hadoop fs –put /path of the required file  /path in HDFS where to save the file

put命令的问题

我们可以使用Hadoop的put命令将数据从这些源传输到HDFS。 但是,它有以下缺点:

  • 使用put命令,我们一次只能传输一个文件,而数据生成器以更高的速率生成数据。 由于对旧数据的分析不太准确,我们需要有一个实时传输数据的解决方案。

  • 如果我们使用put命令,则需要打包数据并准备好上传。 由于Web服务器不断生成数据,因此这是一项非常困难的任务。

我们需要的是一种解决方案,它可以克服put命令的缺点,并将"流数据"从数据生成器传输到集中存储(尤其是HDFS),延迟更少。

HDFS问题

在HDFS中,该文件作为目录条目存在,并且文件的长度将被视为零,直到它被关闭。 例如,如果源正在将数据写入HDFS并且网络在操作过程中被中断(不关闭文件),则文件中写入的数据将丢失。

因此,我们需要一个可靠,可配置且可维护的系统来将日志数据传输到HDFS。

注意:在POSIX文件系统中,每当我们访问文件(比如执行写操作)时,其他程序仍然可以读取该文件(至少是文件的保存部分)。 这是因为光盘在关闭之前存在于光盘上。

可用解决方案

要将各种来源的流数据(日志文件,事件等)发送到HDFS,我们可以使用以下工具:

Facebook’s Scribe

Scribe是一种非常流行的工具,用于聚合和流式传输日志数据。 它旨在扩展到非常大量的节点,并且对网络和节点故障具有鲁棒性。

Apache Flume

Apache Flume是一种工具/服务/数据提取机制,用于收集从各种webserve到集中数据存储的聚合和传输大量流数据,例如日志数据,事件(等等)。

它是一种高度可靠,分布式和可配置的工具,主要用于将各种源的流数据传输到HDFS。

在本教程中,我们将详细讨论如何使用Flume和一些示例。