欢迎来到天天文库
浏览记录
ID:19700053
大小:3.94 MB
页数:54页
时间:2018-10-05
《flume+hadoop+hive的离线分析系统基本架构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、最近在学习大数据的离线分析技术,所以在这里通过做一个简单的网站点击流数据分析离线系统来和大家一起梳理一下离线分析系统的架构模型。当然这个架构模型只能是离线分析技术的一个简单的入门级架构,实际生产环境中的大数据离线分析技术还涉及到很多细节的处理和高可用的架构。这篇文章的目的只是带大家入个门,让大家对离线分析技术有一个简单的认识,并和大家一起做学习交流。离线分析系统的结构图 整个离线分析的总体架构就是使用Flume从FTP服务器上采集日志文件,并存储在HadoopHDFS文件系统上,再接着用Hadoop的mapreduce清洗日志文件,最后使用H
2、IVE构建数据仓库做离线分析。任务的调度使用Shell脚本完成,当然大家也可以尝试一些自动化的任务调度工具,比如说AZKABAN或者OOZIE等。 分析所使用的点击流日志文件主要来自Nginx的access.log日志文件,需要注意的是在这里并不是用Flume直接去生产环境上拉取nginx的日志文件,而是多设置了一层FTP服务器来缓冲所有的日志文件,然后再用Flume监听FTP服务器上指定的目录并拉取目录里的日志文件到HDFS服务器上(具体原因下面分析)。从生产环境推送日志文件到FTP服务器的操作可以通过Shell脚本配合Crontab定时器来实现。
3、网站点击流数据 图片来源:http://webdataanalysis.net/data-collection-and-preprocessing/weblog-to-clickstream/#comments 一般在WEB系统中,用户对站点的页面的访问浏览,点击行为等一系列的数据都会记录在日志中,每一条日志记录就代表着上图中的一个数据点;而点击流数据关注的就是所有这些点连起来后的一个完整的网站浏览行为记录,可以认为是一个用户对网站的浏览session。比如说用户从哪一个外站进入到当前的网站,用户接下来浏
4、览了当前网站的哪些页面,点击了哪些图片链接按钮等一系列的行为记录,这一个整体的信息就称为是该用户的点击流记录。这篇文章中设计的离线分析系统就是收集WEB系统中产生的这些数据日志,并清洗日志内容存储分布式的HDFS文件存储系统上,接着使用离线分析工具HIVE去统计所有用户的点击流信息。 本系统中我们采用Nginx的access.log来做点击流分析的日志文件。access.log日志文件的格式如下: 样例数据格式: 124.42.13.230--[18/Sep/2013:06:57:50+0000]"GET/shoppingMall?ver=1.
5、2.1HTTP/1.1"2007200"http://www.baidu.com.cn""Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;BTRS101170;InfoPath.2;.NET4.0C;.NET4.0E;.NETCLR2.0.50727)" 格式分析: 1、访客ip地址:124.42.13.230 2、访客用户信息: -- 3、请求时间:[18/Sep/2013:06:57:50+0000] 4、请求方式:GET 5、请求的url:
6、/shoppingMall?ver=1.10.2 6、请求所用协议:HTTP/1.1 7、响应码:200 8、返回的数据流量:7200 9、访客的来源url:http://www.baidu.com.cn 10、访客所用浏览器:Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;BTRS101170;InfoPath.2;.NET4.0C;.NET4.0E;.NETCLR2.0.50727) 收集用户数据 网站会通过前端JS代码或服务器端的后台代码收集
7、用户浏览数据并存储在网站服务器中。一般运维人员会在离线分析系统和真实生产环境之间部署FTP服务器,并将生产环境上的用户数据每天定时发送到FTP服务器上,离线分析系统就会从FTP服务上采集数据而不会影响到生产环境。 采集数据的方式有多种,一种是通过自己编写shell脚本或Java编程采集数据,但是工作量大,不方便维护,另一种就是直接使用第三方框架去进行日志的采集,一般第三方框架的健壮性,容错性和易用性都做得很好也易于维护。本文采用第三方框架Flume进行日志采集,Flume是一个分布式的高效的日志采集系统,它能把分布在不同服务器上的海量日志文件数据统
8、一收集到一个集中的存储资源中,Flum
此文档下载收益归作者所有