利用大数据技术实现日志记录与分析

整体思路

整体分三步:

1、记录日志

1、记录日志采用UDP协议写入大数据平台,大数据平台采用Hive表来存储日志信息。

2、写入日志的工作,封装了一个Auto.Lib3.Dealer.Log.dll,这个dll要依赖ZooKeeperNet.dll
和 log4net.dll。这三个dll文件地址如下:


dll文件


TFS上路径


Auto.Lib3.Dealer.Log.dll


$/dealer/MCH/CommonLib/Auto.Lib3.Logging.dll


ZooKeeperNet.dll


$/dealer/MCH/CommonLib/ZooKeeperNet.dll


log4net.dll


$/dealer/MCH/CommonLib/log4net.dll

2、分析日志

可以在HUE里分析日志,也可以用Hadoop客户机分析日志,分析日志就是从Hive表里读取数据,进行各种变换数据(分组、排序、算术运算等)得到想要的结果的过程。

可以将分析的结果数据导出到SQL Server中,用于显示或者导出

3、显示分析结果

将分析结果用各种方式展示给用户,常见的显示方式有:图标、列表、导出Excel。

技术架构

1、.net站点调用Auto.Lib3.Dealer.Log.dll来写日志,传递的参数只有一个日志数据,另外需要配置一个
zookeeper集群的连接信息(包括IP和端口号),参数名为:zk.connect

2、Auto.Lib.Dealer.Log.dll 封装了两部分内容:Zookeeper客户端和UDP客户端。

UDP客户端负责将日志信息发送给UDP服务器,因为UDP服务器是个集群,UDP不知道要发送给那个UDP服务器,所以要去Zookeeper客户端查询哪些UDP服务器是当前可用的。

Zookeeper客户端负责从Zookeeper集群查询可用的UDP服务器列表,并实时监听UDP服务器列表的变化,一旦UDP服务器列表有变化,就能监听到,并更新存储在Zookeeper客户端的“可用UDP服务器列表”,供UDP客户端使用。

3、Zookeeper集群用来保证UDP集群的高可用,(高可用的含义是:集群中就算有一部分服务器宕机,也能保证正常地对外提供服务。)

·       
Zookeeper集群能够保证UDP服务高可用的原理是:UDP集群中各个机器都定时地给Zookeeper发送心跳,告诉Zookeeper我还活着,可以提供服务,一旦Zookeeper检测不到某一台UDP服务器发送来的心跳后,就从可用服务器列表中,将这台UDP服务器删除掉,同时会通知所有正在监听的Zookeeper客户端,Zookeeper客户端刷新可用UDP服务器列表。这样就保证这些客户端能及时知道UDP服务器集群的变化,一直都是使用可用的UDP服务器,达到UDP集群的高可用目的

·       
选举制度:Zookeeper集群也能保证自身的高可用,保证自身高可用的原理是,Zookeeper集群中的各个机器分为Leader和Follower两个角色,写入数据时,要先写入Leader,Leader同意写入后,再通知Follower写入。客户端读取数时,因为数据都是一样的,可以从任意一台机器上读取数据。

这里Leader角色就存在单点故障的隐患,高可用就是解决单点故障隐患的。Zookeeper从机制上解决了Leader的单点故障问题,Leader是哪一台机器是不固定的,Leader是选举出来的。选举流程是,集群中任何一台机器发现集群中没有Leader时,就推荐自己为Leader,其他机器来同意,当超过一半数的机器同意它为Leader时,选举结束,所以Zookeeper集群中的机器数据必须是奇数。这样就算当Leader机器宕机后,会很快选举出新的Leader,保证了Zookeeper集群本身的高可用。

·       
写入高可用:集群中的写入操作都是先通知Leader,Leader再通知Follower写入,实际上当超过一半的机器写入成功后,就认为写入成功了,所以就算有些机器宕机,写入也是成功的。

·       
读取高可用:zookeeperk客户端读取数据时,可以读取集群中的任何一个机器。所以部分机器的宕机并不影响读取。

4、UDP服务器负责接收日志数据,并定时地写入Hive表。

5、Hive表中的数据实际上是存储在HDFS上的,HDFS是分布式文件系统,在HDFS上的文件是先切分为块,然后将各个块分布式地存储在很多DataNode上的,一个DataNode就是一台机器,同时每一个块会在不同的机器上存储多个副本,当某一个DataNode宕机时,可以用其他副本读取数据,这样存储方式也是高可用的。

到此,日志记录过程结束!

=====================================================================

接下来,是日志的分析、显示过程。

