Flume学习
1. Flume架构
https://blog.csdn.net/a2011480169/article/details/51544664
2. flume核心是把数据从数据源source收集过来,再将收集到的数据送到指定的目的地sink,为保证输送过程成功,在送达sink之前,会先缓存数据channel,待数据真正到达目的地sink后,flume再删除自己缓存的数据
3. event
事务保证是在event级别进行的
event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录
event本身为一个字节数据
4. agent
agent本身是一个java进程,运行在日志收集节点
5. flume运行机制
source接收到数据之后,将数据发送给channel,channel作为数据缓冲区会临时存放这些数据,随后,sink会将channel中的数据发送到外部指定的目的地,例如HDFS
只有当sink将channel中的数据成功发送之后,channel才会删除临时数据,这种机制保证了数据传输的可靠性和安全性
6. flume支持多级flume的agent,例如sink可以将数据写入下一个agent的source中;flume还支持扇入(fan-in),source可以接受多个输入,和扇出(fan-out),就是sink可以将数据输出到多个目的地
7. 案例
https://www.cnblogs.com/zyde/p/8946069.html
NetCat Source:监听一个指定的网络端口,即只要应用程序向这个端口写数据,这个source组件就可以获取到信息,其中sink:logger,Channel:memory
NetCat Source:监听一个指定的网络端口,其中sink:hdfs,Channel:file
Spooling Directory Source:监听一个指定的目录,即只要应用程序向这个指定的目录中添加新文件,source组件就可以获取该信息,并解析该文件的内容,然后写入channel,写入后,标记该文件已完成或删除该文件,其中sink:logger,channel:memory
Spooling Directory Source:监听一个指定目录,其中sink:hdfs,channel:file
Exec Source:监听一个指定的命令,获取一条命令的结果作为它的数据源,常用命令为tail -f file,即