zoukankan      html  css  js  c++  java
  • Greenplum简介

    Greenplum能做什么?

    • 数仓 / OLAP / 即席查询
    • 混合负载 / HTAP
    • 流数据
    • 集成数据分析
    • 数据库内嵌机器学习
    • 现代 SQL

    核心架构

    • 架构图

      img

    • Master Host:

      • 主节点, 负责协调整个集群
      • 没有数据, 只有用户的元数据
    • Standby Master: 备份主

    • Segment Host:

      • 每个Segment都是一个单节点的PostgreSQL数据库。
      • 包含用户的实际数据, 会等待master给它分配实际任务, 然后进行相互协调执行。
      • 每个Segment对应在另外一个节点上会有一个镜像(mirror), 当这台Segment挂了之后, 它的镜像就会自动提升为primary, 从而实现高可用。
    • 可以随着业务的扩充进行线性扩展

    • 每台机器都是独立的, 机器之间通过Interconnect进行网络通讯, 因为又被称为MPP无共享架构。

    数据分布

    • 多种分布策略:

      • Hash, 随机, 复制表等
    • 最重要的策略和目标是均匀分布: 每个节点 1/n 数据

      1579322974170

    多级分区

    1579323128337

    多模存储 / 多态存储

    • 通常情况下, 数据价值随着时间越来越低, 所以会有不同的对应处理模式。
    • 就比如说一张销售表:
      • 最近3个月的数据, 我们可能要做的是对数据的完善及更新
      • 距今3个月到1年的数据, 我们可能做的最多的是做一些查询, 聚集, 报表
      • 1年前+数据, 访问较少。
    • 对应存储模式:
      • 1年前+数据:
        • 采用外部表技术, 数据不放在Greenplum中, 比如hdfs, amazon S3中。
        • 无缝查询所有数据:
          • Text, CSV, Binary, Avro, Parquet, ORC格式
      • 距今3个月到1年的数据:
        • 使用列存储, 更适合压缩(不同列可以使用不同压缩方式: gzip, quickz, delta, RLE, zstd), 查询列子集时速度快。
      • 最近3个月的数据:
        • 使用行存储, 适合OLTP业务, 适合频繁更新或者访问大部分字段的场景。

    查询支持

    • Apache ORCA: 专为复杂查询而生的优化器

      img

      • 可以做到比较好的动态分区裁剪
      • 处理比较复杂的子查询, 或CTE(是一个命名的临时结果集,仅在单个SQL语句(例如SELECT,INSERT或DELETE)的执行范围内存在)
    • 数据shuffle

    • 其他技术:

      • 高效压缩算法
      • 多阶段聚集
      • 复制表
      • Unlogged table
      • 物化视图
      • 一致性hash
      • 在线扩容
      • 安全性

    混合负载 / HTAP

    • OLTP 优化技术

      • 全局死锁检测 (GDD): 6版本之前用表锁, 优化有使用行锁。
      • 锁优化: 有一个锁竞争比较严重, 优化。
      • 事务优化
      • 复制表
      • 多模存储
      • 灵活索引
      • OLTP 友好的优化器
      • 内核升级: PostgreSQL 9.4
    • 资源管理

      特性 资源组(Resource Group) 资源队列(Resource Queue)
      并发控制 事务级别 语句级别
      死锁 极端情况下会出现
      CPU管理 基于比例、基于cgroup 基于粗粒度的优先级
      CPU 空闲利用率 可以充分利用空闲CPU 部分利用
      内存限制 精细 粗粒度
      组内内存共享 T F
      动态修改资源配置 T 部分
      排队 无并发槽位或者内存配额时 无并发槽位时
      管理DDL、Utility语句 T F
      Segment级别监控管理 T F
      基于规则的资源管理 T F

    细粒度多级内存管理

    1579325814442

    企业案例

    1579326128516

    • 如果对TP业务不是追求极致, 可以考虑Greenplum。

    流数据(准实时)

    • Greenplum Kafka Connector

      1579326383748

      • 该组件的目的是将Kafka Topic中 partition的数据高效导入到Greenplum中。
      • 可以看到最终gpss会将数据并行地导入到每个Segment中而不需要通过master, 效率较高。

    集成数据分析

    • 各种数据类型: 结构化、半结构化、非结构化

      1579327104923

    数据融合

    1579327153023

    • 数据全都放到Greenplum中的话代价还是很大的。
    • 过去会将全部数据从别的平台拉取到Greenplum, 涉及比较复杂的etl过程
    • 4版本后的数据融合功能, 不需要拉取数据到Greenplum, 只要在Greenplum上写SQL就可以查询存储在不同数据中的数据。

    PXF 架构

    “PXF架构”的图片搜索结果

    • 可以在Greenplum中定义一个外部表, 此外部表通过PXF协议指定到hadoop, hive, hbase, 数据库s3等。
    • 我们只需要在Greenplum上写一个SQL, 底层就会自动去对应的存储系统中拿取数据。
    • 如果底层是Hive的话, PXF还可以做到谓词下推

    基于 SQL 的数据库内嵌机器学习

    • 数据量越大, 模型精度越大。

    • SAS: 需要对数据进行抽样后再训练, 会损失部分精度, 只能用一个节点进行训练。

    • 希望对全量数据进行运算, 将算法内嵌到数据库中, 可以使用数据库的并行计算能力。

    • apache madlib

      “madlib架构”的图片搜索结果

      • 在每个Segment上集成成成Keras或者tensorFlow, 可以使用每个节点上的GPU资源。
  • 相关阅读:
    【转】xcode的模拟器位置
    [汇] 立即寻址,直接寻址,间接寻址
    [汇] iOS Crash相关(2)
    [转] time profile 使用详解
    [汇] iOS Crash相关(1)
    [转] Xcode 高级调试技巧
    [汇] iOS高级调试汇总
    [转]iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)
    [SVN]TortoiseSVN工具培训1─为什么要用SVN?
    团队管理_第一期干部训练营心得
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/12208988.html
Copyright © 2011-2022 走看看