6、日志的分析在Hadoop客户机上进行,Hadoop客户机是一个可以使用Hadoop集群的机器,在Hadoop客户机上利用Hive语句来查询统计数据,将统计的结果数据存储在HDFS上,再利用Sqoop工具导出到SQL
Server库中。

7、接下来是将数据显示的过程,一般是将Sql
server库中的数据用程序变成图表、列表、导出Excel的方式给用户来看。

记录日志代码实现

. 1、日志格式说明

(1) 最终发给UDP服务器的日志格式如下:

日志类型名称|字段\t字段\t字段\t字段\t字段\t字段\t字段\t字段

字段的顺序要跟hive表的字段顺序完全一致,hive表的创建是让大数据部门的人员创建的。

(2) Auto.Lib3.Dealer.Log.HadoopRecort类说明

HadoopRecort有两个参数:TableName
(string) 和 ValueList
(List<string>),分别对应于日志格式中 | 前一部分和后一部分。

分析日志代码实现

前面已经将数据存储在了Hive表上,接下来就是分析数据了。

1、临时性的分析日志可以用HUE系统来利用Hive
语句来查询统计。

可以用HUE来查询统计数据。

HUE方式可以列表显示分析结果,也可以将分析结果导出到Excel。

2、利用Hadoop客户机来分析

这种方式可以将分析结果导出到Sql Server 数据库里。

关于Auto.Lib3.Dealer.Log.dll实现

这个DLL功能可以分为两部分:Zookeeper客户端的封装、对UDP客户端的封装

一、Zookeeper客户端

1、封装Zookeeper客户端的原因

用UDP服务来接收日志信息,目前部署了7台UDP服务器集群,利用Zookeeper来保证UDP服务的高可用。Zookeeper是个本身就高可用的集群,它能帮助其他集群实现高可用。

Zookeeper实现高可用的原理是:每台UDP服务器定时向Zookeeper集群发送心跳报告自己还活着,Zookeeper集群会记录当前活着的可用UDP服务器列表,并供Zookeeper客户端查询。Zookeeper客户端会在Zookeeper集群上注册一个监听,当可用UDP服务列表发生变化时,会实时通知Zookeeper客户端,从而zookeeper客户端可以实时更新自己的列表,保证zookeeper客户端连接的都是可用的UDP服务器。

所以,就封装了一个Zookeeper客户端组件,Auto.Lib3.Dealer.Log.dll
中发送日志时,首先要根据Zookeeper客户端查询可用的UDP服务器列表。

2、预期的代码介绍

(1)zookeeper客户端初始化时执行initZookeeper方法,来实例化一个客户端并建立一个监听。

(2)refreshIp 方法是从zookeeper集群上查询目前可用的udp服务列表。

(3)GetNextUDPServer方法是publice方法,是随机从可用的服务器列表中取一个,提供给调用方。

(4)Watcher类是监听类,当zookeeper集群中的可用的UDP服务器列表发送变化时,会实时通知这个监听类,并执行这个类中的Process方法,这个方法里,重新刷新可用的UDP服务器列表。

二、UDP客户端

1、其他应用程序通过调用Auto.Lib3.Dealer.Log.dll中的UDP客户端来发送日志。

2、代码介绍

主要代码在UDPClient、UDPAgent类中

(1) UDPClient类中实现对日志信息的拼接和发送

(2) UDPAgent类是个代理类,创建了一个线程池,以多线程方式发送UDP请求。因为是新开线程发送日志,所以发送日志对主体原有业务线程性能影响不大。

来自为知笔记(Wiz)

附件列表

时间: 2024-10-07 12:46:25

利用大数据技术实现日志记录与分析的相关文章

大数据技术之日志清洗案例

7.7 日志清洗案例 7.7.1 简单解析版 1)需求: 去除日志中字段长度小于等于11的日志. 2)输入数据 194.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/rstudio-git3.png HTTP/1.1" 304 0 "-" "Mozilla/4.0 (compatible;)" 183.49.46.228 - - [18/S

基于大数据技术的手机用户画像与征信研究

内容提要:手机用户画像是电信运营商实现“数据驱动业务与运营”的重要举措.首先,介绍了手机用户画像过程中对个人隐私保护的方法,然后分析手机用户画像的数据来源与大数据实现技术,最后,通过数据样本实例分析手机用户画像在个人征信中的应用. 引言 随着计算机网络技术的不断发展,“数据即资源”的大数据时代已经来临.用户画像是电信运营商为了避免管道化风险,实现“数据驱动业务与运营”的重要举措.用户画像与应用大数据技术对客户分类密切相关,是单个客户的众多属性标签的累积:另一方面,在运营商涉足的消费金融领域,对手

