最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

Greenplum MPP核心架构

[复制链接]
跳转到指定楼层
楼主
发表于 2021-6-4 15:11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本节主要从MPP架构入手,结合gp核心架构设计理念为深入理解snova打基础。
参考文章:https://doc.huodongjia.com/detail-3839.html  Hashdata 简丽荣
目录:
  • Postgresql基础
  • Greenplum数仓平台概览
  • Greenplum核心架构设计

基本概念:





MPP

大规模并行处理





1.psql基础
  • 客户端应用通过libpq协议连接到PostMaster进程
  • PostMaster收到连接请求后,fork出一个子进程Postgres Server来处理来自这个连接的查询语句
  • Postgres Server进程的功能组件可以分成两大类:查询执行和存储管理
2.gp数仓平台概览
大致上可以分为四层:从下至上依次为
  • 核心架构层

  • 服务层
多级容错

在线扩展

任务管理


  • 产品特性

  • 客户端访问和工具

3.核心架构设计:MPP无共享架构


  • 主从节点,主节点负责协调整个集群
  • 一个数据节点可以配置多个节点实例(segment instances)
  • 节点实例并行处理查询(sql)
  • 数据节点有自己的cpu、磁盘和内存(share nothing)
  • 告诉interconnect处理连续数据流(pipeline)

(一)数据均匀分布
在Greenplum数据库中所有表都是分布式的,所以每一张表都会被切片,每个segment实例数据库会存放相应的数据片段。切片(分布)规则可以由用户定义,可选的方案有根据用户对每一张表指定的hash key进行的Hash分布或者选择随机分布。

  • 在决定分布策略时,考虑下列最佳实践:
  • 为所有的表明确定义一个分布列或者随机分布。不要使用默认分布。
  • 理想情况下,使用单个将数据在所有Segment之间均匀分布的列。
  • 不要在查询的WHERE子句中将要使用的列上进行分布。
  • 不要在日期或者时间戳上分布。
  • 分布键列数据应该含有唯一值或者非常高的势。
  • 如果单个列无法实现均匀分布,则使用多列分布键,但不要超过两列。额外的列值通常不会得到更均匀的分布,而且它们要求额外的哈希处理时间。
  • 如果两个列的分布键无法实现数据的均匀分布,则使用随机分布。大部分情况中的多列分布键都要求移动操作来连接表,因此它们对于随机分布来说没有优势。
(二)分布和分区  分布(DISTRIBUTE)与分区(PARTITION)
数据分布
数据分区
目的:
1. 把大数据切片,便于查询
2. 便于数据库维护

分区创建时,每个分区会自带一个Check约束,来限定数据的范围。Check约束也用于 执行查询时定位分区。
支持分区类型:
1. 范围分区 range partition
2. 列表分区 list partition
3. 组合分区
  • 无论是分区表还是非分区表,通过GP的DISTRIBUTE功能,都会把数据分散到各个SEGMENT上去。
  • 分布,是从物理上把数据分散到各个SEGMENT上,这样更有利于并行查询。
  • 分区,是从逻辑上把一个大表分开,这样可以优化查询性能。分区是不会影响数据在各个SEGMENT上的分布情况的
(三)存储:多级分区表

(四)多态存储< 用户自定义存储格式>

行存小结:
全表扫描要扫描更多的数据块。
压缩比较低。
读取任意列的成本不一样,越靠后的列,成本越高。
不适合向量计算、JIT架构。(简单来说,就是不适合批处理形式的计算)
需要REWRITE表时,需要对全表进行REWRITE,例如加字段有默认值。
列存小结:
压缩比高。
仅仅支持AO存储(后面会将)。
读取任意列的成本是一样的。
非常适合向量计算、JIT架构。对大批量数据的访问和统计,效率更高。
读取很多列时,由于需要访问更多的文件,成本更高。例如查询明细。
需要REWRITE表时,不需要对全表操作,例如加字段有默认值,只是添加字段对应的那个文件。
(五)大规模并行数据加载
  • copy命令
copy工具源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载。使用copy命令进行数据加载,数据需要经过Master节点分发到Segment节点,同样使用copy命令进行数据卸载,数据也需要由Segment发送到Master节点,由Master节点汇总后再写入外部文件,这样就限制了数据加载与卸载的效率,但是数据量较小的情况下,copy命令就非常方便。
  • 使用gpfdist的外部表
  • gpload
gpload是一种数据装载工具,它扮演着Greenplum外部表并行装载特性的接口的角色。gpload使用定义在一个YAML格式的控制文件中的规范来执行一次装载。

高速数据导入和导出
     主节点不是瓶颈,线性扩展
低延迟
      加载后立刻可用,不需要中间存储,不需要额外数据处理
导入导出类型多样
      外部数据源多样:ETL +文件系统+hadoop

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-1 02:12

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表