codecamp

Apache的水槽数据传输在Hadoop中

大数据,因为我们知道,是不能用传统的计算技术来处理大型数据集的集合。大数据,分析时,给出了有价值的结果。 Hadoop是一个开源框架,它允许存储和跨中使用简单的编程模型的计算机集群的分布式环境中处理大数据。

流/日志数据

通常,大部分是要分析将用相同的应用程序服务器,社交网站,云服务器和企业服务器各种数据源产生数据。该数据将在日志文件活动形式。

日志文件 -通常,日志文件,该目录中出现的一个操作系统事件/动作的文件 。例如,Web服务器列表中的日志文件的服务器的每个请求。

在收获这样的日志数据,我们可以得到有关的信息 -

  • 应用性能并找到各种软件和硬件故障。
  • 用户的行为并从中获得更好的业务洞察力。

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

HDFS PUT命令

在处理日志数据的主要挑战是将这些日志由多个服务器在Hadoop环境中产生。

Hadoop的文件系统壳牌提供的命令将数据插入到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的抄写员

抄写员是一个非常受欢迎的工具,用于聚合和流日志数据。它被设计为扩展到一个非常大的数量的节点和健壮到网络和节点故障。

Apache的卡夫卡

卡夫卡已经由Apache Software Foundation开发。它是一个开源的消息代理。使用卡夫卡,我们可以处理高吞吐量和低延时的饲料。

Apache的水槽

阿帕奇水槽是用于收集聚集和输送大量流数据的例如日志数据,事件(等)从各webserves到一个集中式数据存储中的工具/服务/数据摄取机制。

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

在本教程中,我们将详细讨论如何使用渡槽一些例子。


阿帕奇水槽简介
阿帕奇水槽架构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }