hadoop 处理日志

127.0.0.1 - - [03/Jul/2014:23:36:38 +0800] "GET /course/detail/3.htm HTTP/1.0" 200 38435 0.038

182.131.89.195 - - [03/Jul/2014:23:37:43 +0800] "GET / HTTP/1.0" 301 - 0.000

127.0.0.1 - - [03/Jul/2014:23:38:27 +0800] "POST /service/notes/addViewTimes_23.htm HTTP/1.0" 200 2 0.003

127.0.0.1 - - [03/Jul/2014:23:39:03 +0800] "GET /html/notes/20140617/779.html HTTP/1.0" 200 69539 0.046

127.0.0.1 - - [03/Jul/2014:23:43:00 +0800] "GET /html/notes/20140318/24.html HTTP/1.0" 200 67171 0.049

127.0.0.1 - - [03/Jul/2014:23:43:59 +0800] "POST /service/notes/addViewTimes_779.htm HTTP/1.0" 200 1 0.003

127.0.0.1 - - [03/Jul/2014:23:45:51 +0800] "GET / HTTP/1.0" 200 70044 0.060

127.0.0.1 - - [03/Jul/2014:23:46:17 +0800] "GET /course/list/73.htm HTTP/1.0" 200 12125 0.010

127.0.0.1 - - [03/Jul/2014:23:46:58 +0800] "GET /html/notes/20140609/542.html HTTP/1.0" 200 94971 0.077

127.0.0.1 - - [03/Jul/2014:23:48:31 +0800] "POST /service/notes/addViewTimes_24.htm HTTP/1.0" 200 2 0.003

127.0.0.1 - - [03/Jul/2014:23:48:34 +0800] "POST /service/notes/addViewTimes_542.htm HTTP/1.0" 200 2 0.003

127.0.0.1 - - [03/Jul/2014:23:49:31 +0800] "GET /notes/index-top-3.htm HTTP/1.0" 200 53494 0.041

127.0.0.1 - - [03/Jul/2014:23:50:55 +0800] "GET /html/notes/20140609/544.html HTTP/1.0" 200 183694 0.076

127.0.0.1 - - [03/Jul/2014:23:53:32 +0800] "POST /service/notes/addViewTimes_544.htm HTTP/1.0" 200 2 0.004

127.0.0.1 - - [03/Jul/2014:23:54:53 +0800] "GET /html/notes/20140620/900.html HTTP/1.0" 200 151770 0.054

127.0.0.1 - - [03/Jul/2014:23:57:42 +0800] "GET /html/notes/20140620/872.html HTTP/1.0" 200 52373 0.034

127.0.0.1 - - [03/Jul/2014:23:58:17 +0800] "POST /service/notes/addViewTimes_900.htm HTTP/1.0" 200 2 0.003

127.0.0.1 - - [03/Jul/2014:23:58:51 +0800] "GET / HTTP/1.0" 200 70044 0.057

public class LogMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

@Override

protected void map(LongWritable key, Text value,Context context)

throws IOException, InterruptedException {

String line = value.toString().trim();

String temp = log(line);

if(temp.length()>0){

context.write(new Text(temp), new IntWritable(1));

}

}

//处理字符串方法

static String log(String line){

String result = "";

try{

if(line.length()>20){

if(line.indexOf("GET")>0){

result = line.substring(line.indexOf("GET"), line.indexOf("HTTP/1.0")).trim();

}else if(line.indexOf("POST")>0){

result = line.substring(line.indexOf("POST"), line.indexOf("HTTP/1.0")).trim();

}

}

}catch(Exception e){

System.out.println(line);

}

return result;

}

//测试log方法

public static void main(String[] args) {

String line = "127.0.0.1 - - [03/Jul/2014:23:36:38 +0800] \"GET /course/detail/3.htm HTTP/1.0\" 200 38435 0.038";

System.out.println(log(line));

}

}

public class LogReducer extends Reducer<Text, IntWritable, Text, IntWritable> {

@Override

protected void reduce(Text key, Iterable<IntWritable> values,Context context)

throws IOException, InterruptedException {

int sum = 0;

for (IntWritable val : values) {

sum += val.get();

}

context.write(key, new IntWritable(sum));

}

}

