SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
1Pivotal Confidential–Internal Use Only 1© Copyright 2013 Pivotal. All rights reserved.
开源大数据引擎:Greenplum 数据
库架构分析
姚延栋
yyao@pivotal.io
Pivotal中国研发中心
2Pivotal Confidential–Internal Use Only
日程
 Greenplum 数据库(GPDB)简介
 Greenplum 数据库(GPDB)架构
 Greenplum 数据库(GPDB)核心组件
 Greenplum 数据库(GPDB)SQL执行过程
 Greenplum 数据库(GPDB)开源
3Pivotal Confidential–Internal Use Only 3© Copyright 2013 Pivotal. All rights reserved.
Greenplum 简介
4Pivotal Confidential–Internal Use Only
SQL vs. NoSQL vs. Hadoop
大数据 ≠ Hadoop
大多情况下,GPDB 更适合做大数据存储、计算、分析和挖掘的引擎。
5Pivotal Confidential–Internal Use Only
GPDB:为大数据存储、计算、挖掘而设计
 标准 SQL 数据库:ANSI SQL 2008 标准,OLAP,JDBC/ODBC
 支持ACID、分布式事务
 分布式数据库:线性扩展,支持上百物理节点
 企业级数据库:全球大客户超过 1000+ 安装集群
 百万行源代码,超过10年的全球研发投入
 开源数据库(greenplum.org),良性生态系统
