SlideShare a Scribd company logo
1 of 49
Download to read offline
架构探究



       作者:周忱 | 数据平台-DXP
       微博:@MinZhou
       邮箱:zhouchen.zm@taobao.com
准实时海量数据分析系统架构探究




                  主要内容
 •   离线vs准实时
 •   它山之石
 •   它山之石各自亮点
 •   核心技术挑战
 •   数据平台如何出发




                         Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




               离线vs准实时
            离线海量查询        准实时海量查询
      离线批量查询         交互式查询
      响应速度在小时/天级别    响应速度在秒/分级别
      行存储            列存储
      批量读/批量写        只读
      大量网络间数据交换      尽量少的网络间数据交换
      支持所有类型的Join    只支持大表对小表的Join
      支持UDF          一般不支持UDF
      内部使用较多         易对外产品化



                                Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Puzzle


           准实时可以替代掉离线吗?




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                       类似的技术

 •   Google Dremel
 •   Cloudera Impala
 •   Apache Drill
 •   LinkedIn SenseiDB
 •   Google PowerDrill (In-memory)
 •   UC Berkeley Shark (In-memory)




                                     Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Hive




                         Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Hive




                         Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




        page_view                                               pv_users
                                     user
                                                             pageid age
pageid userid    time         userid age    gender
                                                                 1        25
  1     111     9:08:01   X    111   25     female    =
  2     111     9:08:13                                          2        25
                               222   32      male
  1     222     9:08:14                                          1        32


  • SQL:
      INSERT INTO TABLE pv_users
      SELECT pv.pageid, u.age
      FROM page_view pv JOIN user u ON (pv.userid =
        u.userid);
                                                     Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究



        page_view
pagei userid      time           key   value                 key      value
  d
                                 111   <1,1>                 111      <1,1>
 1       111     9:08:01
                                 111   <1,2>                 111      <1,2>
 2       111     9:08:13
 1       222     9:08:14         222   <1,1>                 111 <2,25>
                                                Shuffle
          user             Map                   Sort                          Reduce

userid    age    gender          key   value                 key      value
  111     25     female          111   <2,25>                222      <1,1>

  222     32      male                                       222      <2,32>
                                 222   <2,32>


                                                      Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究



w
                                                                   pv_users
time           key   value              key   value

               111   <1,1>              111   <1,1>             pagei        age
:08:01                                                            d
               111   <1,2>              111   <1,2>
:08:13                                                              1         25
:08:14         222   <1,1>              111 <2,25>
                              Shuffle                               2         25
         Map                   Sort                   Reduce

ender          key   value              key   value
emale          111   <2,25>             222   <1,1>             pageid       age
                                                                    1         32
male                                    222   <2,32>
               222   <2,32>


                                                       Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




           Dremel-嵌套列存储




                      Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




        Dremel-多级分布式查询树




                    Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




            Dremel-近似计算




                          Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




               Dremel-其它

 • “in situ”—不需要导入
 • 只读数据集




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                      Impala

 • Frontend
    – Parser
    – Planner
 • Backend
    – Coordinator
    – ExecNode Tree
 • StateStore
 • Sparrow




                               Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Impala




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                 Dremel vs Impala

 • 相同点
   – 嵌套列存储
   – 分布式聚集(Aggregation)
   – 都不需要导入数据
 • 不同点
   –   Dremel闭源, 以BigQuery商业化; Impala以APL开源
   –   Impala号称可以直接从DataNode读取数据
   –   Impala在backend采用llvm做Just-In-Time优化
   –   Impala无frontend负载均衡
   –   Dremel可以让用户选择抛弃长尾, 极大提高响应速度
   –   Dremel采用多级分布式查询树, Impala采用类MPP架构
   –   Dremel成熟; Impala不稳定, 实测达不到其宣传的效率


                                      Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                        PowerDrill

 •   In memory
 •   组合范围分区
 •   双层字典
 •   非常高效的压缩
 •   记录重排序
 •   近似count distinct




                                     Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




               PowerDrill: 双层字典




      SELECT search_string, COUNT(*) as c FROM data
      WHERE search_string IN ("la redoute", "voyages sncf")
      GROUP BY search_string
      ORDER BY c DESC LIMIT 10;

                                                      Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




              PowerDrill vs Dremel

                   PowerDrill             Dremel
      存储      In-Memory         On-Disk
      格式      列式, 组合范围分区        列式, 也可处理行式
      ETL     需要加载              无须加载
      响应时间    毫秒~秒级             秒~分钟级
      量级      TB                PB
      压缩      大量压缩优化            普通字典压缩或无压缩
      I/O效率   skip 掉绝大部分I/O,    能skip无用列
              Google : 92.41%



                                            Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                              SenseiDB




 •   全文索引
 •   流式增量更新数据
 •   响应速度快
 •   faceting Group-by Aggregation
 •   生产级别
 •   APL开源


                                         Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  列存储

 • 扫描更少的列
 • 更易于压缩




                        Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Puzzle

           每列存成一个文件
                  vs
        所有列按列存储成一个文件
                  vs
       每组Column Family存储一个文件
                  vs
     水平切分成行组, 组内列存储成一个文件
             哪种方案更好?

                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




             顺序扫描与随机I/O

 •   磁盘设备
 •   查询选择率(Selectivity)和与索引的关系
 •   查询优化器
 •   分布式文件系统的随机I/O

     如果一张表有10,000行, 每行平均为100字节. 那么随机定位某一行,
     还不如全部扫描整张表.




                                 Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




             分布式文件系统的I/O

 • 顺序扫描的消耗
   – 磁盘顺序I/O (Prefetching 可优化)
   – Packet传输
   – Crc32C
 • 随机I/O的消耗
   –   向ChunkMaster/NameNode定位块位置(可Cache在Client本地)
   –   与ChunkServer/DataNode的TCP握手
   –   磁盘随机I/O
   –   Packet传输
   –   Crc32C
            TIPS: 如果随机I/O的seek跳转的目标位置小于TCP窗口大小, 则从本地Cache读
                                        Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  恢复行关系

 • 随机I/O消耗
 • 内存消耗
 • 跨机器读取的网络消耗




                          Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                                  压缩
 •   通用压缩: Deflate, Snappy, LZO, Gzip, LZ4, LZMA
 •   专用字典编码
 •   熵编码法: 哈夫曼, 算术编码
 •   公共子串压缩
      – 对于有序的串
      – 前缀树, 后缀树
 •   整型列压缩
      – VInt系, Google Group VarInt
      – Simple9, Simple16
      – PForDelta, NewPFD
      – Golumb Code, Rice Code




                                                   Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




              TFile & Zebra




                              Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                Zebra的优劣

 • 优
   – 采用C-Store的思想,常用列合成一个Group, 益于恢复行关系
 • 劣
   – 领域设计者难定义Column Group
   – 跨group扫描还是远程读取
   – 会读取并解析一些未操作的列




                              Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  RCFile




                           Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




               RCFile的优劣

 • 优
   – 由于局部相似性, 压缩率较SequenceFile高10~20%
   – 惰性解压, 节省CPU时间
 • 劣
   – Filter操作时不能Skip掉IO
   – 没有针对列存储类型相同这一特点采用更高效的压缩算法



                          PS 不操作的列也会读取, 只是不解压


                                  Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  InfoBright文件格式
 •   按列存储
 •   每64K行存成一个Data Pack
 •   每个Data Pack对应一个Data Pack Node, 记录该Pack的min, max, count和
     sum
 •   超过2G rotate一个新文件




                                              Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




             InfoBright 架构




                             Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




           InfoBright查询示例




            SELECT SUM(B) FROM T WHERE A > 6;




                                            Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                       作业调度

 •   吞吐量更高
 •   延迟更低
 •   考虑Data Locality
 •   负载均衡
 •   推测执行
 •   出错重跑
 •   Sparrow



                              Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




            SQL第一大难题: Join

 • Join会带来大量网络间数据交换
 • 只支持大表对小表的Join
   – Google BigQuery要Join的小表压缩后不能超过8MB




                                  Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




     SQL第二大难题: distinct aggregation
 •distinct aggregation也会带来大量网络间数据交换 , 是除Join的第二难题
 •Google BigQuery只支持count(distinct c)

 Google面试题:
 给你一年的Google搜索日志和一台有限内存的机器,能否只扫描一遍,估计
 这一年中不同的独特的搜索(unique queries)的个数

 •Hash Table
 •Bitmap
 •Linear Probabilistic Counter
 •HyperLogLog


                   Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory

                                                                     Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                   SQL第三大难题: Top K
 •   Top K是准实时系统的第三个挑战
 •   Graham Cormode and S. Muthukrishnan. An improved data stream summary:
     The Count-Min sketch and its applications. pages 29–38. 2004.
 •   Cheqing Jin, Weining Qian, Chaofeng Sha, Jeffrey X. Yu, and Aoying Zhou.
     Dynamically maintaining frequent items over a data stream. In CIKM ’03:
     Proceedings of the twelfth international conference on Information and
     knowledge management, pages 287–294, New York, NY, USA, 2003. ACM.
 •   Ahmed Metwally, Divyakant Agrawal, and Amr Abbadi. Efficient computation
     of frequent and top-k elements in data streams. pages 398–412. 2005.




                                                         Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  Bitmap索引
                    • 第一个商用系统 Model 204,
                      P. O’Neil, 1987
                    • 比创建B-Tree更快, 更容易
                    • 查询高效: 按位操作
                      – A < 2 : b0 OR b1
                      – A > 2 : b3 OR b4 OR b5
                    • 多维查询高效: bitvector的
                      与或非
                    • 求count等aggregation高效


                                       Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




        Bitmapped Group-set Index




            SELECT c.mktsegment, o.order_id
            FROM orders o, customers c
            WHERE o.cust_id = c.cust_id
            GROUP BY c.mktsegment, o.order_id

                                                Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




           Bitmapped Join Index




           SELECT o.customer_id, l.unit_price * l.quantity
           FROM lineitems l, orders o
           WHERE l.order_id = o.order_id


                                                   Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




             集团现状与准实时
 •   结构化数据
 •   典型数据仓库的星型/雪花型模型
 •   目前需要ETL
 •   比Google更适合做交互式分析产品及数据化产品
 •   冰火鸟在这方面是空白
 •   与ODPS结合
      – CFile
      – 元数据
      – 调度




                                Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                                参考文献
 •   [Dremel]     Dremel: Interactive Analysis of Web-Scale Datasets
 •   [PowerDrill] Processing a Trillion Cells per Mouse Click
 •   [RCFile]     RCFile: A Fast and Space-efficient Data Placement Structure in
     MapReduce-based Warehouse Systems
 •   [InfoBright] BrightHouse A New Database Engine based on Rough Sets




                                                            Data eXchange Platform | zhouchen.zm
准实时海量数据分析系统架构探究




                  讨论




                             作者:周忱 | 数据平台-DXP
                             微博:@MinZhou
                             邮箱:zhouchen.zm@taobao.com

                       Data eXchange Platform | zhouchen.zm

More Related Content

What's hot

大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術Wei-Yu Chen
 
罗李:构建一个跨机房的Hadoop集群
罗李:构建一个跨机房的Hadoop集群罗李:构建一个跨机房的Hadoop集群
罗李:构建一个跨机房的Hadoop集群hdhappy001
 
給初學者的Spark教學
給初學者的Spark教學給初學者的Spark教學
給初學者的Spark教學Chen-en Lu
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践hdhappy001
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Etu Solution
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shootingMin Zhou
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaJack Gao
 
Java cpu
Java cpuJava cpu
Java cpuykdsg
 
2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform SecurityJazz Yao-Tsung Wang
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentAnna Yen
 
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Wei-Yu Chen
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Wei-Yu Chen
 
MapReduce 簡單介紹與練習
MapReduce 簡單介紹與練習MapReduce 簡單介紹與練習
MapReduce 簡單介紹與練習孜羲 顏
 
Log collection
Log collectionLog collection
Log collectionFEG
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結James Chen
 
Hadoop 2.0 之古往今來
Hadoop 2.0 之古往今來Hadoop 2.0 之古往今來
Hadoop 2.0 之古往今來Wei-Yu Chen
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWHadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWJazz Yao-Tsung Wang
 

What's hot (20)

大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術大資料趨勢介紹與相關使用技術
大資料趨勢介紹與相關使用技術
 
罗李:构建一个跨机房的Hadoop集群
罗李:构建一个跨机房的Hadoop集群罗李:构建一个跨机房的Hadoop集群
罗李:构建一个跨机房的Hadoop集群
 
給初學者的Spark教學
給初學者的Spark教學給初學者的Spark教學
給初學者的Spark教學
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践
 
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
Track A-3 Enterprise Data Lake in Action - 搭建「活」的企業 Big Data 生態架構
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shooting
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
 
Java cpu
Java cpuJava cpu
Java cpu
 
2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environment
 
Hadoop 0.20 程式設計
Hadoop 0.20 程式設計Hadoop 0.20 程式設計
Hadoop 0.20 程式設計
 
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
 
MapReduce 簡單介紹與練習
MapReduce 簡單介紹與練習MapReduce 簡單介紹與練習
MapReduce 簡單介紹與練習
 
Log collection
Log collectionLog collection
Log collection
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結
 
Life of Big Data Technologies
Life of Big Data TechnologiesLife of Big Data Technologies
Life of Big Data Technologies
 
Hadoop 2.0 之古往今來
Hadoop 2.0 之古往今來Hadoop 2.0 之古往今來
Hadoop 2.0 之古往今來
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWHadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TW
 
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fastSomething about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
 

Similar to 准实时海量数据分析系统架构探究

分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocessbabel_qi
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里li luo
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作FEG
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum锐 张
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws锐 张
 
Yog Framework
Yog FrameworkYog Framework
Yog Frameworkfansekey
 
软件工程
软件工程软件工程
软件工程bill0077
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流liu sheng
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器iflytek
 
淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]KennyZ
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for bankingfocusbi
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lakeJames Chen
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumOmni-Alex Chen
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon databoxu42
 
Analytics in a Day.pptx
Analytics in a Day.pptxAnalytics in a Day.pptx
Analytics in a Day.pptxLigangJin
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)Tim Y
 

Similar to 准实时海量数据分析系统架构探究 (20)

分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess分布式流数据实时计算平台 Iprocess
分布式流数据实时计算平台 Iprocess
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws
 
Yog Framework
Yog FrameworkYog Framework
Yog Framework
 
软件工程
软件工程软件工程
软件工程
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
 
淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for banking
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
Analytics in a Day.pptx
Analytics in a Day.pptxAnalytics in a Day.pptx
Analytics in a Day.pptx
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 

