1. 再往HDFS写入数据时,要考虑时间的问题,通过通配符去考虑它的年月日问题,既然要用到时间通配符,那么肯定要知道时间戳是多少,知道了时间戳,才能通过通配符去展示年月日。第一个版本使用的是本地时间戳,本地时间戳还不能直接去用,因为时间的问题可能导致数据存储在不同的文件。这时候就需要去做一个更改,加一个拦截器。加入拦截器之后,我们从日志里面去获取它的时间戳,这个时间戳就是事件时间戳。拿到之后将它放在event_header里面,以map的形式,以timeStamp为K,时间戳为值。下游的HDFS sink就可以获取到它,通过通配符写入到HDFS。
2. 采集级联网络问题,高可用问题。为了防止下游节点崩了之后,上游都不能采集数据,造成大量的损失,所以加入高可用。也就是加入一个节点当作备用节点。上游通过两个sink,一个agent分配两个sink来控制下游的两个节点,进行主备的切换。如果上游挂掉了怎么办?通过写一个脚本来监控它的状态,上游的进程或者状态不够好的话,可以对它进行启动或者重启。
3. Flume一天跑几次? 无法知道,因为它有数据就会采集,它是一直在跑的。
4. 延迟上报的问题:就是数据向下游发送出现了延迟。出现数据的挤压问题,一般是上游数据生产过快,下游数据发送过慢,数据都挤压在channel里面,只能慢慢的发送。可以减少上游的数量,减少负载,增加下游的节点,实现负载均衡。数据的延迟是不可避免的,可以通过Flink的窗口进行解决。
5. 会不会因为时间问题,在数据写入到HDFS中会存放在不同的文件?不会,因为已经加入了拦截器,获取到了你的时间戳,根据你的事件时间来进行存放对应的目录下。