【Hadoop】基于Hadoop/Hbase/Hive的小型离线服务器日志分析应用

##1、项目简介

本项目主要设计一个基于Hadoop的日志分析系统。其中的日志数据主要来自于某系统开发测试期间的服务器访问日志数据(Tomcat),通过对这些日志数据利用正则表达式等技术手段进行处理,提取出匹配到的目标数据信息,将其进行归类化处理,而对日志分析处理方式中,本文探究了直接利用Hadoop的日志分析功能和利用Hadoop+Hbase+Hive结合的技术实现对日志进行分析的功能,作为对云计算技术的相关学习与入门,着重对相关技术的实现,代码结构的构成等进行研究,分析两种方式是如何实现日志分析功能的,并通过具体的编程实现相关的日志分析功能。

本项目纯属自娱自乐型,仅供入门Hadoop的同学参考,大神请忽略

代码、数据和详细的系统文档说明,已经上传百度云盘,全套开发工具(Hadoop-2.7.2/Hbase-1.1.2/Hive-1.2.1/Zookeeper-3.4.6/Mysql/VMware/Ubuntu14.0)。
项目的网盘地址:
链接:https://pan.baidu.com/s/1dGbylSd,另外一部分是技术文档和代码(需要找本人索要)
联系方式:
邮箱:wkang1993@outlook.com(邮件内容请告知作何用?欢迎技术交流,不限于Hadoop/Oracle/Java/其他)

##2、环境

hadoop-2.7.2+ hbase-1.1.2+ zookeeper-3.4.6+hive-1.2.1+Mysql(作为元数据库)
三台虚拟机:
系统:Ubuntu14.0系统,JDK1.7
Hadoop: 1个Master(3G内存,作为NameNode) 2个Slave(1.5G内存,作为DataNode)
注(各个部分在整个环境中的角色功能):
Hadoop:底层的HDFS环境,数据的存储归根结底还是存储在HDFS上的
Hbase:数据库
Zookeeper:用来进行集群管理
Hive:将Map/Reduce的一系列操作封装成了HQL(类似于SQL),方便统计查询数据
Mysql:Hive需要数据库作为元数据,Mysql充当元数据库的作用

##3、数据说明

参考项目文档《基于Hadoop的日志分析系统》(在网盘资料里有)

##4、处理流程

两种实现方式:
1 纯基于Hadoop进行统计分析
(1)日志文件数据上传至HDFS
(2)利用Map/Reduce,根据正则表达式进行统计(类似于词频统计)
(3)利用Partitioner类,根据正则匹配,将IP访问量统计结果,每天访问量统计结果,时间段统计结果,访问方法比例统计结果输出到不同的文件(这时候结果还没有排序)
(4)对HDFS输出结果进行排序
(5)利用Echart进行结果展示

2 基于Hadoop+Hbase+Hive进行统计分析
(1)将本地的日志数据文件利用正则表达式进行提取,并抽入到Hbase
(2)利用Hive进行统计,统计结果和第一种方法一样
(3)利用Echart进行结果展示
##5、结果分析
实验结果分为四个部分:

1,IP访问次数统计图

这里写图片描述

从图中可以看出每个IP访问的次数和各IP所占比例,其中开发人员访问次数占比很高。

2,访问时段统计

这里写图片描述

从图中可以看出一天中每个时段访问Tomcat的次数。其中,3点到8点的访问次数很少,表明这个时间段人们没有在工作;而10点到凌晨2点访问次数一直都很多,表明这个时间段人们在工作,并且工作到很晚。

3,访问请求方式统计

这里写图片描述

从图中可以看出,两种访问请求方式的所占的比例。其中,使用get()方法访问Tomcat的次数远远高于使用post()方法访问的次数。

4,统计历史每天的访问量

这里写图片描述

从图中可以看出每天访问Tomcat的次数。其中,11月和12月访问Tomcat的次数比9月10月高,12月9日这天访问Tomcat的次数最高。

##6、参考资料以及需要注意的问题

5.1, Hadoop环境搭建(基本就是根据这个教程的流程来做的)
http://www.powerxing.com/install-hadoop-cluster/

5.2, Hbase安装与配置
http://www.myexception.cn/internet/2034808.html
http://aperise.iteye.com/blog/2254460
http://blog.chedushi.com/archives/9747
http://blog.csdn.net/sinat_30569973/article/details/52232850
http://blog.csdn.net/yinlongfei_love/article/details/51786616

