about云开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12601|回复: 5

mapreduce分析日志所隐藏的规律

[复制链接]
发表于 2014-8-3 14:38:14 | 显示全部楼层 |阅读模式
本帖最后由 pig2 于 2014-8-3 14:40 编辑

我们写mapreduce的过程中,会不会产生这些疑问。比如:
我们在MapReduce初级案例(3):使用MapReduce实现平均成绩,我们会特意,换行,让mapreduce能够识别。


  1)math:
  1. 张三    88

  2. 李四    99

  3. 王五    66

  4. 赵六    77
复制代码

2)chinese :
  1. 张三    78

  2. 李四    89

  3. 王五    96

  4. 赵六    67
复制代码
那么为什么需要换行。因为mapreduce默认是以行为处理单位。
那么假如我们的日志或则待处理的文件,不是以行为单位,那么会产生什么问题。


183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"
183.131.11.98 - - [01/Aug/2014:01:01:06 +0800] "GET /data/cache/style_1_common.css?A4A HTTP/1.1" 200 15402 "http://www.aboutyun.com/thread-5981-1-1.html" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"
183.131.11.98 - - [01/Aug/2014:01:01:06 +0800] "GET /data/cache/style_1_forum_viewthread.css?A4A HTTP/1.1"

biaoti.png


像上面日志,我们能否处理,答案是不可以的。

原因:
因为mapreduce中map函数所接受的参数,是其中的一行,这一行是哪里来的,是由mapreduce框架来处理的。这是很多迷惑的地方。

总结:
对于日志记录如果不是以行数来记录一条数据的话,那么mapreduce就不能处理。
而这里的一条记录的定义包含如下信息:
183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"


也就是说,在一行中如果日志记录了两条数据,那么map就会收到两条记录,但是我们在处理的过程中,都是按照一条来处理的,所以就会产生错误。



linu.png


我们在看上面日志
上面的日志可以的,为什么。因为这里的一条记录放在了一行。
可是你会反驳说,这明明是三行,这有点像咱们的文本框,如果你去掉换行,那么这条信息:
183.131.11.98 - - [01/Aug/2014:01:01:05 +0800] "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"

如上,则是直接显示在一行。


现在留下一个问题?
对于一条记录放在了两行或则多行,mapreduce能否处理?怎么样mapreduce才能处理。
进一步:
Apache日志一条记录是否都放在一行?





0

主题

17

听众

55

收听

高级会员

Rank: 4

积分
2775
QQ
发表于 2014-12-31 10:27:42 | 显示全部楼层
舒舒坦坦过日子,折折腾腾学技术

4

主题

3

听众

0

收听

中级会员

Rank: 3Rank: 3

积分
920
发表于 2015-5-8 09:06:07 | 显示全部楼层
迷惑。。。

0

主题

2

听众

0

收听

新手上路

Rank: 1

积分
45
发表于 2015-12-9 20:16:14 | 显示全部楼层
求解,怎么解决这个问题呀?
 楼主| 发表于 2015-12-9 20:48:04 | 显示全部楼层
水电费12 发表于 2015-12-9 20:16
求解,怎么解决这个问题呀?

Hadoop MapReduce中如何处理跨行Block和inputSplit
http://www.aboutyun.com/thread-7704-1-1.html



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

QQ|小黑屋|about云开发-学问论坛|社区 ( 京ICP备12023829号

GMT+8, 2018-11-17 02:14 , Processed in 0.376596 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

快速回复 返回顶部 返回列表