今天照着《hadoop实战》写了个小例子,解析tomcat日志统计各个浏览器的访问次数
- package com.ice.stat;
- import java.io.IOException;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.IntWritable;
- import org.apache.hadoop.io.Text;
- import org.apache.hadoop.mapreduce.Job;
- import org.apache.hadoop.mapreduce.Mapper;
- import org.apache.hadoop.mapreduce.Reducer;
- import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
- import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
- public class TomcatLog{
- static class TomcatMapper extends Mapper<Object, Text, Text, IntWritable> {
- private static final IntWritable one = new IntWritable(1);
- private static Pattern pattern = Pattern.compile("([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)");
- protected void map(Object key, Text value,
- Context context) throws IOException ,InterruptedException {
- String line = value.toString();
- System.out.println(line);
- Matcher m = pattern.matcher(line);
- if(m.matches()){
- String agent = m.group(9).toLowerCase();
- if(agent.contains("chrome")){
- agent = "chrome";
- }else if(agent.contains("safari")){
- agent = "safari";
- }else if(agent.contains("firefox")){
- agent = "firefox";
- }else{
- agent = "other";
- }
- Text t = new Text(agent);
- context.write(t, one);
- }
- };
- }
- static class TomcatReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
- protected void reduce(Text key, java.lang.Iterable<IntWritable> value, org.apache.hadoop.mapreduce.Reducer<Text,IntWritable,Text,IntWritable>.Context context) throws IOException ,InterruptedException {
- int count = 0;
- for(IntWritable v : value){
- count = count + v.get();
- }
- context.write(key, new IntWritable(count));
- };
- }
- public static void main(String[] args) throws Exception {
- if(args.length != 2){
- System.err.println("参数个数不对");
- System.exit(-1);
- }
- Job job = new Job();
- job.setJarByClass(TomcatLog.class);
- FileInputFormat.addInputPath(job, new Path(args[0]));
- FileOutputFormat.setOutputPath(job, new Path(args[1]));
- job.setMapperClass(TomcatMapper.class);
- job.setReducerClass(TomcatReducer.class);
- job.setOutputKeyClass(Text.class);
- job.setOutputValueClass(IntWritable.class);
- System.exit(job.waitForCompletion(true) ? 0 : 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)
- 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
- hadoop fs -put icestat_access_log.2011-09-06.txt icestat_access_log.2011-09-06.txt
分析日志
- hadoop jar tomcatLog.jar icestat_access_log.2011-09-06.txt output6
查看输出
- [root@xxx hadoop-0.20.2]# hadoop fs -cat output6/part-r-00000
- 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
- 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.
- 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.
- 11/09/06 00:18:54 WARN fs.FileSystem: "xxx :9000" is a deprecated filesystem name. Use "hdfs://xxx :9000/" instead.
- chrome 58
- firefox 23
- other 49
- safari 5
http://dsbjoe.iteye.com/blog/1166698
相关推荐
综上所述,本课程深入介绍了Hadoop在Web日志分析中的应用,从基本的日志概念到复杂的分布式日志收集和处理架构,为学员提供了一套完整的Hadoop实战知识体系。通过本课程的学习,学员可以掌握如何使用Hadoop系统进行...
结合Tomcat实现的Web界面,是Hadoop操作的可视化工具。Tomcat作为一个流行的Java Servlet容器,可以托管Web应用程序,为用户提供友好的交互界面。在这个项目中,开发者创建了一个Web应用,用户可以通过浏览器访问,...
总之,Apache Tomcat 7.0.93是一个强大的Java Web应用服务器,可以承载各种Web应用程序,而Apache Kylin则是一个高性能的大数据分析平台,两者结合可提供一个完整的解决方案,让用户在Hadoop环境中进行高效的SQL查询...
5. **监控和日志**:集成Spring Boot Actuator进行健康检查和性能监控,同时使用ELK(Elasticsearch, Logstash, Kibana)堆栈或Logback进行日志收集和分析。 这个项目对于学习和实践大数据存储、微服务架构以及Java...
描述中提到,Tomcat是轻量级的应用服务器,这意味着它的资源占用相对较低,启动快速,适合中小型系统或者并发访问量不大的环境。对于开发者来说,Tomcat因为其开源、免费、易于理解和配置的特点,常常成为开发和调试...
在开发和部署过程中,开发者需要编写Hadoop MapReduce作业来处理大数据,这些作业可能包括用户行为日志分析、热门商品推荐算法等。同时,SSH框架下的服务层和持久层需要设计合理的数据模型和业务逻辑,确保系统的...
本系统选择了多种技术栈,包括Kafka、Zookeeper、Hadoop、Flume、Tomcat、Mysql、SSM框架、Echarts.js等。这些技术栈可以提供高效、可靠、灵活的技术支持,满足本系统的技术需求。 五、项目整体集群规划 本系统的...
7. **安全性**:Tomcat支持SSL/TLS加密,可以配置访问控制,保护Web应用的安全。 8. **管理工具**:Tomcat提供了一个管理界面,允许管理员监控和管理部署在服务器上的应用。 9. **版本更新**:随着Java技术的发展...
1. **日志分析**:Web服务器如Apache、Nginx等在处理请求时会产生日志文件,这些日志记录了每次请求的详细信息,包括请求的URL。通过分析这些日志,我们可以统计到每个JSP页面被访问的次数。例如,使用log4j或其它...
本系统旨在通过Spark的强大计算能力,对电商用户的访问、购物、点击等行为进行深度分析,为企业的业务发展提供科学依据。 一、系统设计与实现 1. 技术栈选择:系统基于Spark构建,采用CDH大数据集群,结合Flume...
系统超级管理员可以管理系统所有的功能和所有用户,如果需要控制系统用户能访问的菜单,系统管理员只需更改相关角色所拥有的菜单列表。 ![img]...
4. **日志查看**:方便地访问和浏览Tez作业和任务的日志,有助于调试和解决问题。 5. **配置对比**:对于不同版本或者不同配置的作业,Tez UI可以对比它们的配置差异,帮助用户理解配置变化对性能的影响。 将【tez...
5. 分析日志中的用户访问课程信息,统计课程数量和搜索引擎访问量,提取有价值的信息。 6. 将处理后的数据存入HBase,为后续的查询和分析提供高效存储。 7. 前端设计采用jsp、JQuery和Ajax,构建一个数据展示平台,...
本文档是一份关于如何配置和操作一个基于虚拟机的IT环境的操作手册,涵盖了网络配置、Java环境、SSH、深度学习平台、网站搭建、反向代理、HDFS、ELK日志分析等核心知识点。 1. **虚拟机配置**: 使用的是VMware ...
Nginx配置文件位于/etc/nginx/目录下,包括PID目录、错误日志、访问日志和默认站点目录等配置项。 八、Tomcat配置 在本实战案例中,我们使用Tomcat来实现应用程序服务器。Tomcat配置文件位于/var/lib/tomcat6/conf...
例如,系统日志包括`dmesg`、`/var/log/messages`和`/var/log/secure`,应用日志如Apache、Nginx和Tomcat的日志文件,都是排查问题时不可或缺的参考。 3. 分析、定位和解决问题:结合日志信息和应用环境,对问题...
例如,通过集成Spark或Hadoop MapReduce,我们可以对存储在HDFS上的数据进行复杂的分析和机器学习任务。 文件“fileOperation-master”可能是一个包含源代码或配置文件的项目子模块,用于实现与HDFS文件操作相关的...
通过查看日志、分析堆栈跟踪以及调整配置,可以逐步解决这些问题。 9. **扩展与集成**:Azkaban支持插件机制,可以根据需求编写自定义插件,如身份验证模块、日志处理器等。同时,它也可以与其他工具如Hadoop、...
Scribe是Facebook开发的日志收集系统,负责收集和聚合来自不同系统的日志数据,然后存储到HDFS(Hadoop分布式文件系统)中,以便进行后续的大规模分析。 ### 七、页面加载优化:BigPipe技术 BigPipe是Facebook自主...
5. **安全性**:实现身份验证和授权机制,例如使用Hadoop的安全特性如Kerberos,以确保只有经过认证的用户可以访问文件系统。 6. **性能优化**:通过批量操作、缓存策略、负载均衡等方式提高系统的性能和响应速度。...