谈到大数据,我们很常会想到hdfs、mapreduce、hbase、spark、hive等高大上的大数据工具或底层组件,但我们不能忘了饮水思源,我们的大数据的数据从哪里来呢? 有来自于mysql、oracle等关系型的结构化数据库,也有来自html、log等半结构数据,但问题来了!log类的文本如何采集、如何上传到hdfs或kafka中? 大家可能会想到采用ftp等手工传输方式,但实际是根据不可行,ftp如何保证数据保存至hdfs、kafka中。好,今天,我来们讲一种工具,flume,帮助您自动采集前端数据,并自动帮您保存至您想保存至的数据目的地。
一、首先我们看一下原理图
我们直接在web server上安装flume的agent,该agent可以直接从server上采集web log记录,并上传至大数据的hdfs数据中,帮助大家减少了自己开发数据采集工具的麻烦
根据上图,我们看到,Agent由三部分组成,source、channel、sink。其中source的作用为采集不同的数据源,如syslog、http post、log4j等常见的文本格式的记录。channel的作用主要是数据缓存,包括内存形式缓存和文件缓存。sink的作用主要为向不同的数据目的地写盘,常见如hdfs、kafka、hbase等。
二、其次,flume支持丰富的特性
1、支持同时向多个数据目的地写盘
2、支持多个数据源汇聚后向再目的数据写盘
汇聚的好处有:如数据地发生中断可进行数据缓存;便于减少管理难道,集中在汇聚的agent端进行数据配置。