周鸿祎:以大数据技术对抗大数据平台安全威胁

1月,中国大陆境内所有通用顶级域(.com/.net/.org等)解析出现问题,所有相关域名均被指向一个位于美国的IP地址(65.49.2.178),导致数千万网民在数小时内无法访问网站. 4月,OpenSSL"心脏出血(Heartbleed)"重大安全漏洞被曝光,这一漏洞让黑客能够读取服务器系统的运行内存.有业内人士利用该漏洞在某知名电商网站上测试时,成功获得多位用户的账号及密码,并成功登陆网站. 9月,"iCloud艳照门"事件爆发,数百张好莱坞女演员不雅照在网

10个最热门的大数据技术

大数据已经融入到各行各业,哪些大数据技术是最受欢迎?哪些大数据技术潜力巨大?请听大讲台老师对10个最热门的大数据技术的介绍. 互联网科技发展蓬勃兴起,人工智能时代来临,抓住下一个风口.为帮助那些往想互联网方向转行想学习,却因为时间不够,资源不足而放弃的人.我自己整理的一份最新的大数据进阶资料和高级开发教程,大数据学习群:868847735 欢迎进阶中和进想深入大数据的小伙伴加入. (一)预测分析 预测分析是一种统计或数据挖掘解决方案,包含可在结构化和非结构化数据中使用以确定未来结果的算法和技术.

大数据技术:让看病更加靠谱!

在早期,大部分医疗相关数据以纸质形式存在,而非电子数据存储,如正式医疗记录.费用记录.护士和医生书写的病例记录.处方药记录.X光记录.磁共振成像(MRI)记录.CT图像记录等.随着强大的数据存储.计算平台和移动互联网的发展,医疗数据的爆炸式增长和快速的电子数字化成为趋势.上述医疗数据在不同程度上转化为数字.移动互联网.大数据.云计算等领域的技术与医疗领域的跨境整合.新兴的技术和新的服务模式迅速到医疗的各个方面,使人们的医疗方式发生了重大变化.为我国医疗事业带来了新的发展机遇. 大医疗数据应用 大

京东基于大数据技术的个性化电商搜索引擎

介绍京东个性化搜索引擎应用场景,和如何利用大数据技术实现个性化搜索.京东个性化场景包括基于行为.偏好.地域.时间.好友关系等维度,其中偏好是个性化搜索重点考虑的内容,分享会介绍搜索如何应用长期偏好.实时偏好以及偏好在不同的平台(web.移动.微信/手Q)起到的作用.在实现个性化搜索当中会分享京东搜索在解决个性化过程中遇到的问题.使用的技术.以及经验和思考. 原文:http://www.infoq.com/cn/presentations/jingdong-personalized-search-

大数据技术是否适合应用于政府

政府为什么要考虑使用大数据呢?究其原因,就是为了提升其公共服务的质量,这和公司的目标,即追求更多的利润十分相似. 大数据是一个通用术语,用于从各种来源获得收集的大量的数据信息.对于传统的关系数据分析技术,数据量实在太大了,它不再能够胜任了,因为这些数据都是没有经过处理的,而且还是非结构化的数据类型.令人惊叹的是,现在每天产生的数据量将近2.5×1018,而且在世界范围内近百分之九十的数据都是在这两年中创造出来的. 纵观大数据的数据结构,我们可以看出将近百分之九十的数据都是非结构化的.从网上和云中

寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现。本文记录HAProxy服务热加载后某微服务50%概率失效的问题。设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加

寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现.本文记录HAProxy服务热加载后某微服务50%概率失效的问题.设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加载.Marathon.端口重用 01 原文地址:https://www.cnblogs.com/yuanj

浅谈大数据技术

忽如一夜春风来,无人不谈大数据.大数据就像前两年的云计算一样,是一个时下被炒得很火的概念.那么什么是大数据,大数据是如何定义的,大数据处理技术有哪些,大数据能给我们带来什么益处?虽然我不知道现在这些概念是如何被炒作的,但是作为一名互联网行业的从业者,作为一个大数据技术的实践者,根据自己的理解和经验发表一点浅显的认识,理解肯定有不到位之处请大家批评指正. 无论是大数据技术还是云计算技术,其实这些技术都不是突然冒出来的,而是随着互联网技术的发展,人们把现有的技术加以整合,总结,概括出来并冠一个新名字