当前位置:
首页
文章
后端
详情

学习记录7 Hadoop生态圈技术栈(五)

Flume

flume是一个日志采集工具,这里需要注意,必须是日志哦。

当然了数据采集工具还有很多了,不过Flume应该是最火的,这里这里只讲这个。

flume有三个主要的组件,分别是source,channel和sink

source:接受日志数据的组件,可以处理各种类型各种格式的日志数据。当然也只能是日志数据,主要有avro、exec、netcat之类的。

channel:这个呢就是source和sink间的缓冲区,sink比较脆弱啦,一股脑涌进去人家也承受不了,就得缓冲一下啦。这样就允许source和sink运行在不同的速率上。

明面上channel好像就这点作用,但是,你可不要被她的外表欺骗了。channel起到的作用远不止于此。这里的缓冲带来的另一个优势就是线程上面,source和sink可以在不用速率上运行,那么这就意味着可以同时处理多个source和sink,保持线程的安全。常见的channel有memory channel、file channel和kafka channel。

memory和file的区别其实也很明显,memory是内存,file是文件,缓存到内存memory中,当然毫无疑问的快啦,但容量有限,而且万一出故障了,就没了。存文件file相对慢一些,但是容量大,相对安全。就当扯平了。

sink:他就不断从channel中取数据了,发送到目的地,可以是hdfs,hive,HBASE。

sink也有很多,值得一提的就是logger sink,这个主要用于测试,假如你的sink坏掉了,可以考虑用这个替换,如果显示数据了,那就是sink坏了,如果还不显示数据,那就是前面错了。

还有一个点也说一下吧,就是event,这个是flume数据传输的最小单位,具体多大也没说。

flume的拓扑结构

这里大概说一下吧,就是看flume的sink,前面说了sink发送的目的地很多,那么,如果sink的目的地是下一个source怎么办呢?这就是一个agent的串联。感觉没啥用,所以这种出现的也很少,多个串联反而会影响效率。

另一种就是复制模式,就是一个source连了多个channel,每个channel对应一个sink,发往不同的目的地。

聚合模式

最常用的其实是聚合模式,当然也非常有效,日常的web应用会连在上百个服务器中,大的甚至是上千上万个服务器。这种日志,想想就很恶心。用聚合模式来处理就可以很好的解决,每台服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由这个flume传到目标地区中。

后面的这个实例有些麻烦,明天再看吧

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型