Apache Flume 简明教程
Apache Flume - Data Transfer In Hadoop
如我们所知, Big Data, 是一组无法使用传统计算技术处理的大型数据集。大数据经过分析后可得出有价值的结果。 Hadoop 是一个开源框架,允许使用简单的编程模型通过计算机集群在分布式环境中存储和处理大数据。
Streaming / Log Data
一般而言,要分析的大部分数据都是由各种数据源(如应用程序服务器、社交网站、云服务器和企业服务器)产生的。这些数据将采用 log files 和 events 的形式。
Log file − 通常,日志文件是一种列出操作系统中发生的事件/操作的 file 。例如,Web 服务器会在日志文件中列出向服务器发出的每个请求。
收集此类日志数据后,我们可以获取有关以下方面的信息:
-
应用程序性能,以及找到各种软件和硬件故障。
-
用户行为,以及得出更好的业务见解。
将数据导入 HDFS 系统的传统方法是使用 put 命令。我们来看看如何使用 put 命令。
HDFS put Command
处理日志数据的主要挑战在于将多台服务器产生的这些日志移到 Hadoop 环境中。
Hadoop File System Shell 提供了将数据插入到 Hadoop 并从中读取数据的命令。您可以使用 put 命令将数据插入到 Hadoop 中,如下所示。
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
Problem with put Command
我们可以使用 Hadoop 的 put 命令将数据从这些源传输到 HDFS。但它存在以下缺点:
-
使用 put 命令时,我们可以在数据生成器生成数据时以更高的速率传输 only one file at a time 。由于对较旧数据进行的分析不够准确,因此我们需要一个实时传输数据的解决方案。
-
如果我们使用 put 命令,则需要对数据进行打包并准备上传。由于 Web 服务器会生成持续的数据,因此这是一项非常困难的任务。
我们在这里需要一个解决方案,该解决方案可以克服 put 命令的缺点,并且可以将数据生成器中的“流式数据”传输到集中存储(尤其是 HDFS)中,且延迟较低。