Hive离线分析
回顾业务流程
准备
搭建环境
1.启动Hadoop
start-all.sh
2.修改flume配置文件
flume.properties
a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 22222
a1.sources.r1.interceptors = t1
a1.sources.r1.interceptors.t1.type = timestamp
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hadoop01:9000/flux/reportTime=%Y-%m-%d
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.serializer = text
a1.sinks.k1.serializer.appendNewline = false
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
3.启动flume
cd /usr/local/src/flume/apache-flume-1.6.0-bin/conf
../bin/flume-ng agent -c ./ -f ./flume.properties -n a1 -Dflume.root.logger=INFO,console
4.启动jt-logserver
5.测试
访问locahost/a.jsp和locahost/b.jsp
准备数据
以下方式只做参考,可以自己随意访问产生数据,注意,关闭浏览器代表一个会话终结,清除cookie或者更换浏览器模拟不同用户。
浏览器A:访问3次a.jsp,2次b.jsp关闭浏览器
浏览器B:访问3次a.jsp,2次b.jsp关闭浏览器
浏览器A:访问1次a.jps
浏览器B:访问1次b.jps
注意,flume输出的数据不是一条一个单独文件,而是根据我们的配置及自身的策略来决定何时生成一个完整的文件。
Create:开始创建一个tmp零时文件并写入数据
Closing:关闭写入链接,停止对该文件的操作
Renaming:重命名tmp文件为最终文件
Writer callback called:重置写入状态
如何配置单个文件的大小?以下为图例,详见官网
以上配置都有默认值,所以我们不配也没有问题。但是即使配置了固定值,flume也不一定会按照我们的想法来执行,通过翻阅源码可以发现,flume除了安装配置数据执行外还额外增加了自己的判定逻辑,当长时间没有活动时,也会关闭本次链接,生成一个完整的文件。