互联网公司技术架构资料.百度.海量日志分析架构.pdf

  • 文件大小: 2.98MB
  • 文件类型: pdf
  • 上传日期: 2025-08-17
  • 下载次数: 0

概要信息:

百度日志分析技术分享 
陈晓鸣 
资深工程师 
百度基础架构部 
@陈晓鸣在百度 
chenxiaoming@baidu.com 

LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
LOG中自有黄金屋 
一条日志 
46.70.93.94 - - [11/Nov/2011:11:11:11 -1100] "GET 
/book/1984.html  HTTP/1.1“404  2326  
http://www.baidu.com/s?wd=1984&rsv_bp=0&rsv_spt=3
&inputT=947 "Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 
like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, 
like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10 
“ 
 
了解用户——地域来源 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
"GET /book/1984.html HTTP/1.1"  
404  
2326  
"http://www.baidu.com/s?wd=1984&r
sv_bp=0&rsv_spt=3&inputT=947"  
"Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, like 
Gecko) Version/4.0.4 Mobile/7B314 
Safari/531.21.10  “ 
了解用户——跳转来源 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
"GET /book/1984.html HTTP/1.1"  
404  
2326  
"http://www.baidu.com/s?wd=1984&r
sv_bp=0&rsv_spt=3&inputT=947"  
"Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, like 
Gecko) Version/4.0.4 Mobile/7B314 
Safari/531.21.10  “ 
了解用户——使用终端 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
"GET /book/1984.html HTTP/1.1"  
404  
2326  
"http://www.baidu.com/s?wd=1984&r
sv_bp=0&rsv_spt=3&inputT=947"  
" Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, like 
Gecko) Version/4.0.4 Mobile/7B314 
Safari/531.21.10" 
了解自己——访问量 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
GET /book/1984.html HTTP/1.1 
404  
2326  
"http://www.baidu.com/s?wd=1984&rs
v_bp=0&rsv_spt=3&inputT=947 "  
"Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, 
like Gecko) Version/4.0.4 
Mobile/7B314 Safari/531.21.10 " 
了解自己——易用性 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
"GET /book/1984.html HTTP/1.1"  
404  
2326  
"http://www.baidu.com/s?wd=1984&rsv_b
p=0&rsv_spt=3&inputT=947"  
" Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, like 
Gecko) Version/4.0.4 Mobile/7B314 
Safari/531.21.10 " 
 
了解自己——可用性 
46.70.93.94 - -  
[11/Nov/2011:11:11:11 -1100]  
"GET /book/1984.html HTTP/1.1"  
404  
2326  
" http://www.baidu.com/s?wd=1984& 
rsv_bp=0&rsv_spt=3&inputT=947 "  
"Mozilla/5.0(iPad; U; CPU iPhone OS 
3_2 like Mac OS X; en-us) 
AppleWebKit/531.21.10 (KHTML, 
like Gecko) Version/4.0.4 
Mobile/7B314 Safari/531.21.10 " 
 
目标——更好地服务 
 
目标——更好地赚钱 
 
LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
日志分析基本过程 
日志分析基本过程 
 
 线上 
• 提取 
• 传输 
预处理 
• 解析 
• 过滤 
计算 
• 预定义
计算 
• Ad hoc
查询 
使用 
• 报表 
• 图表 
• 回馈线
上 
• …… 
LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
百度日志分析成长历程 
使用人数 
一站式的日志分析服务 
B-S模式访问 
私有云 
统一管理、统一运维 
正在进行中… 
数据量的问题 
类SQL的描述式语言 
PHP + C 混合运行时 
算子的分布式实现 
用户自定义函数支
持(PHP、.so) 
全新的C++ 运行时 
C++自定义函数支持 
更多算子支持 
Schema推导支持 
大量的优化 
LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
深入LSP平台 
系统架构 
 
平台UI 
 
