Dremel: Interactive Analysis of Web-Scale Datasets

Slides:



Advertisements
Similar presentations
Web Role 的每台虚机运行有 IIS ,用于处理 Web 请求 Worker Role 用于运行后台进程 Cloud Service 是什么? 支持多层架构的应用容器 由多个 Windows 虚拟机集群构成 集群有两种类型: Web 和 Worker Cloud Service 做什么 进行应用的自动化部署.
Advertisements

第6章 数据库管理软件Access 年秋.
系統分析與設計 第九章 資料設計.
Big Data Ecosystem – Hadoop Distribution
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
METAEDGE Corporation Taiwan
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
网格 及其应用的一些相关技术 高能所计算中心 于传松
巨量資料平台: Hadoop的生態系.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
資料庫設計 Database Design.
第11章 海量信息存储 主讲:刘方明 副教授 华中科技大学计算机学院
HADOOP的高能物理分析平台 孙功星 高能物理研究所/计算中心
                            Oracle 并行服务器介绍
基于hadoop的数据仓库技术.
商業智慧與資料倉儲 課程簡介 靜宜大學資管系 楊子青.
大数据在医疗行业的应用.
Leftmost Longest Regular Expression Matching in Reconfigurable Logic
YARN & MapReduce 2.0 Boyu Diao
關聯式資料庫.
东南大学 大学计算机基础 ——基本概念及应用思维解析.
DAT301: XML数据和关系性数据的最终结合处 – SQL Server 2005
Alibaba 数据库高可用架构 Alibaba
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
第 13 章 DNS 著作權所有 © 旗標出版股份有限公司.
第六章 应用程序结构.
云计算之分布式计算.
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
基于Hadoop的数据仓库Hive.
Chap 10 SQL定義、操作與控制指令.
彰化縣政府補助辦理網頁設計資料庫應用班 資料庫簡介 建國技術學院資管系 饒瑞佶.
中国散裂中子源小角谱仪 的实验数据格式与处理算法 报告人:张晟恺 中国科学院高能物理研究所 SCE 年8月18日
CHAPTER 6 認識MapReduce.
Flash数据管理 Zhou da
Isilon中国区技术经理 杨峰 虚拟天文台年会 存储技术交流 Isilon中国区技术经理 杨峰 Isilon Proprietary and Confidential.
SQL Server 2000 数据库入门.
第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇.
第5章 資料倉儲的資料建置.
Cloud Computing Google云计算原理.
「寬頻匯流網路管理」教材 模組四: 第一章 網路管理架構
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
Ch4.SQL Server 2005資料庫組成員元件介紹
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
ABAP程式設計 課程簡介 靜宜大學資管系 楊子青 2011年9月13日.
大数据介绍及应用案例分享 2016年7月 华信咨询设计研究院有限公司.
Philosopher‘s Index 哲學資料庫
Spark SQL 介绍 付士涛. Spark SQL 介绍 付士涛 大纲 Architecture(架构) 像Hive一样的User Interface(用户操作界面) DataFrame的使用(1.3以前叫做SchemaRDD)
Microsoft SQL Server 2008 報表服務_設計
CH03 行銷資訊系統資料庫模組--資料庫概論
TinyOS 石万兵 2019/4/6 mice.
Sensor Networks: Applications and Services
高性能计算与天文技术联合实验室 智能与计算学部 天津大学
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
資料庫管理系統 緒 論.
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
從 ER 到 Logical Schema ──兼談Schema Integration
8 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
Resources Planning for Applied Research
数据分析工具 第10节.
資料庫應用與實作 一到六章重點、習題.
SQL Server 2005 Reporting Services報表設計
OrientX暑期工作总结及计划 XML Group
面向知识服务助力教学科研 同方知网(北京)技术有限公司甘肃分公司 2017年4月.
Experimental Analysis of Distributed Graph Systems
Presentation transcript:

Dremel: Interactive Analysis of Web-Scale Datasets Sergey Melnik, Andrey Gubarev, Jing Jing Long, Geoffrey Romer, Shiva Shivakumar, Matt Tolton, Theo Vassilakis (Google) VLDB 2010

New age in Google Before big data times After that… GFS/BigTable/Megastore MapReduce After that… Ecosystem based on MapReduce Pregel/Caffeine/Dremel Caffeine is google’s new index engine.

Speed matters Trends Interactive Tools Spam Detection Web Dashboards 3s分析1PB数据 Web Dashboards Network Optimization

Example: data exploration Runs a MapReduce to extract billions of signals from web pages 1 Googler Alice 2 Ad hoc SQL against Dremel DEFINE TABLE t AS /path/to/data/* SELECT TOP(signal, 100), COUNT(*) FROM t . . . 3 More MR-based processing on her data (FlumeJava [PLDI'10], Sawzall [Sci.Pr.'05])

Dremel system Trillion-record, multi-terabyte datasets at interactive speed Scales to thousands of nodes Fault and straggler tolerant execution Nested data model Complex datasets; normalization is prohibitive Columnar storage and processing Tree architecture (as in web search) Interoperates with Google's data mgmt tools In situ data access (e.g., GFS, Bigtable) MapReduce pipelines Dremel是一个大规模系统。在一个PB级别的数据集上面,将任务缩短到秒级,无疑需要大量的并发。磁盘的顺序读速度在100MB/S上下,那么在1S内处理1TB数据,意味着至少需要有1万个磁盘的并发读! Google一向是用廉价机器办大事的好手。但是机器越多,出问题概率越大,如此大的集群规模,需要有足够的容错考虑,保证整个分析的速度不被集群中的个别慢(坏)节点影响。 Dremel是MR交互式查询能力不足的补充。和MapReduce一样,Dremel也需要和数据运行在一起,将计算移动到数据上面。所以它需要GFS这样的文件系统作为存储层。在设计之初,Dremel并非是MapReduce的替代品,它只是可以执行非常快的分析,在使用的时候,常常用它来处理MapReduce的结果集或者用来建立分析原型。 Dremel的数据模型是嵌套(nested)的。互联网数据常常是非关系型的。Dremel还需要有一个灵活的数据模型,这个数据模型至关重要。Dremel支持一个嵌套(nested)的数据模型,类似于Json。而传统的关系模型,由于不可避免的有大量的Join操作,在处理如此大规模的数据的时候,往往是有心无力的。 Dremel中的数据是用列式存储的。使用列式存储,分析的时候,可以只扫描需要的那部分数据的时候,减少CPU和磁盘的访问量。同时列式存储是压缩友好的,使用压缩,可以综合CPU和磁盘,发挥最大的效能。对于关系型数据,如果使用列式存储,我们都很有经验。但是对于嵌套(nested)的结构,Dremel也可以用列存储,非常值得我们学习。 Dremel结合了Web搜索 和并行DBMS的技术。首先,他借鉴了Web搜索中的“查询树”的概念,将一个相对巨大复杂的查询,分割成较小较简单的查询。大事化小,小事化了,能并发的在大量节点上跑。其次,和并行DBMS类似,Dremel可以提供了一个SQL-like的接口,就像Hive和Pig那样。

Why call it Dremel Brand of power tools that primarily rely on their speed as opposed to torque Data analysis tool that uses speed instead of raw power

Widely used inside Google Analysis of crawled web documents Tracking install data for applications on Android Market Crash reporting for Google products OCR results from Google Books Spam analysis Debugging of map tiles on Google Maps Tablet migrations in managed Bigtable instances Results of tests run on Google's distributed build system Disk I/O statistics for hundreds of thousands of disks Resource monitoring for jobs run in Google's data centers Symbols and dependencies in Google's codebase

Outline Nested columnar storage Query processing Experiments Observations

Records vs. columns r1 r1 r1 r1 r2 r2 r2 r2 r1 A . . . B E C D . . . * DocId: 10 Links Forward: 20 Name Language Code: 'en-us' Country: 'us' Url: 'http://A' Url: 'http://B' A * * . . . B E * C D r1 r1 r1 r1 r2 r2 r2 Read less, cheaper decompression r2 . . . Challenge: preserve structure, reconstruct from a subset of fields

Nested data model r1 r2 http://code.google.com/apis/protocolbuffers DocId: 10 Links Forward: 20 Forward: 40 Forward: 60 Name Language Code: 'en-us' Country: 'us' Code: 'en' Url: 'http://A' Url: 'http://B' Code: 'en-gb' Country: 'gb' r1 multiplicity: message Document { required int64 DocId; [1,1] optional group Links { repeated int64 Backward; [0,*] repeated int64 Forward; } repeated group Name { repeated group Language { required string Code; optional string Country; [0,1] } optional string Url; } } r2 DocId: 20 Links Backward: 10 Backward: 30 Forward: 80 Name Url: 'http://C'

Column-striped representation DocId Name.Url Links.Forward Links.Backward value r d 10 20 value r d http://A 2 http://B 1 NULL http://C value r d 20 2 40 1 60 80 value r d NULL 1 10 2 30 Name.Language.Code Name.Language.Country value r d en-us 2 en NULL 1 en-gb value r d us 3 NULL 2 1 gb

Repetition and definition levels DocId: 10 Links Forward: 20 Forward: 40 Forward: 60 Name Language Code: 'en-us' Country: 'us' Code: 'en' Url: 'http://A' Url: 'http://B' Code: 'en-gb' Country: 'gb' r=1 r=2 (non-repeating) Name.Language.Code record (r=0) has repeated value r d en-us 2 en NULL 1 en-gb Language (r=2) has repeated r2 r: At what repeated field in the field's path the value has repeated DocId: 20 Links Backward: 10 Backward: 30 Forward: 80 Name Url: 'http://C' d: How many fields in paths that could be undefined (opt. or rep.) are actually present

Record assembly FSM Transitions labeled with repetition levels DocId 1 1 Links.Backward Links.Forward 0,1,2 Name.Language.Code Name.Language.Country 2 0,1 1 Name.Url For record-oriented data processing (e.g., MapReduce)

Reading two fields s1 s2 Structure of parent fields is preserved. DocId: 10 Name Language Country: 'us' Name Name Country: 'gb' DocId 1,2 Name.Language.Country s2 DocId: 20 Name Structure of parent fields is preserved. Useful for queries like /Name[3]/Language[1]/Country

Outline Nested columnar storage Query processing Experiments Observations

Query processing Optimized for select-project-aggregate Very common class of interactive queries Single scan Within-record and cross-record aggregation Approximations: count(distinct), top-k Joins, temp tables, UDFs/TVFs, etc.

SQL dialect for nested data SELECT DocId AS Id, COUNT(Name.Language.Code) WITHIN Name AS Cnt, Name.Url + ',' + Name.Language.Code AS Str FROM t WHERE REGEXP(Name.Url, '^http') AND DocId < 20; Output table Output schema t1 Id: 10 Name Cnt: 2 Language Str: 'http://A,en-us' Str: 'http://A,en' Cnt: 0 message QueryResult { required int64 Id; repeated group Name { optional uint64 Cnt; repeated group Language { optional string Str; } } }

Serving tree Parallelizes scheduling and aggregation Fault tolerance [Dean WSDM'09] client Parallelizes scheduling and aggregation Fault tolerance Stragglers Designed for "small" results (<1M records) root server intermediate servers . . . . . . leaf servers (with local storage) . . . histogram of response times storage layer (e.g., GFS)

Example: count() SELECT A, COUNT(B) FROM T GROUP BY A T = {/gfs/1, /gfs/2, …, /gfs/100000} SELECT A, SUM(c) FROM (R11 UNION ALL R110) GROUP BY A R11 R12 SELECT A, COUNT(B) AS c FROM T11 GROUP BY A T11 = {/gfs/1, …, /gfs/10000} SELECT A, COUNT(B) AS c FROM T12 GROUP BY A T12 = {/gfs/10001, …, /gfs/20000} 1 . . . . . . SELECT A, COUNT(B) AS c FROM T31 GROUP BY A T31 = {/gfs/1} . . . 3 Data access ops

Outline Nested columnar storage Query processing Experiments Observations

Experiments 1 PB of real data (uncompressed, non-replicated) 100K-800K tablets per table Experiments run during business hours Table name Number of records Size (unrepl., compressed) Number of fields Data center Repl. factor T1 85 billion 87 TB 270 A 3× T2 24 billion 13 TB 530 T3 4 billion 70 TB 1200 T4 1+ trillion 105 TB 50 B T5 20 TB 30 2× 首先,我们测试看看列存的效果。对于T1表,1GB的数据大约有300K行,使用列存的话压缩后大约在375MB。这台机器磁盘的吞吐在70MB/s左右。这1GB的数据,就是我们的现在的测试数据源,测试环境是单机。

Read from disk "cold" time on local disk, averaged over 30 runs time (sec) (e) parse as C++ objects 10x speedup using columnar storage from records objects (d) read + decompress records columns (c) parse as C++ objects 曲线A,是用列存读取数据并解压的耗时。 曲线B是一条一条记录挨个读的时间。 曲线C是在B的基础上,加上了反序列化的时间。 曲线d,是按行存读并解压的耗时。 曲线e加上了反序列化的时间。因为列很多,反序列化耗时超过了读并解压的50%。 from columns (b) assemble   records 2-4x overhead of using records (a) read + decompress number of fields Table partition: 375 MB (compressed), 300K rows, 125 columns

MR and Dremel execution Avg # of terms in txtField in 85 billion record table T1 execution time (sec) on 3000 nodes Sawzall program ran on MR: num_recs: table sum of int; num_words: table sum of int; emit num_recs <- 1; emit num_words <- count_words(input.txtField); 87 TB 0.5 TB 0.5 TB Q1: SELECT SUM(count_words(txtField)) / COUNT(*) FROM T1 MR overheads: launch jobs, schedule 0.5M tasks, assemble records

Impact of serving tree depth execution time (sec) (returns 100s of records) (returns 1M records) 上图是这两个Query在不同的server拓扑下的性能。每个测试都是有2900个叶子Server。在2级拓扑中,根server直接和叶子Server通信。在3级拓扑中,各个级别的比例是1:100:2900,增加了100个中间Server。在4级拓扑中,比例为1:10:100:2900. Q2可以在3级拓扑下3秒内执行完毕,但是为他提供更高的拓扑级别,对性能提升没有裨益。相比之下,为Q3提供更高的拓扑级别,性能可以有效提升。这个测试体现了树状拓扑对性能提升的作用。 SELECT country, SUM(item.amount) FROM T2 GROUP BY country Q2: SELECT domain, SUM(item.amount) FROM T2 WHERE domain CONTAINS ’.net’ GROUP BY domain Q3: 40 billion nested items

Scalability execution time (sec) number of leaf servers Q5 on a trillion-row table T4: SELECT TOP(aid, 20), COUNT(*) FROM T4

Outline Nested columnar storage Query processing Experiments Observations

Most queries complete under 10 sec Interactive speed Monthly query workload of one 3000-node Dremel instance percentage of queries execution time (sec) Most queries complete under 10 sec

Most queries complete under 10 sec Interactive speed Monthly query workload of one 3000-node Dremel instance 值得注意的是T5的数据只有两份拷贝,所以有更高的概率出现坏节点和拖油瓶。这个查询需要扫描大约1TB的压缩数据,使用2500个节点。 可以看到99%的分区都在5S内完成的。不幸的是,有一些分区需要较长的时间来处理。尽管通过动态调度可以加快一些,但在如此大规模的计算上面,很难完全不出问题。如果不在意太精确的结果,完全可以小小减少覆盖的比例,大大提升相应速度。 Most queries complete under 10 sec

Observations Possible to analyze large disk-resident datasets interactively on commodity hardware 1T records, 1000s of nodes MR can benefit from columnar storage just like a parallel DBMS But record assembly is expensive Interactive SQL and MR can be complementary Parallel DBMSes may benefit from serving tree architecture just like search engines

BigQuery: powered by Dremel http://code.google.com/apis/bigquery/ Your Data Upload your data to Google Storage 1. Upload BigQuery 2. Process Import to tables Your Apps Run queries 3. Act