准实时海量数据分析系统架构探究

  • 1. 架构探究 作者:周忱 | 数据平台-DXP 微博:@MinZhou 邮箱:zhouchen.zm@taobao.com
  • 2. 准实时海量数据分析系统架构探究 主要内容 • 离线vs准实时 • 它山之石 • 它山之石各自亮点 • 核心技术挑战 • 数据平台如何出发 Data eXchange Platform | zhouchen.zm
  • 3. 准实时海量数据分析系统架构探究 离线vs准实时 离线海量查询 准实时海量查询 离线批量查询 交互式查询 响应速度在小时/天级别 响应速度在秒/分级别 行存储 列存储 批量读/批量写 只读 大量网络间数据交换 尽量少的网络间数据交换 支持所有类型的Join 只支持大表对小表的Join 支持UDF 一般不支持UDF 内部使用较多 易对外产品化 Data eXchange Platform | zhouchen.zm
  • 4. 准实时海量数据分析系统架构探究 Puzzle 准实时可以替代掉离线吗? Data eXchange Platform | zhouchen.zm
  • 5. 准实时海量数据分析系统架构探究 类似的技术 • Google Dremel • Cloudera Impala • Apache Drill • LinkedIn SenseiDB • Google PowerDrill (In-memory) • UC Berkeley Shark (In-memory) Data eXchange Platform | zhouchen.zm
  • 6. 准实时海量数据分析系统架构探究 Hive Data eXchange Platform | zhouchen.zm
  • 7. 准实时海量数据分析系统架构探究 Hive Data eXchange Platform | zhouchen.zm
  • 8. 准实时海量数据分析系统架构探究 page_view pv_users user pageid age pageid userid time userid age gender 1 25 1 111 9:08:01 X 111 25 female = 2 111 9:08:13 2 25 222 32 male 1 222 9:08:14 1 32 • SQL: INSERT INTO TABLE pv_users SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.userid = u.userid); Data eXchange Platform | zhouchen.zm
  • 9. 准实时海量数据分析系统架构探究 page_view pagei userid time key value key value d 111 <1,1> 111 <1,1> 1 111 9:08:01 111 <1,2> 111 <1,2> 2 111 9:08:13 1 222 9:08:14 222 <1,1> 111 <2,25> Shuffle user Map Sort Reduce userid age gender key value key value 111 25 female 111 <2,25> 222 <1,1> 222 32 male 222 <2,32> 222 <2,32> Data eXchange Platform | zhouchen.zm
  • 10. 准实时海量数据分析系统架构探究 w pv_users time key value key value 111 <1,1> 111 <1,1> pagei age :08:01 d 111 <1,2> 111 <1,2> :08:13 1 25 :08:14 222 <1,1> 111 <2,25> Shuffle 2 25 Map Sort Reduce ender key value key value emale 111 <2,25> 222 <1,1> pageid age 1 32 male 222 <2,32> 222 <2,32> Data eXchange Platform | zhouchen.zm
  • 11. 准实时海量数据分析系统架构探究 Dremel-嵌套列存储 Data eXchange Platform | zhouchen.zm
  • 12. 准实时海量数据分析系统架构探究 Dremel-多级分布式查询树 Data eXchange Platform | zhouchen.zm
  • 13. 准实时海量数据分析系统架构探究 Dremel-近似计算 Data eXchange Platform | zhouchen.zm
  • 14. 准实时海量数据分析系统架构探究 Dremel-其它 • “in situ”—不需要导入 • 只读数据集 Data eXchange Platform | zhouchen.zm
  • 15. 准实时海量数据分析系统架构探究 Impala • Frontend – Parser – Planner • Backend – Coordinator – ExecNode Tree • StateStore • Sparrow Data eXchange Platform | zhouchen.zm
  • 16. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 17. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 18. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 19. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 20. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 21. 准实时海量数据分析系统架构探究 Impala Data eXchange Platform | zhouchen.zm
  • 22. 准实时海量数据分析系统架构探究 Dremel vs Impala • 相同点 – 嵌套列存储 – 分布式聚集(Aggregation) – 都不需要导入数据 • 不同点 – Dremel闭源, 以BigQuery商业化; Impala以APL开源 – Impala号称可以直接从DataNode读取数据 – Impala在backend采用llvm做Just-In-Time优化 – Impala无frontend负载均衡 – Dremel可以让用户选择抛弃长尾, 极大提高响应速度 – Dremel采用多级分布式查询树, Impala采用类MPP架构 – Dremel成熟; Impala不稳定, 实测达不到其宣传的效率 Data eXchange Platform | zhouchen.zm
  • 23. 准实时海量数据分析系统架构探究 PowerDrill • In memory • 组合范围分区 • 双层字典 • 非常高效的压缩 • 记录重排序 • 近似count distinct Data eXchange Platform | zhouchen.zm
  • 24. 准实时海量数据分析系统架构探究 PowerDrill: 双层字典 SELECT search_string, COUNT(*) as c FROM data WHERE search_string IN ("la redoute", "voyages sncf") GROUP BY search_string ORDER BY c DESC LIMIT 10; Data eXchange Platform | zhouchen.zm
  • 25. 准实时海量数据分析系统架构探究 PowerDrill vs Dremel PowerDrill Dremel 存储 In-Memory On-Disk 格式 列式, 组合范围分区 列式, 也可处理行式 ETL 需要加载 无须加载 响应时间 毫秒~秒级 秒~分钟级 量级 TB PB 压缩 大量压缩优化 普通字典压缩或无压缩 I/O效率 skip 掉绝大部分I/O, 能skip无用列 Google : 92.41% Data eXchange Platform | zhouchen.zm
  • 26. 准实时海量数据分析系统架构探究 SenseiDB • 全文索引 • 流式增量更新数据 • 响应速度快 • faceting Group-by Aggregation • 生产级别 • APL开源 Data eXchange Platform | zhouchen.zm
  • 27. 准实时海量数据分析系统架构探究 列存储 • 扫描更少的列 • 更易于压缩 Data eXchange Platform | zhouchen.zm
  • 28. 准实时海量数据分析系统架构探究 Puzzle 每列存成一个文件 vs 所有列按列存储成一个文件 vs 每组Column Family存储一个文件 vs 水平切分成行组, 组内列存储成一个文件 哪种方案更好? Data eXchange Platform | zhouchen.zm
  • 29. 准实时海量数据分析系统架构探究 顺序扫描与随机I/O • 磁盘设备 • 查询选择率(Selectivity)和与索引的关系 • 查询优化器 • 分布式文件系统的随机I/O 如果一张表有10,000行, 每行平均为100字节. 那么随机定位某一行, 还不如全部扫描整张表. Data eXchange Platform | zhouchen.zm
  • 30. 准实时海量数据分析系统架构探究 分布式文件系统的I/O • 顺序扫描的消耗 – 磁盘顺序I/O (Prefetching 可优化) – Packet传输 – Crc32C • 随机I/O的消耗 – 向ChunkMaster/NameNode定位块位置(可Cache在Client本地) – 与ChunkServer/DataNode的TCP握手 – 磁盘随机I/O – Packet传输 – Crc32C TIPS: 如果随机I/O的seek跳转的目标位置小于TCP窗口大小, 则从本地Cache读 Data eXchange Platform | zhouchen.zm
  • 31. 准实时海量数据分析系统架构探究 恢复行关系 • 随机I/O消耗 • 内存消耗 • 跨机器读取的网络消耗 Data eXchange Platform | zhouchen.zm
  • 32. 准实时海量数据分析系统架构探究 压缩 • 通用压缩: Deflate, Snappy, LZO, Gzip, LZ4, LZMA • 专用字典编码 • 熵编码法: 哈夫曼, 算术编码 • 公共子串压缩 – 对于有序的串 – 前缀树, 后缀树 • 整型列压缩 – VInt系, Google Group VarInt – Simple9, Simple16 – PForDelta, NewPFD – Golumb Code, Rice Code Data eXchange Platform | zhouchen.zm
  • 33. 准实时海量数据分析系统架构探究 TFile & Zebra Data eXchange Platform | zhouchen.zm
  • 34. 准实时海量数据分析系统架构探究 Zebra的优劣 • 优 – 采用C-Store的思想,常用列合成一个Group, 益于恢复行关系 • 劣 – 领域设计者难定义Column Group – 跨group扫描还是远程读取 – 会读取并解析一些未操作的列 Data eXchange Platform | zhouchen.zm
  • 35. 准实时海量数据分析系统架构探究 RCFile Data eXchange Platform | zhouchen.zm
  • 36. 准实时海量数据分析系统架构探究 RCFile的优劣 • 优 – 由于局部相似性, 压缩率较SequenceFile高10~20% – 惰性解压, 节省CPU时间 • 劣 – Filter操作时不能Skip掉IO – 没有针对列存储类型相同这一特点采用更高效的压缩算法 PS 不操作的列也会读取, 只是不解压 Data eXchange Platform | zhouchen.zm
  • 37. 准实时海量数据分析系统架构探究 InfoBright文件格式 • 按列存储 • 每64K行存成一个Data Pack • 每个Data Pack对应一个Data Pack Node, 记录该Pack的min, max, count和 sum • 超过2G rotate一个新文件 Data eXchange Platform | zhouchen.zm
  • 38. 准实时海量数据分析系统架构探究 InfoBright 架构 Data eXchange Platform | zhouchen.zm
  • 39. 准实时海量数据分析系统架构探究 InfoBright查询示例 SELECT SUM(B) FROM T WHERE A > 6; Data eXchange Platform | zhouchen.zm
  • 40. 准实时海量数据分析系统架构探究 作业调度 • 吞吐量更高 • 延迟更低 • 考虑Data Locality • 负载均衡 • 推测执行 • 出错重跑 • Sparrow Data eXchange Platform | zhouchen.zm
  • 41. 准实时海量数据分析系统架构探究 SQL第一大难题: Join • Join会带来大量网络间数据交换 • 只支持大表对小表的Join – Google BigQuery要Join的小表压缩后不能超过8MB Data eXchange Platform | zhouchen.zm
  • 42. 准实时海量数据分析系统架构探究 SQL第二大难题: distinct aggregation •distinct aggregation也会带来大量网络间数据交换 , 是除Join的第二难题 •Google BigQuery只支持count(distinct c) Google面试题: 给你一年的Google搜索日志和一台有限内存的机器,能否只扫描一遍,估计 这一年中不同的独特的搜索(unique queries)的个数 •Hash Table •Bitmap •Linear Probabilistic Counter •HyperLogLog Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory Data eXchange Platform | zhouchen.zm
  • 43. 准实时海量数据分析系统架构探究 SQL第三大难题: Top K • Top K是准实时系统的第三个挑战 • Graham Cormode and S. Muthukrishnan. An improved data stream summary: The Count-Min sketch and its applications. pages 29–38. 2004. • Cheqing Jin, Weining Qian, Chaofeng Sha, Jeffrey X. Yu, and Aoying Zhou. Dynamically maintaining frequent items over a data stream. In CIKM ’03: Proceedings of the twelfth international conference on Information and knowledge management, pages 287–294, New York, NY, USA, 2003. ACM. • Ahmed Metwally, Divyakant Agrawal, and Amr Abbadi. Efficient computation of frequent and top-k elements in data streams. pages 398–412. 2005. Data eXchange Platform | zhouchen.zm
  • 44. 准实时海量数据分析系统架构探究 Bitmap索引 • 第一个商用系统 Model 204, P. O’Neil, 1987 • 比创建B-Tree更快, 更容易 • 查询高效: 按位操作 – A < 2 : b0 OR b1 – A > 2 : b3 OR b4 OR b5 • 多维查询高效: bitvector的 与或非 • 求count等aggregation高效 Data eXchange Platform | zhouchen.zm
  • 45. 准实时海量数据分析系统架构探究 Bitmapped Group-set Index SELECT c.mktsegment, o.order_id FROM orders o, customers c WHERE o.cust_id = c.cust_id GROUP BY c.mktsegment, o.order_id Data eXchange Platform | zhouchen.zm
  • 46. 准实时海量数据分析系统架构探究 Bitmapped Join Index SELECT o.customer_id, l.unit_price * l.quantity FROM lineitems l, orders o WHERE l.order_id = o.order_id Data eXchange Platform | zhouchen.zm
  • 47. 准实时海量数据分析系统架构探究 集团现状与准实时 • 结构化数据 • 典型数据仓库的星型/雪花型模型 • 目前需要ETL • 比Google更适合做交互式分析产品及数据化产品 • 冰火鸟在这方面是空白 • 与ODPS结合 – CFile – 元数据 – 调度 Data eXchange Platform | zhouchen.zm
  • 48. 准实时海量数据分析系统架构探究 参考文献 • [Dremel] Dremel: Interactive Analysis of Web-Scale Datasets • [PowerDrill] Processing a Trillion Cells per Mouse Click • [RCFile] RCFile: A Fast and Space-efficient Data Placement Structure in MapReduce-based Warehouse Systems • [InfoBright] BrightHouse A New Database Engine based on Rough Sets Data eXchange Platform | zhouchen.zm
  • 49. 准实时海量数据分析系统架构探究 讨论 作者:周忱 | 数据平台-DXP 微博:@MinZhou 邮箱:zhouchen.zm@taobao.com Data eXchange Platform | zhouchen.zm