编辑模式 
简单模式 
21 
DQuery模式 
22 
复杂模式 
23 
LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
深入DISQL语言 
例:新闻站点访问量和广告量统计 
25 
执行步骤 
读取日志数据 
选取出_Url、_Res(广告数)两列 
编写一个函数,从_Url中抽取出_Site 
用正则表达式过滤出新闻站点的数据 
按站点分组,每组做两件事: 
计算访问量 
将广告数求和 
输出数据,每行是一个JSON数据 
例:DQuery代码 
26 
读取日志数据 
选取出_Url、_Res(广告数)两列 
编写一个函数,从_Url中抽取出_Site 
用正则表达式过滤出新闻站点的数据 
按站点分组,每组做两件事: 
计算访问量 
将广告数求和 
输出数据,每行是一个JSON数据 
PHP-Callback 
C-callback 
几个特点 
用PHP表达的类SQL逻辑(非常简约) 
封装所有SQL算子的M/R分布式实现: 
分组、表连接、行列过滤、集合操作、输入输出格式转换 
通过连续函数调用表达DAG数据流 
自动翻译为一轮或多轮MapReduce 
也可翻译为单机计算或数据流图 
用逻辑顺序而非SQL顺序表达逻辑 
支持PHP自定义函数(简洁) 
支持C++自定义函数(同样简洁+高效)和C-Runtime NEW! 
全自动高效内存管理 (RAII + 内存池) 
廉价对象复制(Copy On Write) 
字段操作翻译为数组操作,无字典查找 (schema推导) 
C++的性能,PHP的开发代价! 
 
 
29 
处理阶段 
30 
前端语
言处理 
中间语
言翻译  运行时 
前端处理 
把用户编写的计算逻辑翻译为便于编译程序理解的中间码(语法树、
数据流图) 
前端代码运行一遍,产生结果是中间码 
相当于编译技术中的parser 
中间码用JSON表示 
[ 
  { 
    "cmd":  "load“, 
    "path": null 
    "using": "SchemaReader" 
    "from": 17 
    "options": {"max_item_in_mem“:  100000} 
    "include": [25] 
  } 
 , {"cmd":"filter"……},  {"cmd":"join"……},……  …… 
] 
 
 
31 
SQL语言接口? 
[ 
  { 
    "cmd":  "load“, 
    "path": null 
    "using": "SchemaReader" 
    "from": 17 
    "options": 
{"max_item_in_mem“:  
100000} 
    "include": [25] 
  } 
 , {"cmd":"filter"……},  
{"cmd":"join"……},……  …… 
] 
 
 
语言定义(词法、语法分析) 
动作(生成中间码) 
中间码 
中间语言处理 
对数据流图作多次等价变换 
正规化 
将数据流图变成完整的方便后续处理的数据流图 
算子替换 
将实现复杂的算子等价替换成多个简单算子 
优化 
对数据流图进行各种优化,使执行效率提高 
阶段划分(可选 ) 
划分为多个MapReduce执行阶段 
Schema推导、字段偏移量推导 
推导每一算子产出的表schema,以及字段偏移量 
代码生成(C++、PHP、DOT) 
生成真正可执行的代码 
 
 
 
 
33 
 
 
 
 
 
 
Reduce Phase 
Map Phase 
 
 
 
 
 
 
算子替换 
Unique 
Group 
Shuffle 
Reduce 
 
 Limit 1 
Group 
Shuffle 
Reduce 
 
 Count 
Group 
Shuffle 
Reduce 
 
 Sum 
Combine 
 
 Count 
Schema推导、下标推导 
field ID name age 
type uint64 string int32 
index 2 5 9 
field ID score 
type uint64 double 
Index 0 1 
Field ID name age Score 
Type Uint64 string int32 double 
Index 2 5 9 10 
join 
优化 
多任务合并 
等价算子合并 
Combiner优化 
Cached Combiner优化 
同key Join合并优化 
公共子表达式提取 
核心思想 
减少作业轮数、减少I/O、减少重复计算 
 
数据流图生成 
 
代码生成 
PHP 
C++ 
DOT 
单机 / MapReduce 
运行时 
初始化一组数据处理 
处理一组中的一条数据记录(多次调用) 
结束一组数据处理 
class 
Processor 
init() 
process() 
fini() 
class 
Selector 
init() 
process() 
fini() 
class 
Filter 
init() 
process() 
fini() 
class 
Counter 
init() 
process() 
fini() 
class 
UserProcessor 
init() 
process() 
fini() 
Processor模型——Pipes & Filter模式 
采用情况 
分析程序数量增长 
 
 
 
 
分析程序输入量 
 
程序类型 4月1日 10月27日 增长 增长百分比 
简单编辑 3540 4761 1221 +34.5% 
DQuery模式 1153 3359 2206 +191% 
复杂编辑 1569 2963 1394 +88.9% 
程序类型 占比 
简单编辑 24% 
DQuery模式 43% 
复杂编辑 33% 
LSP平台用户数量 
 
 
 
 
 
角色 数量 占比 
PM 1352 47.4% 
RD 1174 41.2% 
OP 190 6.66% 
其他 136 4.77% 
总数 2852 100% 
}  67% 
LOG中自有黄金屋 
日志分析基本过程 
百度日志分析成长历程 
深入LSP平台 
 
深入DISQL语言 
总结与问答 
总结与问答 
总结与问答 
日志的价值 
了解用户 ● 了解自己 
日志分析基本过程 
提取与传输 ● 解析与过滤 ● 计算 ● 使用(报表、图表、回馈线上…) 
百度日志分析成长历程 
深入LSP平台 
平台架构 ● 平台UI ● 三种编辑模式 
深入DISQL语言 
一个例子 ● 几个特点 ● 前端处理 ● 中间语言翻译 ● 运行时 
采用情况 
问题 
亦可通过微博(@陈晓鸣在百度)或邮箱(chenxiaoming@baidu.com)提问 
请关注Hadoop in China大会12月2日2时20分:《DISQL2.0》  
 
 
我们还有很多非常有挑战、非常有用、非常好玩的问题急需解决…… 
如果你恰好也喜欢解决这些问题…… 
请发邮件到chenxiaoming@baidu.com  
加入百度,让我们一起来把它们解决!

缩略图:

  • 缩略图1
  • 缩略图2
  • 缩略图3
  • 缩略图4
  • 缩略图5
当前页面二维码

广告: