Apache Flume – Hadoop 中的数据传输

Apache Flume – Hadoop 中的数据传输


大数据,因为我们知道,是不能用传统的计算技术来处理大型数据集的集合。大数据在分析时会给出有价值的结果。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 命令的问题

我们可以使用Hadoopput命令将数据从这些源传输到 HDFS。但是,它存在以下缺点 –

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

  • 如果我们使用put命令,则需要对数据进行打包并准备好上传。由于网络服务器不断生成数据,这是一项非常艰巨的任务。

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

HDFS 的问题

在 HDFS 中,文件作为目录项存在,文件的长度将被视为零,直到它关闭。例如,如果一个源正在向 HDFS 写入数据,并且在操作过程中网络中断(没有关闭文件),那么写入文件中的数据将丢失。

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

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

可用的解决方案

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

Facebook的抄写员

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

卡夫卡

Kafka 由 Apache 软件基金会开发。它是一个开源消息代理。使用 Kafka,我们可以处理高吞吐量和低延迟的提要。

阿帕奇水槽

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

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