`
m635674608
  • 浏览: 5060654 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Hadoop分析tomcat访问日志

 
阅读更多

今天照着《hadoop实战》写了个小例子,解析tomcat日志统计各个浏览器的访问次数

 

Java代码  收藏代码
  1. package com.ice.stat;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.regex.Matcher;  
  5. import java.util.regex.Pattern;  
  6.   
  7. import org.apache.hadoop.fs.Path;  
  8. import org.apache.hadoop.io.IntWritable;  
  9. import org.apache.hadoop.io.Text;  
  10. import org.apache.hadoop.mapreduce.Job;  
  11. import org.apache.hadoop.mapreduce.Mapper;  
  12. import org.apache.hadoop.mapreduce.Reducer;  
  13. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;  
  14. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
  15.   
  16. public class TomcatLog{  
  17.       
  18.     static class TomcatMapper extends Mapper<Object, Text, Text, IntWritable> {  
  19.   
  20.         private static final IntWritable one = new IntWritable(1);  
  21.         private static Pattern pattern = Pattern.compile("([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)");  
  22.           
  23.         protected void map(Object key, Text value,   
  24.                   Context context) throws IOException ,InterruptedException {  
  25.               
  26.             String line = value.toString();  
  27.             System.out.println(line);  
  28.             Matcher m = pattern.matcher(line);  
  29.             if(m.matches()){  
  30.                 String agent = m.group(9).toLowerCase();  
  31.                 if(agent.contains("chrome")){  
  32.                     agent = "chrome";  
  33.                 }else if(agent.contains("safari")){  
  34.                     agent = "safari";  
  35.                 }else if(agent.contains("firefox")){  
  36.                     agent = "firefox";  
  37.                 }else{  
  38.                     agent = "other";  
  39.                 }  
  40.                 Text t = new Text(agent);     
  41.                 context.write(t, one);  
  42.             }  
  43.         };  
  44.           
  45.     }  
  46.       
  47.     static class TomcatReducer extends Reducer<Text, IntWritable, Text, IntWritable>{  
  48.         protected void reduce(Text key, java.lang.Iterable<IntWritable> value, org.apache.hadoop.mapreduce.Reducer<Text,IntWritable,Text,IntWritable>.Context context) throws IOException ,InterruptedException {  
  49.             int count = 0;  
  50.             for(IntWritable v : value){  
  51.                 count = count + v.get();  
  52.             }  
  53.             context.write(key, new IntWritable(count));  
  54.         };  
  55.     }  
  56.       
  57.     public static void main(String[] args) throws Exception {  
  58.         if(args.length != 2){  
  59.             System.err.println("参数个数不对");  
  60.             System.exit(-1);  
  61.         }  
  62.         Job job = new Job();  
  63.         job.setJarByClass(TomcatLog.class);  
  64.           
  65.         FileInputFormat.addInputPath(job, new Path(args[0]));  
  66.         FileOutputFormat.setOutputPath(job, new Path(args[1]));  
  67.           
  68.         job.setMapperClass(TomcatMapper.class);  
  69.         job.setReducerClass(TomcatReducer.class);  
  70.         job.setOutputKeyClass(Text.class);  
  71.         job.setOutputValueClass(IntWritable.class);  
  72.         System.exit(job.waitForCompletion(true) ? 0 : 1);  
  73.           
  74.     }   
  75.   
  76. }  

 

日志样例:

Tomcat日志代码  收藏代码
  1. 172.16.2.12,-,-,[06/Sep/2011:10:03:13 +0800],GET /icestat/jpivot/toolbar/sort-asc-up.png HTTP/1.1,200,336,-,Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)  
  2. 172.16.2.12,-,-,[06/Sep/2011:09:48:17 +0800],GET /icestat/ HTTP/1.1,200,171,http://10.65.11.241:8080/icestat/,Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.43 Safari/534.24  

 

把日志放入hdfs

命令行代码  收藏代码
  1. hadoop fs -put icestat_access_log.2011-09-06.txt icestat_access_log.2011-09-06.txt  

 分析日志

命令行代码  收藏代码
  1. hadoop jar tomcatLog.jar icestat_access_log.2011-09-06.txt output6  

 查看输出

命令行代码  收藏代码
  1. [root@xxx hadoop-0.20.2]# hadoop fs -cat output6/part-r-00000  
  2. 11/09/06 00:18:54 WARN conf.Configuration: DEPRECATED: hadoop-site.xml found in the classpath. Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, mapred-site.xml and hdfs-site.xml to override properties of core-default.xml, mapred-default.xml and hdfs-default.xml respectively  
  3. 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.  
  4. 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.  
  5. 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.  
  6. chrome  58  
  7. firefox 23  
  8. other   49  
  9. safari  5  

 

http://dsbjoe.iteye.com/blog/1166698

分享到:
评论

相关推荐

    hadoop 实战 dev_02

    综上所述,本课程深入介绍了Hadoop在Web日志分析中的应用,从基本的日志概念到复杂的分布式日志收集和处理架构,为学员提供了一套完整的Hadoop实战知识体系。通过本课程的学习,学员可以掌握如何使用Hadoop系统进行...

    hadoop的web上传、下载、更新、删除和文件追加

    结合Tomcat实现的Web界面,是Hadoop操作的可视化工具。Tomcat作为一个流行的Java Servlet容器,可以托管Web应用程序,为用户提供友好的交互界面。在这个项目中,开发者创建了一个Web应用,用户可以通过浏览器访问,...

    apache-tomcat-7.0.93.tar.gz

    总之,Apache Tomcat 7.0.93是一个强大的Java Web应用服务器,可以承载各种Web应用程序,而Apache Kylin则是一个高性能的大数据分析平台,两者结合可提供一个完整的解决方案,让用户在Hadoop环境中进行高效的SQL查询...

    基于hadoop+hbase+springboot实现分布式网盘系统.zip

    5. **监控和日志**:集成Spring Boot Actuator进行健康检查和性能监控,同时使用ELK(Elasticsearch, Logstash, Kibana)堆栈或Logback进行日志收集和分析。 这个项目对于学习和实践大数据存储、微服务架构以及Java...

    apache-tomcat-9.0.30-deployer_apache_源码

    描述中提到,Tomcat是轻量级的应用服务器,这意味着它的资源占用相对较低,启动快速,适合中小型系统或者并发访问量不大的环境。对于开发者来说,Tomcat因为其开源、免费、易于理解和配置的特点,常常成为开发和调试...

    基于Hadoop与SSH电子商城系统

    在开发和部署过程中,开发者需要编写Hadoop MapReduce作业来处理大数据,这些作业可能包括用户行为日志分析、热门商品推荐算法等。同时,SSH框架下的服务层和持久层需要设计合理的数据模型和业务逻辑,确保系统的...

    大数据项目之手机app信息统计分析系统

    本系统选择了多种技术栈,包括Kafka、Zookeeper、Hadoop、Flume、Tomcat、Mysql、SSM框架、Echarts.js等。这些技术栈可以提供高效、可靠、灵活的技术支持,满足本系统的技术需求。 五、项目整体集群规划 本系统的...

    apache-tomcat

    7. **安全性**:Tomcat支持SSL/TLS加密,可以配置访问控制,保护Web应用的安全。 8. **管理工具**:Tomcat提供了一个管理界面,允许管理员监控和管理部署在服务器上的应用。 9. **版本更新**:随着Java技术的发展...

    jsp访问量

    1. **日志分析**:Web服务器如Apache、Nginx等在处理请求时会产生日志文件,这些日志记录了每次请求的详细信息,包括请求的URL。通过分析这些日志,我们可以统计到每个JSP页面被访问的次数。例如,使用log4j或其它...

    基于Spark的电商用户分析系统-开题报告.docx

    本系统旨在通过Spark的强大计算能力,对电商用户的访问、购物、点击等行为进行深度分析,为企业的业务发展提供科学依据。 一、系统设计与实现 1. 技术栈选择:系统基于Spark构建,采用CDH大数据集群,结合Flume...

    基于SpringBoot+Hadoop+Vue开发的企业级网盘分布式系统源码+项目说明(本科毕设).zip

    系统超级管理员可以管理系统所有的功能和所有用户,如果需要控制系统用户能访问的菜单,系统管理员只需更改相关角色所拥有的菜单列表。 ![img]...

    tez-ui-0.10.1.war

    4. **日志查看**:方便地访问和浏览Tez作业和任务的日志,有助于调试和解决问题。 5. **配置对比**:对于不同版本或者不同配置的作业,Tez UI可以对比它们的配置差异,帮助用户理解配置变化对性能的影响。 将【tez...

    大数据工程实践详细报告

    5. 分析日志中的用户访问课程信息,统计课程数量和搜索引擎访问量,提取有价值的信息。 6. 将处理后的数据存入HBase,为后续的查询和分析提供高效存储。 7. 前端设计采用jsp、JQuery和Ajax,构建一个数据展示平台,...

    操作手册1

    本文档是一份关于如何配置和操作一个基于虚拟机的IT环境的操作手册,涵盖了网络配置、Java环境、SSH、深度学习平台、网站搭建、反向代理、HDFS、ELK日志分析等核心知识点。 1. **虚拟机配置**: 使用的是VMware ...

    Nginx反向代理实战.pptx

    Nginx配置文件位于/etc/nginx/目录下,包括PID目录、错误日志、访问日志和默认站点目录等配置项。 八、Tomcat配置 在本实战案例中,我们使用Tomcat来实现应用程序服务器。Tomcat配置文件位于/var/lib/tomcat6/conf...

    线上Linux服务器优化经验-系统调优篇.pdf

    例如,系统日志包括`dmesg`、`/var/log/messages`和`/var/log/secure`,应用日志如Apache、Nginx和Tomcat的日志文件,都是排查问题时不可或缺的参考。 3. 分析、定位和解决问题:结合日志信息和应用环境,对问题...

    基于spring-boot和hdfs的网盘.zip

    例如,通过集成Spark或Hadoop MapReduce,我们可以对存储在HDFS上的数据进行复杂的分析和机器学习任务。 文件“fileOperation-master”可能是一个包含源代码或配置文件的项目子模块,用于实现与HDFS文件操作相关的...

    3.x编译包.zip

    通过查看日志、分析堆栈跟踪以及调整配置,可以逐步解决这些问题。 9. **扩展与集成**:Azkaban支持插件机制,可以根据需求编写自定义插件,如身份验证模块、日志处理器等。同时,它也可以与其他工具如Hadoop、...

    facebace的框架资料

    Scribe是Facebook开发的日志收集系统,负责收集和聚合来自不同系统的日志数据,然后存储到HDFS(Hadoop分布式文件系统)中,以便进行后续的大规模分析。 ### 七、页面加载优化:BigPipe技术 BigPipe是Facebook自主...

    一个基于springboot和hdfs的大文件管理系统.zip

    5. **安全性**:实现身份验证和授权机制,例如使用Hadoop的安全特性如Kerberos,以确保只有经过认证的用户可以访问文件系统。 6. **性能优化**:通过批量操作、缓存策略、负载均衡等方式提高系统的性能和响应速度。...

Global site tag (gtag.js) - Google Analytics