public class JobMain {

/**

* @param args

*/

public static void main(String[] args)throws Exception {

Configuration configuration = new Configuration();

Job job = new Job(configuration,"log_job");

job.setJarByClass(JobMain.class);

job.setMapperClass(LogMapper.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(IntWritable.class);

job.setReducerClass(LogReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

FileInputFormat.addInputPath(job, new Path(args[0]));

Path path = new Path(args[1]);

FileSystem fs = FileSystem.get(configuration);

if(fs.exists(path)){

fs.delete(path, true);

}

FileOutputFormat.setOutputPath(job, path);

System.exit(job.waitForCompletion(true)?0:1);

}

}

时间: 2024-11-07 16:16:27

hadoop 处理日志的相关文章

Hadoop错误日志

1.错误日志:Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible. 错误原因:在Linux下Hadoop等的各种数据默认保存在 /tmp目录下.当重启系统后 /tmp目录中的数据信息被清除,导致Hadoop启动失败.确定目录 /tmp/hadoop-root/dfs/name是否存在解决方案: 使用命令bin/h

使用Hadoop统计日志数据

用户行为日志概述 用户行为日志: 用户每次访问网站时所有的行为数据 访问.浏览.搜索.点击... 用户行为轨迹.流量日志(用户行为日志的其他名称) 为什么要记录用户访问行为日志: 进行网站页面的访问量的统计 分析网站的黏性 训练推荐系统 用户行为日志生成渠道: web服务器记录的web访问日志 ajax记录的访问日志以及其他相关的日志 用户行为日志大致内容: 访问时间 访问者所使用的客户端(UserAgent) 访问者的IP地址 访问者账号 某个页面的停留时间 访问的时间与地点 跳转的链接地址(

Hadoop 之日志管理—应用在 YARN 中运行时的日志

背景: 在写这篇博文前,自己一直没有弄明白一个问题,"在 Map 函数和 Reduce 函数中使用 System.out.print 打印日志时,输出内容在哪里显示?".试了好多回,在 log/* 目录下找了很久都没有找到,并且尝试了很多次去找,都没有成功.这让我想通过此方法调试 Map/Reduce 函数以失败告终. 最后,一次偶然的机会让我发现了关于日志的玄机.通过自己的观察和阅读参考书籍,终于弄明白了. 客户端向 YARN 提交 MapReduce 作业运行时,会建立 Conta

修改hadoop/hdfs日志级别

描述: If a large directory is deleted and namenode is immediately restarted, there are a lot of blocks that do not belong to any file. This results in a log: 2014-11-08 03:11:45,584 INFO BlockStateChange (BlockManager.java:processReport(1901)) - BLOCK*

Hadoop学习日志- install hadoop

资料来源 : http://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm Hadoop 安装 创建新用户 $ su password: # useradd hadoop -g root # passwd hadoop New passwd: Retype new passwd 修改/etc/sudoers 赋予sudo 权限 设置ssh SSH Setup and Key Generation SSH setup is re

hadoop中日志聚集问题

遇到的问题: 当点击上面的logs时,会出现下面问题: 这个解决方案为: By default, Hadoop stores the logs of each container in the node where that container was hosted. While this is irrelevant if you're just testing some Hadoop executions in a single-node environment (as all the log

Hadoop日志存放位置

初学者运行MapReduce作业时,经常会遇到各种错误,由于缺乏经验,往往不知所云,一般直接将终端打印的错误贴到搜索引擎上查找,以借鉴前人的经验.然而,对于Hadoop而言,当遇到错误时,第一时间应该是查看日志,日志里通常会有详细的错误原因提示,本文将总结Hadoop MapReduce日志存放位置,帮助初学者定位自己遇到的错误. Hadoop MapReduce日志分为两部分,一部分是服务日志,一部分是作业日志,具体介绍如下: 1:Hadoop 1.x版本 Hadoop 1.x中MapRedu

Hadoop日志文件

初学者运行MapReduce作业时,经常会遇到各种错误,往往不知所云,一般直接将终端打印的错误贴到搜索引擎上查找,以借鉴前人的经验. 对于hadoop而言,当遇到错误时,第一时间应是查看日志,日志里通产会有详细的错误原因提示.Hadoop MapReduce日志分为两部分,一部分是服务日志,一部分是作业日志,具体介绍如下: 1. Hadoop 1.x版本 Hadoop 1.x中MapReduce的服务日志包括JobTracker日志和各个TaskTracker日志,它们的日志位置如下: JobT

海量Web日志分析 用Hadoop提取KPI统计指标

前言 Web日志包括着站点最重要的信息,通过日志分析.我们能够知道站点的訪问量,哪个网页訪问人数最多,哪个网页最有价值等.一般中型的站点(10W的PV以上),每天会产生1G以上Web日志文件. 大型或超大型的站点,可能每小时就会产生10G的数据量. 对于日志的这样的规模的数据,用Hadoop进行日志分析,是最适合只是的了. 文件夹 Web日志分析概述 需求分析:KPI指标设计 算法模型:Hadoop并行算法 架构设计:日志KPI系统架构 程序开发1:用Maven构建Hadoop项目 程序开发2: