我们需要在flume1里面设置选择器为复制机制。
其实也可以不用写,因为,它是默认的。
所以将这句话复制在flume1.conf里面。
开始测试了:
1、开启多个窗口,因为到时候开启多个agent都是阻塞的进程。
2、分多层,我们开flume有顺序吗?
尽量,先开下游flume。
现在我们先测试:先开上游,也就是先开flume1
结论是:有点问题,可以看日志数据。
先到flume的los里面查看日志信息
然后一直按换行键,这样做一个标记。
3、在每个窗口进入flume的根目录
4、加载flum1.conf配置文件:
但是通过日志信息发现两个端口都拒绝连接了
对于avro 的这样的框架来说,第二层avro source相当于服务端。
正常情况下,一个客户端,一个服务端,肯定先开服务端。
所以这时候把刚开的agent关掉
记住:source是服务端!!!
后面跨机器通信,ip地址就不能乱写了。
现在正式测试的时候。就先开flume2和flume3了
1、做一下准备工作。
从flume1.conf里面查看到我们监控的变动文件的目录是:
再从flume3.conf看一下最后输出的数据放在的目录:
我们自己去创建这两个目录:
先创建源数据的目录:/opt/module/data/hive.log
进入到data目录。
创建hive.log文件。
2、分别开启agent进程,需要先开启下游,在开启上游,否则会报错。
创建好源数据之后。开启另外一个agent进程,加载flume2.conf
开启另外一个agent进程,加载flume3.conf
最后启动agent进程,加载flume1.conf
现在三个agent都已经成功的启动起来了。
3、在/opt/module/data/hive.log源数据中追加数据,开始测试
在hive.log文件中追加hello atguigu两条数据。
4、去hdfs上查看是否数据已经上传上来了。
30s之后会更新。
5、再去查看本地文件是否已经有数据了。
进去目录:/opt/module/datas/group1
它和hdfs有不同的地方:
hdfs里面:30s滚动一次,如果下30s没有新文件,就不会滚动了。
而本地文件:30s一个,而且都是空的文件。
只需要看有数据的文件cat
在hdfs里面就不会产生空文件。如果它有大量空文件,那就崩了。
整个需求:
读取本地文件,通过副本机制传给两个channel,两个channel传给两个sink,这就是第一层,第二层是一个sink传给avro source把数据传到hdfs,另一个是sink传给 avro source把数据上传到本地文件。
将hdfs产生的文件下载到桌面,
这样就实现了将完全相同的数据传给了不同的人。以后在生产环境中,这个数据不只一个部门需要使用。