5.3, hadoop集群配置之hive1.2.0安装部署(本次实践采用远程mysql,即mysql搭建在本地,而不是在虚拟机)
http://www.mincoder.com/article/5809.shtml
http://blog.csdn.net/yingxiake/article/details/51656970
http://blog.csdn.net/thdline/article/details/51714431
http://blog.csdn.net/zhihaoma/article/details/48578589
http://www.cnblogs.com/edisonchou/p/4426096.html
需要注意的几点:
(1)找到一个叫jline-2.1.2.jar的文件,复制他,去hadoop主目录将hadoop下的三个同名但不同版本的jline替换成刚刚复制的。(原版本删除)
(2)运行元数据服务:
在主目录输入(在hive目录下而不是其bin目录下进入 )
bin/hive --service metastore
(3)运行hive server
bin/hive --service hiveserver(可能是根据版本不同,如果时比较新的hive,需要在后面的命令行后面加2)见下面的
(4)以上的hiveserver在hive1.2.1中并不会出现,官网的说法是:
HiveServer is scheduled to be removed from Hive releases starting Hive 0.15. See HIVE-6977. Please switch over to HiveServer2.

5.4,hadoop,zookeeper,Hbase启动关闭顺序
(1)运行hadoop(主机上运行就可以了)
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
(2)zookeeper运行(每个机子上面都要运行)
/usr/zookeeper-3.4.6/bin/zkServer.sh start
(3)运行Hbase(主机上运行就可以)
/usr/hbase-1.1.2/bin/start-hbase.sh
(4) 运行Hive(配置了的机子上运行)
hive --service metastore
hive --service hiveserver2
(5) 关闭Hive
直接关闭窗口,在jps命令之后可以看到runJar进程消失
(6)关闭Hbase
/usr/hbase-1.1.2/bin/stop-hbase.sh
(7)关闭zookeeper
/usr/zookeeper-3.4.6/bin/zkServer.sh stop
(8)关闭hadoop
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver

5.5,Hbase和Hive整合
http://www.open-open.com/lib/view/open1414634201872.html
http://www.aboutyun.com/thread-6546-1-1.html
http://blog.csdn.net/u011523533/article/details/50480608
https://www.iteblog.com/archives/1718
http://blog.csdn.net/wulantian/article/details/38111683(这一篇理解怎么通过hive来操作Hbase)
Hbase和Hive整合问题 :
1、hbase中的空cell在hive中会补null
2、hive和hbase中不匹配的字段会补null
3、Bytes类型的数据,建hive表示加#b。cf:val#s 中的#s就表示类型为string,cf:foo没有配置类型,则采用hbase.table.default.storage.type的配置,#b为binary

鉴于自博客发布以来,有很多人来索要技术文档,之前百度网盘多次链接失效,需要重新设置并回复各位来者邮件,精力有限,望包含!如果您觉得有用的话,欢迎打赏一下(按照自己觉得是否有帮助,自设金额)!
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
hadoop是一个分布式计算框架,主要用于存储和处理大规模数据。它采用了HDFS(分布式文件系统)来存储数据,MapReduce算法来处理数据。Hadoop的优点在于它可以处理海量的数据,同时也可以保证数据的可靠性和高可用性。对于需要处理海量数据的企业来说,Hadoop是必不可少的工具。 Spark是一个基于内存的分布式计算框架,相较于Hadoop的MapReduce计算模型,Spark采用了基于内存的计算模型。它可以完成实时的数据处理,同时还可以处理大规模的数据。Spark的优点在于它的计算速度非常快,而且支持多种语言和数据源。对于需要实时处理数据的企业来说,Spark是一个非常好的选择。 Hive是一个基于Hadoop的数据仓库工具,它提供了SQL查询语言来查询Hadoop中的数据。Hive的优点在于它可以将查询语言转换成MapReduce作业,从而完成数据查询和处理。Hive的查询速度相较于Hadoop的MapReduce计算模型,有了很大的提升。对于需要将海量数据存储到Hadoop中,并且希望可以通过SQL语言查询数据的企业来说,Hive是一个非常好的选择。 Hbase是一个基于Hadoop的分布式键值对数据库,它支持海量数据的存储和高效的数据查询。Hbase的优点在于它可以快速处理大规模的数据,并且可以横向扩展。对于企业来说,如果需要处理高并发的数据查询,Hbase是一个非常好的选择。 Kafka是一个分布式消息队列系统,它可以处理高并发的消息传输。Kafka的优点在于它可以快速处理大规模的消息,同时保证消息的可靠性和顺序性。对于需要处理高并发的消息传输的企业来说,Kafka是一个非常好的选择。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值