6Pivotal Confidential–Internal Use Only
客户
7Pivotal Confidential–Internal Use Only
合作伙伴
8Pivotal Confidential–Internal Use Only 8© Copyright 2013 Pivotal. All rights reserved.
Greenplum 架构
9Pivotal Confidential–Internal Use Only
平台概况
产品特性
客户端访问和工具
多级容错机制
无共享大规模并行处理
先进的查询优化器
多态存储系统
客户端访问
ODBC, JDBC, OLEDB, etc.
核心MPP
架构
并行数据流引擎
高速软数据交换机制
MPP Scatter/Gather 流处理
在线系统扩展 任务管理
服务
加载 & 数据联邦
高速数据加载
近实时数据加载
任意系统数据访问
存储 & 数据访问
混合存储引擎(行存&列存)
多种压缩,多级分区表
索引(B树,位图,GiST)
安全性
语言支持
标准SQL支持,SQL 2003 OLAP扩展
支持 MapReduce
扩展编程语言
(Python,R, Java, Perl, C/C++)
第三方工具
BI 工具, ETL 工具
文本分析,数据挖掘等
管理工具
GP Command Center
GP Workload Manager
10Pivotal Confidential–Internal Use Only
MPP(大规模并行处理)无共享体系架构
从主节点
…
主节点
SQL
• 主节点和从主节点,主节点负责协调整个集群
• 一个数据节点可以配置多个节点实例(Segment
Instances)
• 节点实例并行处理查询(SQL)
• 数据节点有自己的CPU、磁盘和
内存(Share nothing)
• 高速Interconnect处理持续
数据流(Pipelining)
Interconnect
Segment Host
Segment Instance
Segment Instance
Segment Instance
Segment Instance
Segment Host
Segment Instance
Segment Instance
Segment Instance
Segment Instance
节点1
Segment Host
Segment Instance
Segment Instance
Segment Instance
Segment Instance
节点2
Segment Host
Segment Instance
Segment Instance
Segment Instance
Segment Instance
节点3
Segment Host
Segment Instance
Segment Instance
Segment Instance
Segment Instance
节点N
11Pivotal Confidential–Internal Use Only
数据分布: 并行化的根基
最重要的策略和目标是均匀分布数据到各个数据节点。
43 Oct 20 2005 12
64 Oct 20 2005 111
45 Oct 20 2005 42
46 Oct 20 2005 64
77 Oct 20 2005 32
48 Oct 20 2005 12
Order
Order#
Order
Date
Customer
ID
50 Oct 20 2005 34
56 Oct 20 2005 213
63 Oct 20 2005 15
44 Oct 20 2005 102
53 Oct 20 2005 82
55 Oct 20 2005 55
12Pivotal Confidential–Internal Use Only
Segment 1A Segment 1B Segment 1C Segment 1D
Segment 2A Segment 2B Segment 2C Segment 2D
Segment 3A Segment 3B Segment 3C Segment 3D
Segment 1A Segment 1B Segment 1C Segment 1D
Segment 2A Segment 2B Segment 2C Segment 2D
Segment 3A Segment 3B Segment 3C Segment 3D
Segment 1A Segment 1B Segment 1C Segment 1D
Segment 2A Segment 2B Segment 2C Segment 2D
Segment 3A Segment 3B Segment 3C Segment 3D
分布和分区
SELECT COUNT(*)
FROM orders
WHERE order_date >= ‘Oct 20 2007’
AND order_date < ‘Oct 27 2007’
&
orders 表数据均匀分布于各个节点 仅仅扫描 orders 表相关的分区
Segment 1A Segment 1B Segment 1C Segment 1D
Segment 2A Segment 2B Segment 2C Segment 2D
Segment 3A Segment 3B Segment 3C Segment 3D
13Pivotal Confidential–Internal Use Only
多级分区存储
• 哈希Distribution:数据均
匀的分布到各个数据节点
• 范围分区: 数据节点内部,
根据多种规则分区,降低扫
描量
数据集
Segment 1A Segment 1C Segment 1D
Segment 2A Segment 2B Segment 2C Segment 2D
Segment 3A Segment 3B Segment 3C Segment 3D
Jan 2007
Feb 2007
Mar 2007
Apr 2007
May 2007
Jun 2007
Jul 2007
Aug 2007
Sep 2007
Oct 2007
Nov 2007
Dec 2007
Segment 1B
节点1
节点2
节点3
14Pivotal Confidential–Internal Use Only
SLICE 1 SLICE 2
SLICE 3
SELECT customer,
amount
FROM sales
JOIN customer
USING (cust_id)
WHERE date=2008;
Table Scan
Redistribute
Motion
Table Scan
Hash
Hash Join
Gather
Motion
Table Scan
Redistribute
Motion
Table Scan
Hash
Hash Join
Gather
Motion
SLICE 3
SLICE 1SLICE 2
SEGMENT 2 SEGMENT 1
生成并行查询计划
15Pivotal Confidential–Internal Use Only
master
segment1 segment2
QD process
slice 3
QE process
slice 1
QE process
slice 2
QE process
slice 1
QE process
slice 2
gang
gang
gang
执行并行计划
16Pivotal Confidential–Internal Use Only
多态存储
 列存储更适合压缩
 查询列子集时速度快
 不同列可以使用不同压缩方式: gzip (1-
9), quicklz, delta, RLE
 访问多列时速度快
 支持高效更新和删除
 AO 主要为插入而优化
表‘SALES’
11月
列存储行存储
7月 一年前 二年前
外部表
 历史数据和不常访问的数
据存储在 HDFS 或者其他
外部系统中
 无缝查询所有数据
 Text, CSV, Binary,
Avro, Parquet 格式
6月 5月10月 9月 8月
用户自定义数据存储格式
17Pivotal Confidential–Internal Use Only
大规模并行数据加载
• 高速数据导入和导出
– 主节点不是瓶颈
– 10+ TB/小时/Rack
– 线性扩展
• 低延迟
– 加载后立刻可用
– 不需要中间存储
– 不需要额外数据处理
• 导入/导出 到&从:
– 文件系统
– 任意 ETL 产品
– Hadoop 发行版
外部数据源
Interconnect
... ...
......
主节点
查询优化和调度
数据节点
存储数据 & 查询处
理
SQL
ETL
File
Systems
18Pivotal Confidential–Internal Use Only 18© Copyright 2013 Pivotal. All rights reserved.
Greenplum 组件
19Pivotal Confidential–Internal Use Only
解析器
主节点Segment
系统表
优化器
分布式事务
调度器执行器
解析器执行词法分
析、语法分析并生
成 解析树
客户端
主节点接受客户连接,
处理请求,执行认证
解析器
主节点
20Pivotal Confidential–Internal Use Only
优化器
本地存储
主节点Segment
系统表分布式事务
Interconnect
调度器执行器
解析器 优化器
处理解析树,生成
查询计划
查询计划描述了如
何执行查询
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器Executor
Catalog
本地存储Storage
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
21Pivotal Confidential–Internal Use Only
调度器
本地存储
主节点Segment
系统表分布式事务
Interconnect
执行器
解析器
发送查询计划给各
个Segments
分配处理查询需要
的集群资源,收集
并返回结果给客户
端
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器Executor
Catalog
本地存储Storage
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
调度器
优化器
22Pivotal Confidential–Internal Use Only
执行器
本地存储
主节点Segment
系统表分布式事务
Interconnect
解析器
发送查询计划给各
个Segments
分配处理查询需要
的集群资源,收集
并返回结果给客户
端
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器Executor
Catalog
本地存储Storage
Segment 实例
本地事务
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器ddddddddd
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
优化器
调度器执行器
执行器
23Pivotal Confidential–Internal Use Only
Interconnect
本地存储
主节点Segment
系统表分布式事务
Interconnect
解析器
发送查询计划给各
个Segments
分配处理查询需要
的集群资源,收集
并返回结果给客户
端
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器Executor
Catalog
本地存储Storage
Segment 实例
本地事务
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器ddddddddd
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
优化器
调度器执行器
执行器
24Pivotal Confidential–Internal Use Only
系统表
本地存储
主节点Segment
系统表分布式事务
Interconnect
执行器
解析器
存储和管理数据库、
表、字段的元数据
每个节点保存一个
拷贝
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器Executor
系统表
本地存储Storage
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
Local TM
执行器
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
调度器
优化器
25Pivotal Confidential–Internal Use Only
分布式事务
本地存储
主节点Segment
系统表分布式事务
Interconnect
执行器
解析器
主节点上的分布式
事务管理器协调
Segment上的提交和
回滚操作
Segments 有自己的
事务日志,确定合
适提交或回滚自己
的事务
主节点
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
执行器Executor
Catalog
本地存储Storage
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
Segment 主机
Segment 实例
执行器
Catalog
本地存储
Segment 实例
本地事务
执行器
系统表
本地存储
调度器
优化器
26Pivotal Confidential–Internal Use Only 26© Copyright 2013 Pivotal. All rights reserved.
Greenplum 数据库SQL执行流程
27Pivotal Confidential–Internal Use Only
28Pivotal Confidential–Internal Use Only
29Pivotal Confidential–Internal Use Only
30Pivotal Confidential–Internal Use Only
31Pivotal Confidential–Internal Use Only
32Pivotal Confidential–Internal Use Only
33Pivotal Confidential–Internal Use Only
34Pivotal Confidential–Internal Use Only
35Pivotal Confidential–Internal Use Only
36Pivotal Confidential–Internal Use Only
37Pivotal Confidential–Internal Use Only
38Pivotal Confidential–Internal Use Only
39Pivotal Confidential–Internal Use Only 39© Copyright 2013 Pivotal. All rights reserved.
Greenplum 开源
40Pivotal Confidential–Internal Use Only
最先进的开源分布式数据库(greenplum.org)
41Pivotal Confidential–Internal Use Only
Greenplum 数据库源代码
42Pivotal Confidential–Internal Use Only
完全基于社区的工作方式
gpdb-dev@greenplum.org
gpdb-user@greenplum.org
Github Issues
Github Pull Request
43Pivotal Confidential–Internal Use Only
相关链接
 主站点:http://greenplum.org/
 源代码:https://github.com/greenplum-db/gpdb
 邮件列表:http://greenplum.org/#mailing-lists
 如何贡献:http://greenplum.org/#contribute
 活动:http://greenplum.org/#events
