GreenPlum简介 快速入门

GreenPlum是一个底层是多台PostgreSQL分表分库的分布式数据库,它有如下特点

  • 支持标准SQL,几乎所有PostgreSQL支持的SQL,greenplum都支持
  • 支持ACID、分布式事务
  • 支持上百台集群(这一点有点不好,hadoop可以万台)

系统架构

image

Master Host

  • 处理用户请求,生成执行计划,以及在执行计划执行必要的聚合操作(avg)或者排序
  • 内部有一个PostgreSQL数据库,保存所有的元数据,索引信息
  • 监控所有segment的状态信息

Segment host

  • 每台Segment host有多个segment,一般segment等于core数
  • segment是一个PostgreSQL数据库,负责存储具体数据

内部网络

GreenPlum内部使用udp网络,但是Greenplum会对数据包进行校验,因此可靠性等同于TCP。使用TCP的时候,最多支持1000个segment

执行计划

当master接受到一条SQL语句,会将这条语句解析为执行计划DAG,将DAG中不需要进行数据交换的划分为slice,多表连接,aggerate,sort的时候,都会涉及到slice的重分布,会有一个motion任务来执行数据的重分布。将slice下发到涉及到的相关segment中。

我认为slice类似与Spark中的stage的概念,不需要进行数据shuffle

motion方式

  • gather motion(N->1):在master节点上把所有segment数据聚集起来,一般是sort,sort group,sort join
  • boardcast motion(N->N):每个segment把数据广播给其余所有segment
  • redistribute motion(N->N):每个segment把数据按照hash的方式重新分布



作者:凉秋_不见春暖
链接:https://www.jianshu.com/p/9be1439f5bd3
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/oZuoLuo123/article/details/88370307