大数据离线分析项目(hadoop).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、 项目总体需求、具体设计 1、总体需求:捕获用户每天的行为数据,生成业务日志文件,根据日志文件清洗、 分析、提取出需要的价值信息(pv :页面浏览量 uv :独立访客数 独立 IP 会话 时长等),对网站的良好运营提供有价值的指标。 2、具体设计 2.1 捕获(JsSDK)用户行为数据(launch 事件、pageView 事件、event 事件、 chargerequet 事件) 2.2 将捕获的数据发送给 web 服务器,生成日志文件(Nginx) 2.3 将日志文件上传至文件存储系统中(Shell 脚本、Flume) 2.4 在文件存储系统中对日志文件进行清洗,过滤掉脏数据和不需要的字段 (MapReuce job 任务) 2.5 将过滤后的日志文件导入到数据库中(HBase) 2.6 通过 MapReduce 程序或 Hive 进行统计分析(Hive) 2.7 将统计分析后的结果导入到本地数据库中进行永久储存(Mysql) 2.8 在前端进行展示(SpringMVC+Highcharts) 二、 项目架构(画图) 具体分为三个部分(如下图所示): 数据收集层 hadoop、hive、flume、kafka、shell 数据分析层 hive、MapReduce、spark 数据展示层 springmvc + highcharts 三、 技术选型、特点、为什么 1. JsSDK 捕获前端页面数据。Javascript 编写页面日志生成与发送工具(原则: 保持对业务代码最小影响) 特点:采用原生的 JavaScript 编写,以 js 文件嵌入到前端,页面触发业务所 关注的事件(按照收集数据的不同分为不同的事件)时调用相关方法。 2. Java sdk 后台服务日志生成与发送工具 JavaSDK 代码很简单,可以打成 jar 包或者直接拷贝类到具体的项目中,正常 逻辑处理到 JavaSDK 所关注的事件后,调用 JavaSDK 提供的 api 即可。 3. Nginx web 服务器,产生日志文件 特点: Nginx 是一个小巧而高效的 Linux 下的 web 服务器软件,相比较 Apache 它不仅有稳定性、丰富的功能集、示例配置文件,更重要的是 Nginx 是基于事件的,它的内存使用很低,系统资源消耗小很多。 3. shell 脚本上传日志文件(数据量一般比较小的场景,不会立即进行分析) 分割日志,每天定时分割成昨天的日志文件。(vi split.sh) 上传到 HDFS。(vi put2hdfs.sh) flume 上传(数据量一般比较大的场景,需要实时处理。) 5. HBase 数据库 数据解析以后,我们把它存入 HBase 表。因为:不同的事件,最后上传到 HDFS 里面每行数据的字段数量是不一样的;而且 HBase 中,单表数据量相对比较大 6. MySql 最终结果存储 Mysql 是关系型数据库,结构十分清晰,能够与 JavaWeb 中的 SpringMVC 进行很好的对接;而且 SQL 语句是结构化的查询语言,方便运营页面查询数据 7. SpringMVC+Highcharts 进行报表显示 四、 具体实现需求(分析了哪些功能pv、uv) 主要实现需求: Pv:页面的浏览次数,衡量网站用户访问的网页数量;用户每打开一个页面就记录 一次,多次打开同一个页面则浏览量累计。描述用户访问网站信息,应用于基本的 各个不同计算任务 Uv :独立访客数 1 天内访问某站点的人数(以 cookie 为依据) 1 天内同一访客的多次访问只计为 1

文档评论(0)

xina171127 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档