– GPDB Meetup: 2016/01/12 北京
http://www.meetup.com/Greenplum-
Community/events/226900679/?a=co2_grp&gj=co2&rv=co2
44Pivotal Confidential–Internal Use Only
中文社区
 欢迎大学、研究机构、公司和客户参与到社区中,共建世界
一流的大数据数据库!
 欢迎和Pivotal中国研发中心合作
 微信公众号:Greenplum(即将上线)
 微信群:
 http://gpdb.rocks
 QQ 群:99194625
45Pivotal Confidential–Internal Use Only
首届 GPDB 中国技术研讨会: 2016/01/12,北京
报名: http://www.hdb.com/party/9b8w?h_share_uid=&hdb_from=WXShare
微博: http://weibo.com/p/1001603915302030211907
http://gpdb.rocks
46Pivotal Confidential–Internal Use Only
热招职位:
 Greenplum 数据库内核开发 (C, Python)
 Greenplum 文本检索产品开发 (C/C++, Python, Java)
 Greenplum 管理控制台前端和后端开发(golang, HTML5)
欢迎参与到世界一流的数据库内核团队
47Pivotal Confidential–Internal Use Only
Q&A
欢迎参与到世界一流的数据库内核团队
• Greenplum 数据库内核开发 (C,
Python)
• Greenplum 文本检索产品开发 (C/C++,
Python, Java)
• Greenplum 管理控制台前端和后端开发
(golang, HTML5)
48Pivotal Confidential–Internal Use Only 48© Copyright 2013 Pivotal. All rights reserved.
Appendix
49Pivotal Confidential–Internal Use Only
GPDB 高可用性
 主节点(Master)高可用
– Warm Standby
▪ 主节点系统表副本
– 避免单点故障
– 主节点和从主节点间同步复制
▪ 使用流复制
 数据节点(Segment)高可用
– 每个Segment都配备一个Mirror
▪ 使用文件块级别的复制
– 自动故障切换(failover)
50Pivotal Confidential–Internal Use Only
故障检测和恢复
 ftsprobe 故障检测进程使用心跳检测segments是否发生故障
 gpstate 工具查看primary和mirror segments 的状态
 查询 gp_segment_configuration 系统表可以查看故障Segment的详细信息
▪ $ psql -c "SELECT * FROM gp_segment_configuration WHERE status='d';"
 当 ftsprobe 不能连接到某个 Segment 时标记其为宕机
– 系统管理员可以使用 gprecoverseg 工具恢复宕机节点
 自动failover到镜像 Segment
– 之后的连接切换到镜像节点

Mais conteúdo relacionado

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

BDTC2015 pivotal-姚延栋-开源大数据引擎:greenplum 数据库架构分析

  • 1. 1Pivotal Confidential–Internal Use Only 1© Copyright 2013 Pivotal. All rights reserved. 开源大数据引擎:Greenplum 数据 库架构分析 姚延栋 yyao@pivotal.io Pivotal中国研发中心
  • 2. 2Pivotal Confidential–Internal Use Only 日程  Greenplum 数据库(GPDB)简介  Greenplum 数据库(GPDB)架构  Greenplum 数据库(GPDB)核心组件  Greenplum 数据库(GPDB)SQL执行过程  Greenplum 数据库(GPDB)开源
  • 3. 3Pivotal Confidential–Internal Use Only 3© Copyright 2013 Pivotal. All rights reserved. Greenplum 简介
  • 4. 4Pivotal Confidential–Internal Use Only SQL vs. NoSQL vs. Hadoop 大数据 ≠ Hadoop 大多情况下,GPDB 更适合做大数据存储、计算、分析和挖掘的引擎。
  • 5. 5Pivotal Confidential–Internal Use Only GPDB:为大数据存储、计算、挖掘而设计  标准 SQL 数据库:ANSI SQL 2008 标准,OLAP,JDBC/ODBC  支持ACID、分布式事务  分布式数据库:线性扩展,支持上百物理节点  企业级数据库:全球大客户超过 1000+ 安装集群  百万行源代码,超过10年的全球研发投入  开源数据库(greenplum.org),良性生态系统
  • 8. 8Pivotal Confidential–Internal Use Only 8© Copyright 2013 Pivotal. All rights reserved. Greenplum 架构
  • 9. 9Pivotal Confidential–Internal Use Only 平台概况 产品特性 客户端访问和工具 多级容错机制 无共享大规模并行处理 先进的查询优化器 多态存储系统 客户端访问 ODBC, JDBC, OLEDB, etc. 核心MPP 架构 并行数据流引擎 高速软数据交换机制 MPP Scatter/Gather 流处理 在线系统扩展 任务管理 服务 加载 & 数据联邦 高速数据加载 近实时数据加载 任意系统数据访问 存储 & 数据访问 混合存储引擎(行存&列存) 多种压缩,多级分区表 索引(B树,位图,GiST) 安全性 语言支持 标准SQL支持,SQL 2003 OLAP扩展 支持 MapReduce 扩展编程语言 (Python,R, Java, Perl, C/C++) 第三方工具 BI 工具, ETL 工具 文本分析,数据挖掘等 管理工具 GP Command Center GP Workload Manager
  • 10. 10Pivotal Confidential–Internal Use Only MPP(大规模并行处理)无共享体系架构 从主节点 … 主节点 SQL • 主节点和从主节点,主节点负责协调整个集群 • 一个数据节点可以配置多个节点实例(Segment Instances) • 节点实例并行处理查询(SQL) • 数据节点有自己的CPU、磁盘和 内存(Share nothing) • 高速Interconnect处理持续 数据流(Pipelining) Interconnect Segment Host Segment Instance Segment Instance Segment Instance Segment Instance Segment Host Segment Instance Segment Instance Segment Instance Segment Instance 节点1 Segment Host Segment Instance Segment Instance Segment Instance Segment Instance 节点2 Segment Host Segment Instance Segment Instance Segment Instance Segment Instance 节点3 Segment Host Segment Instance Segment Instance Segment Instance Segment Instance 节点N
  • 11. 11Pivotal Confidential–Internal Use Only 数据分布: 并行化的根基 最重要的策略和目标是均匀分布数据到各个数据节点。 43 Oct 20 2005 12 64 Oct 20 2005 111 45 Oct 20 2005 42 46 Oct 20 2005 64 77 Oct 20 2005 32 48 Oct 20 2005 12 Order Order# Order Date Customer ID 50 Oct 20 2005 34 56 Oct 20 2005 213 63 Oct 20 2005 15 44 Oct 20 2005 102 53 Oct 20 2005 82 55 Oct 20 2005 55
  • 12. 12Pivotal Confidential–Internal Use Only Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D 分布和分区 SELECT COUNT(*) FROM orders WHERE order_date >= ‘Oct 20 2007’ AND order_date < ‘Oct 27 2007’ & orders 表数据均匀分布于各个节点 仅仅扫描 orders 表相关的分区 Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D
  • 13. 13Pivotal Confidential–Internal Use Only 多级分区存储 • 哈希Distribution:数据均 匀的分布到各个数据节点 • 范围分区: 数据节点内部, 根据多种规则分区,降低扫 描量 数据集 Segment 1A Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment 2D Segment 3A Segment 3B Segment 3C Segment 3D Jan 2007 Feb 2007 Mar 2007 Apr 2007 May 2007 Jun 2007 Jul 2007 Aug 2007 Sep 2007 Oct 2007 Nov 2007 Dec 2007 Segment 1B 节点1 节点2 节点3
  • 14. 14Pivotal Confidential–Internal Use Only SLICE 1 SLICE 2 SLICE 3 SELECT customer, amount FROM sales JOIN customer USING (cust_id) WHERE date=2008; Table Scan Redistribute Motion Table Scan Hash Hash Join Gather Motion Table Scan Redistribute Motion Table Scan Hash Hash Join Gather Motion SLICE 3 SLICE 1SLICE 2 SEGMENT 2 SEGMENT 1 生成并行查询计划
  • 15. 15Pivotal Confidential–Internal Use Only master segment1 segment2 QD process slice 3 QE process slice 1 QE process slice 2 QE process slice 1 QE process slice 2 gang gang gang 执行并行计划
  • 16. 16Pivotal Confidential–Internal Use Only 多态存储  列存储更适合压缩  查询列子集时速度快  不同列可以使用不同压缩方式: gzip (1- 9), quicklz, delta, RLE  访问多列时速度快  支持高效更新和删除  AO 主要为插入而优化 表‘SALES’ 11月 列存储行存储 7月 一年前 二年前 外部表  历史数据和不常访问的数 据存储在 HDFS 或者其他 外部系统中  无缝查询所有数据  Text, CSV, Binary, Avro, Parquet 格式 6月 5月10月 9月 8月 用户自定义数据存储格式
  • 17. 17Pivotal Confidential–Internal Use Only 大规模并行数据加载 • 高速数据导入和导出 – 主节点不是瓶颈 – 10+ TB/小时/Rack – 线性扩展 • 低延迟 – 加载后立刻可用 – 不需要中间存储 – 不需要额外数据处理 • 导入/导出 到&从: – 文件系统 – 任意 ETL 产品 – Hadoop 发行版 外部数据源 Interconnect ... ... ...... 主节点 查询优化和调度 数据节点 存储数据 & 查询处 理 SQL ETL File Systems
  • 18. 18Pivotal Confidential–Internal Use Only 18© Copyright 2013 Pivotal. All rights reserved. Greenplum 组件
  • 19. 19Pivotal Confidential–Internal Use Only 解析器 主节点Segment 系统表 优化器 分布式事务 调度器执行器 解析器执行词法分 析、语法分析并生 成 解析树 客户端 主节点接受客户连接, 处理请求,执行认证 解析器 主节点
  • 20. 20Pivotal Confidential–Internal Use Only 优化器 本地存储 主节点Segment 系统表分布式事务 Interconnect 调度器执行器 解析器 优化器 处理解析树,生成 查询计划 查询计划描述了如 何执行查询 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器Executor Catalog 本地存储Storage Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储
  • 21. 21Pivotal Confidential–Internal Use Only 调度器 本地存储 主节点Segment 系统表分布式事务 Interconnect 执行器 解析器 发送查询计划给各 个Segments 分配处理查询需要 的集群资源,收集 并返回结果给客户 端 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器Executor Catalog 本地存储Storage Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 调度器 优化器
  • 22. 22Pivotal Confidential–Internal Use Only 执行器 本地存储 主节点Segment 系统表分布式事务 Interconnect 解析器 发送查询计划给各 个Segments 分配处理查询需要 的集群资源,收集 并返回结果给客户 端 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器Executor Catalog 本地存储Storage Segment 实例 本地事务 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器ddddddddd Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 优化器 调度器执行器 执行器
  • 23. 23Pivotal Confidential–Internal Use Only Interconnect 本地存储 主节点Segment 系统表分布式事务 Interconnect 解析器 发送查询计划给各 个Segments 分配处理查询需要 的集群资源,收集 并返回结果给客户 端 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器Executor Catalog 本地存储Storage Segment 实例 本地事务 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器ddddddddd Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 优化器 调度器执行器 执行器
  • 24. 24Pivotal Confidential–Internal Use Only 系统表 本地存储 主节点Segment 系统表分布式事务 Interconnect 执行器 解析器 存储和管理数据库、 表、字段的元数据 每个节点保存一个 拷贝 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器Executor 系统表 本地存储Storage Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 Local TM 执行器 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 调度器 优化器
  • 25. 25Pivotal Confidential–Internal Use Only 分布式事务 本地存储 主节点Segment 系统表分布式事务 Interconnect 执行器 解析器 主节点上的分布式 事务管理器协调 Segment上的提交和 回滚操作 Segments 有自己的 事务日志,确定合 适提交或回滚自己 的事务 主节点 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 执行器Executor Catalog 本地存储Storage Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 Segment 主机 Segment 实例 执行器 Catalog 本地存储 Segment 实例 本地事务 执行器 系统表 本地存储 调度器 优化器
  • 26. 26Pivotal Confidential–Internal Use Only 26© Copyright 2013 Pivotal. All rights reserved. Greenplum 数据库SQL执行流程
  • 39. 39Pivotal Confidential–Internal Use Only 39© Copyright 2013 Pivotal. All rights reserved. Greenplum 开源
  • 40. 40Pivotal Confidential–Internal Use Only 最先进的开源分布式数据库(greenplum.org)
  • 41. 41Pivotal Confidential–Internal Use Only Greenplum 数据库源代码
  • 42. 42Pivotal Confidential–Internal Use Only 完全基于社区的工作方式 gpdb-dev@greenplum.org gpdb-user@greenplum.org Github Issues Github Pull Request
  • 43. 43Pivotal Confidential–Internal Use Only 相关链接  主站点:http://greenplum.org/  源代码:https://github.com/greenplum-db/gpdb  邮件列表:http://greenplum.org/#mailing-lists  如何贡献:http://greenplum.org/#contribute  活动:http://greenplum.org/#events – GPDB Meetup: 2016/01/12 北京 http://www.meetup.com/Greenplum- Community/events/226900679/?a=co2_grp&gj=co2&rv=co2
  • 44. 44Pivotal Confidential–Internal Use Only 中文社区  欢迎大学、研究机构、公司和客户参与到社区中,共建世界 一流的大数据数据库!  欢迎和Pivotal中国研发中心合作  微信公众号:Greenplum(即将上线)  微信群:  http://gpdb.rocks  QQ 群:99194625
  • 45. 45Pivotal Confidential–Internal Use Only 首届 GPDB 中国技术研讨会: 2016/01/12,北京 报名: http://www.hdb.com/party/9b8w?h_share_uid=&hdb_from=WXShare 微博: http://weibo.com/p/1001603915302030211907 http://gpdb.rocks
  • 46. 46Pivotal Confidential–Internal Use Only 热招职位:  Greenplum 数据库内核开发 (C, Python)  Greenplum 文本检索产品开发 (C/C++, Python, Java)  Greenplum 管理控制台前端和后端开发(golang, HTML5) 欢迎参与到世界一流的数据库内核团队
  • 47. 47Pivotal Confidential–Internal Use Only Q&A 欢迎参与到世界一流的数据库内核团队 • Greenplum 数据库内核开发 (C, Python) • Greenplum 文本检索产品开发 (C/C++, Python, Java) • Greenplum 管理控制台前端和后端开发 (golang, HTML5)
  • 48. 48Pivotal Confidential–Internal Use Only 48© Copyright 2013 Pivotal. All rights reserved. Appendix
  • 49. 49Pivotal Confidential–Internal Use Only GPDB 高可用性  主节点(Master)高可用 – Warm Standby ▪ 主节点系统表副本 – 避免单点故障 – 主节点和从主节点间同步复制 ▪ 使用流复制  数据节点(Segment)高可用 – 每个Segment都配备一个Mirror ▪ 使用文件块级别的复制 – 自动故障切换(failover)
  • 50. 50Pivotal Confidential–Internal Use Only 故障检测和恢复  ftsprobe 故障检测进程使用心跳检测segments是否发生故障  gpstate 工具查看primary和mirror segments 的状态  查询 gp_segment_configuration 系统表可以查看故障Segment的详细信息 ▪ $ psql -c "SELECT * FROM gp_segment_configuration WHERE status='d';"  当 ftsprobe 不能连接到某个 Segment 时标记其为宕机 – 系统管理员可以使用 gprecoverseg 工具恢复宕机节点  自动failover到镜像 Segment – 之后的连接切换到镜像节点