一、业务说明

使用Hadoop2及其他开源框架,对本地的日志文件进行处理,将处理后需要的数据(PV、UV...)重新导入到关系型数据库(Mysql)中,使用Java程序对结果数据进行处理,组织成报表的形式在数据后台进行展示。

二、为什么使用Hadoop(开发动机)

现有的日志处理方式,是采用纯的java程序来计算的,对于大数据的日志文件来说,这种方案在处理速度、IO占用、数据备份及资源利用率方面都有一定的缺陷;

相比之下使用Hadoop完成数据存储和计算有以下的好处:

(1)高可靠性:Hadoop支持对数据的多副本备份;
(2)高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计    的节点中。
(3)高效性:通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快   速。
(4)高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

(5)高资源利用率:管理员可以根据当前服务器的配置,来设置不同的资源调度方案(yarn),做到资源利用最大化。

三、数据处理流程图

四、类目贡献率案例流程

一、案例业务目标:

统计2014年12月16日 全天,用户点击数top20的商品类别条目

二、开发步骤

(1)将2014年12月16日的日志(约16G)上传到HDFS文件系统的 /input/log_2014-12-16目录下

(2)、编写MapReduce程序清洗数据

程序逻辑分析:

筛选出日志字段中url包含?id=...的行,该url表示的含义为用户点击了某个商品类目为id的条目,程序的目标是只筛选出含有此url的行数据,对于不包含的行将舍弃。 清洗后的数据存放在HDFS的   /output/cleanItem_2014_12_16目录下(清洗后的数据约为140MB)

(3)、将清洗后的数据映射到Hive表中

进入hive的client端,建立一个外部分区表mmb_ordercontribute,这个表的字段与日志的字段一一对应,但会多一个data的分区字段,这相当于Mysql中的索引,当按照日期查询时,效率会高,以下是在hive中,mmb_ordercontribute的建表语句:

如图所示,表的映射路径location指向了清洗后的数据目录

(4)操作hive表数据

数据经过映射后,就可以像mysql等数据库一样通过sql语句的形式来处理表数据了,比如:

统计当天所有用户访问条目的总次数:

统计的结果为:904423

虽然是一个类似mysql的查询语句,但是处理的流程和mysql是天差地别的,hive会将这条语句解析成一个MapReduce程序进行统计,如图所示,hive处理完这个查询cup使用的总时间为6分钟左右,而分配到逻辑cpu上,实际使用的时间为28.5秒,如果去除mapreduce的解析和准备工作,mapreduce的执行时间是非常少的。

但hive并不是所有的sql语句都被映射成mapreduce程序,唯一的例外(不配置的话)就是:SELECT * FROM  table_name LIMIT;因为这只是在截取表的前几条数据而已;

(5)使用Hive处理清洗数据并导出到临时表

真正需要的数据将在此步得出,即:统计出top20的用户点击类目,将统计出的数据作为hive的一张临时表:

item_20141216表存储,备后用:

sql语句:

CREATE TABLE

item_20141216

AS SELECT

itemId,COUNT(1) as nums

FROM

mmb_ordercontribute

GROUP BY

itemId

ORDER BY

nums DESC;

导出后的表item_20141216 存放在hive的默认数据仓库下:

注:每行数据其实由两部分组成,行号和数量,看着像一个数字是因为hive表字段的分隔符不是空格或者tab键,而是 \001

(6)使用sqoop将临时表数据导出到mysql对应的表中

在mysql中创建与item_20141216对应的表

