哪些数据会被采集
1、被采集的数据主要是网页跳转数据:比如你从哪个网页跳转入该购物网站、你点击了哪些商品页面、在商品页面上停留了多少时间。
2、这些数据都保存在web应用服务器的log文件中:有用过iis、apache的同学,会通过log日志分析访问者的区域来源,实际该log文件有很多可以分析的数据。
这些数据如何被采集
1、存放在web应用服务器的数据被定时采集至hadoop中进行冷数据存储。通过flume定时监控web服务器中的目录文件,一旦发生变化,flume将数据传输至hdfs,作为非实时数据分析的基础。这样,我们可以根据数据分析的结果向你推送你关心的商品页面。
2、同时被放入kafka、storm进行流式数据分析。如果管理者需要看到全国不同省的访问热度,我们同时将Flume的数据送一份至kafka中,作为热数据分析源数据。
数据采集工具的神奇
提到大数据,一定会有一个组件flume会出现,否则数据无来源。flume有几个关键的特性,作为面试的经常问答题。
1、flume有几个组件:source、channel、sink。source指定数据采集源,一般源头:netcat(网络流)、exec(文件)等。channel配置拦截器等最重要的配置。sink配置下游的数据,下游一般是hdfs、kafka等载体。
采集telnet数据的flume配置举例:
2、channel有几种承载方式:内存承载、文件承载,如果是内存方式,flume服务器一旦断电,采集的数据会丢失,但这种丢失大部分场景结果可控,建议建议内存承载,提高效率。
3、source中有几种方法:toPut、PutList、toCommit、RollBack,是标准的一个java类中的方法。具体连续的数据流程。
做一个flume测试
我通过单虚拟机搭建了一个flume采集telnet数据的案例,一起看一下。其实flume也只是一个应用程序,基于hadoop的一些组件,发挥数据采集的作用。
1、通过telnet本地,发送测试数据
2、flume成功接收到数据,并送到控制台
flume的其它应用场景
flume除了简单的一个source、一个sink点对点的关系应用场景,还有两种重要的应用场景。
1、多source至单sink。这种应用场景主要是针对多台web应用服务器需要写入同一个hdfs等下游数据。这种配置的好处是如果hdfs的配置发生变化,只需要变化一个agent的配置即可。
2、单source至多sink。这种应用场景主要是针对同一个数据源有不同的数据消费端。