1 / 41

mdrill - 大数据即席 分析

!. mdrill - 大数据即席 分析. 子落 - 母延年 2013 年 11 月. 内容大纲. 为什么要做 mdrill 什么是 mdrill mdrill 在阿里 关键技术点分享 未来. 为什么要做 mdrill ?. 解决什么样的问题?. 数据 量大(百亿条, 45T/ 天) 10 秒 内 响应. 场景一: 全文检索 - 在线查询. 阿里内 支付宝的交易日志查询 阿里妈妈的广告 pv 明细 查询 阿 里外 某运营商的每天的电话清单 某即时通讯软件的用户的聊天记录 - 关键词匹配 铁路交通系统中的每位乘客信息. Hadoop ?.

bing
Download Presentation

mdrill - 大数据即席 分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. mdrill-大数据即席分析 子落-母延年 2013年11月

  2. 内容大纲 为什么要做mdrill 什么是mdrill mdrill在阿里 关键技术点分享 未来

  3. 为什么要做mdrill? 解决什么样的问题?

  4. 数据量大(百亿条,45T/天) 10秒内响应 场景一:全文检索-在线查询 • 阿里内 • 支付宝的交易日志查询 • 阿里妈妈的广告pv明细查询 • 阿里外 • 某运营商的每天的电话清单 • 某即时通讯软件的用户的聊天记录-关键词匹配 • 铁路交通系统中的每位乘客信息 Hadoop? hbase?

  5. 扫描量大(单次百亿条记录) 任意维度过滤、统计、排序 10~200秒响应 场景二: 在线多维分析 Hadoop? • 阿里内 • TOP N查询 • 热词,热销 • 趋势 • 阿里外 • 日常报表统计,排序 • 实时流量系统 storm?

  6. 前世今生

  7. 什么是 mdrill 一个在几秒到几十秒的时间,分析海量的任意维度组合数据的工具。

  8. 关键词 • A • 海量数据 • 实时数据 • 秒级 • 即席查询 • 任意维度 • 组合&过滤 • D • B • C

  9. 基本功能 • 查询明细: • Select x1,x2,x3 from table • 查询明细,并排序: • Select x1,x2,x3 from table order by x1 • 支持任意维度的分组统计 • Select x1,count(*) from table group by x1 • 分组统计后可以按照某个统计值,或列进行排序 • Select x1,x2,x3,count(*) as cnt from table group by x1,x2,x3 order by cnt • 支持的过滤与统计 • 支持like,in,not in,等于,不等于,大于等于,小于等于等过滤方式 • 对数据进行sum,max,min,count,avg,dist等统计

  10. Mdrill在阿里

  11. Adhoc-全文检索 每天162亿*70维度的数据增量。 通过mapreduce创建索引(1000slot 6小时) 使用云梯hdfs存储和检索(45T/天) 10台机器-48G内存 响应时间3~10秒

  12. 共存储半年600亿80~400维度的数据。 • 12张表,单表最大220亿行数据。 • 使用本地硬盘存储和检索。 • 10台机器(每台:48G内存,2T*12磁盘)。 • 对180亿数据进行count(*)耗时30秒单列sum耗时40~80秒(跨越18个分区) Adhoc-即席分析

  13. 实时数据流入(实时append)。 • 3台机器,每天千万的增量(到亿很轻松)。 • 存储每个pid,pv,click,rt,load等的每分钟的明细存储。 • 前台根据不同的维护组合统计与过滤。 全景监控

  14. Adhoc-数据查询过滤

  15. Adhoc-数据分类汇总

  16. Adhoc-数据汇总排序

  17. Adhoc-趋势分析

  18. Adhoc-对比

  19. 全景监控

  20. 支付宝黄金策(higo)。 • 支付宝无线日志统计。 • …… 其他

  21. 依赖的主要开源项目 核心依赖 对源码和索引结构做了较大的改动 Solr lucene • mdrill 创建与存储索引 hadoop Solr服务的调度与管理 • jstorm zookeeper 心跳和任务协调

  22. mdrill技术要点

  23. 怎样才能做到 ? • 减少磁盘IO。 • 减少网络IO。 • 提升计算速度。 • 分布式,并行计算。 快

  24. 基于行的存储

  25. 基于列的存储 有什么好处?

  26. 倒排索引 有什么好处?

  27. 差值存储

  28. 关于长文本问题 ? 长文本占用空间较大,完整扫描一遍IO时间太长…… 长文本的重复值很少,压缩比不高…… 长文本占内存多…… 太长的字符串 计算速度慢……

  29. 关于长文本问题 在group by和排序的时候,仅使用数值代号 呈现给用户的时候,将代号转换回原始值

  30. 查询多层合并流程 无论是shard还是ms均只返回TOP 1W条结果 Ms合并(优先合并本机器的shard和ms) 每个solr在各自的shards内计算

  31. merger过程的优化

  32. merger过程的优化 真实值 仅回查这8条的文本值 用户

  33. 创建索引流程 将小索引合并成最终的大索引 生成小索引 先在内存中创建小索引

  34. 实时索引 search write 守护进程 AB切换 disk1 hdfs1 queue Tmp Index RAMB RAM A disk2 hdfs2 disk3 hdfs3 diskN hdfsN

  35. 系统架构 建表,建索引 SQL mdrill-shell mdrill-jdbc mdrill-core 建表,建索引 Solrsearch hadoop jstorm … Solr5 … Solr6 … 碎片2 … … 碎片1 copy索引 合并索引 … 201306 201307 … … 201306 …

  36. 全文检索TOP N 个别词频率特别高,但往往仅需要TOP N个结果,怎么办? Doclist的压缩 利用doclist本身可以跳跃的特性,多条件组合查询只读取top 1W

  37. 其他 tii跳跃表的加载优化 直接在hdfs上创建索引 合并索引优化(addIndexesNoOptimize) fdt文件-移除或采用变长数据

  38. 版本规划

  39. 规划 • 0.18 当前版本 • 0.19 基于replication形式的HA • 0.20 实时数据源 • 0.21 调度考虑基于hadoop yarn实现

  40. 相关资源 https://github.com/alibaba/mdrill https://github.com/muyannian/higo https://github.com/alibaba/jstorm 新浪微博:延年

  41. 谢谢聆听!

More Related