CREATE TABLE `item_contribute` (

`itemId` varchar(11) default NULL COMMENT '条目id',

`nums` int(11) default NULL COMMENT '出现的次数'

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

进入sqoop客户端执行一下命令输入连接信息:

sqoop export --connect jdbc:mysql://master:3306/test --username hive --password 123456 --table  item_contribute --fields-terminated-by '\001' --export-dir '/user/hive/warehouse/db1.db/item_20141216';

将会看到mysql表中的数据被填充:

(7)接下来就可以利用java程序将数据组织成报表进行展示了!

hadoop2.20+hive+sqoop+mysql数据处理案例相关推荐

  1. 第十二章 结合flume+mapreduce+hive+sqoop+mysql的综合实战练习

    简介: 项目大致过程是:flume监控日志文件,定时把文件清洗后上传到hdfs上,上传清晰后的数据是格式化的,可被hive识别,然后hive创建表,写脚本,执行hql语句,把执行结果写到hdfs上,最 ...

  2. [置顶] HADOOP大数据离线分析+实时分析框架;Hadoop+Flume+Kafka+Storm+Hive+Sqoop+mysql/oracle

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 离线分析框架搭建 hadoop集群搭建部署 Hadoop HA部署 Hive安装部署 Sqoop组件安装部署 实时分析框架搭建 ...

  3. HADOOP大数据离线分析+实时分析框架;Hadoop+Flume+Kafka+Storm+Hive+Sqoop+mysql/oracle

    离线分析框架搭建 hadoop集群搭建部署 Hadoop HA部署 Hive安装部署 Sqoop组件安装部署 实时分析框架搭建 storm kafka kafka安装配置 storm集群安装部署

  4. 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出

    hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装 2016.05.15 本文测试环境: hadoop2.6.2 ubuntu 14.04.04 ...

  5. 大数据案例——Hive、MySQL、HBase数据互导

    本文是基于教程大数据案例--本地文件上传hive数据库,对数据在Hive,MySQL,HBase之间的互导进行进阶版的学习.数据集:淘宝用户点击商品操作数据集,共30万条记录.如果没有安装MySQL, ...

  6. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...

    把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...

  7. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  8. sqoop mysql where_Sqoop基本语法简介

    1.查看命令帮助 [hadoop@hadoop000 ~]$ sqoop help usage: sqoop COMMAND [ARGS] Available commands: codegen Ge ...

  9. hive sqoop导出 postgresql精度丢失_Mysql 与 hadoop 数据同步(迁移),你需要知道 Sqoop...

    上篇文章 Mysql 到 Hbase 数据如何实时同步,强大的 Streamsets 告诉你 我们说到了如何使用 Streamsets 来进行 mysql 到 hbase 的数据实时同步(迁移).使用 ...

最新文章

  1. url传递中文的解决方案
  2. java try-with-resource语句使用
  3. 树莓派远程连接的三种方式总结
  4. 服务器采购项目技术方案,小型机服务器采购项目技术方案.doc
  5. (转载)FPGA基础知识------PS/2基础知识
  6. REMarkerClusterer
  7. ride中for循环的使用_robotframework-ride使用(Builtin标准库)
  8. php做网页的流畅,Easying轻量流畅
  9. JavaScript实现简易计算器
  10. 服务式GIS实践与发展——REST 服务
  11. java tomcat热部署_intellij idea tomcat热部署配置教程
  12. java连接Hbase操作数据库的全过程---搭建hbase数据库
  13. 航海王热血航线服务器维护怎么办,航海王热血航线无法登录怎么办
  14. Matlab通过整除判断倍数
  15. Apache2 + PHP之伪静态
  16. Scrapy爬取北京公交并保存MYSQL数据库实例
  17. Kubernetes-蔚来汽车的Kubernetes实践
  18. java 连接chatgpt
  19. Python程序员是科班出身好,还是去培训班好?
  20. FireFly RK3399装CUPS使用HP M1136打印机遇到的坑

热门文章

  1. 计算机无法还原,降级为Windows 7的计算机无法引导至Windows 10恢复介质
  2. POJ3197(连分数表示)
  3. 《qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)》
  4. redis部署架构总结
  5. H.264码流结构解析
  6. MFC内嵌web页面
  7. Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
  8. [三]RabbitMQ-客户端源码之ChannelManager
  9. MPAI正式启动端到端的AI编码标准
  10. 【直播预告 | 今天10:30】多媒体技术 PI 第一期:OSS圆桌