🐘
DOC
BigDataGuide
BigDataGuide
  • 概览
  • bigdata
    • hadoop
      • Hadoop高可用配置
      • HDFS
        • HDFS shell 命令
        • HDFS集群管理
      • MapReduce
        • MapReduce数据操作
        • 分布式处理框架MapReduce
        • MapReduce输入输出剖析
        • MapReduce的工作原理剖析
      • Yarn
        • YARN快速入门
        • Yarn生产配置
    • scheduler
      • Azkaban生产实践
      • 系统架构
    • zookeeper
      • ZookeeperOverView
      • Zookeeper操作与部署
    • cache
      • alluxio
        • AlluxioConfiguration
        • AlluxioDeployment
        • AlluxioOverView
        • AlluxioWithEngine
    • collect
      • canal
        • CanalOverView
      • debezium
        • DebeziumOverView
        • Debezium使用改造
        • Debezium监控系统搭建
      • flume
        • FlumeOverwrite
        • Flume对接Kafka
      • sqoop
        • SqoopOverview
        • Sqoop实战操作
    • datalake
      • hudi
        • Flink基于Apache Hudi+Alluxio的数据湖实践
        • hudiOverview
        • hudiWithFlink
        • hudiWithSpark
        • hudi原理分析
        • hudi数据湖实践
        • hudi调优实践
      • iceberg
        • IcebergWithSpark
        • icebergOverview
        • icebergWithFlink
        • icebergWithHive
    • engine
      • spark
        • SparkOnDeploy
        • SparkOverwrite
        • Spark存储体系
        • Spark计算引擎和Shuffle
        • Spark调优
        • Spark调度系统
        • Spark部署模式
        • 从浅到深剖析Spark源码
        • practice
          • Spark实践
        • spark sql
          • SparkSQL API
        • spark sql
          • SparkSQL优化分析
        • spark streaming
          • SparkStreaming整合Flume
        • 源码分析
          • Spark内存管理
        • 源码分析
          • Spark核心对象
        • 源码分析
          • Spark通信架构
        • 源码分析
          • Spark调度和Shuffle解析
        • 源码分析
          • yarn的部署流程
      • flink
        • connector
          • 自定义TableConnector
        • core
          • Checkpoint机制剖析
          • FlinkOverview
          • 状态处理API
          • TableSQLOverview
        • feature
          • Flink1.12新特性
          • Flink1.13新特性
          • Flink1.14新特性
        • monitor
          • Flink运维监控
          • 搭建Flink任务指标监控系统
        • practice
          • Flink On K8s
          • 记录一次Flink反压问题
        • sourcecode
          • Flink Kafka Connector源码分析
          • FlinkCheckpoint源码分析
          • Blink Planner
          • FlinkTimerService机制分析
          • Flink内核源码分析
          • Flink窗口实现应用原理
          • Flink网络流控及反压
          • Flink运行环境源码解析
          • StreamSource源解析
          • TaskExecutor内存模型原理深入
        • books
          • Flink内核原理与实现
            • 第11-13章Task执行数据交换等
    • graph
      • nebula graph
        • 1.简介
      • nebula graph
        • 2.快速入门
    • kvstore
      • hbase
        • HBaseOverview
        • HBase整合第三方组件
        • Hbase 过滤器详解
      • rocksdb
        • RocksDB On Flink
        • RocksdbOverview
        • Rocksdb组件描述
        • Rocksdb配置
    • mq
      • kafka
        • Kafka Eagle
        • Kafka概念
        • 消费者源码剖析
        • 生产者源码剖析
        • kafka权威指南
          • 1.kafka入门
          • 2.安装Kafka
          • 3.Kafka生产者
          • 4.Kafka消费者
          • 5.深入Kafka
          • 6.可靠的消息传输
          • 7.构建数据管道
          • 8.跨集群数据镜像
          • 9.管理Kafka
        • 深入理解Kafka
          • 深入理解Kafka读书笔记
      • pulsar
        • 1.快速入门
        • 2.原理与实践
    • olap
      • clickhouse
        • ClickHouseOverView
      • druid
        • 概述
      • hive
        • Hive Shell和Beeline命令
        • HiveOverwrite
        • Hive分区表和分桶表
        • hive编程指南
          • 1.基础知识
          • 2.数据类型和文件格式
          • 3.HiveQL相关
          • 4.索引
          • 5.模式设计
          • 7.其他文件格式和压缩方法
          • 8.函数开发
          • 9.文件和记录格式以及Thrift服务
          • 10.存储和安全以及锁
          • 11.HCatalog
      • impala
        • ImpalaOverView
        • Impala Script
        • 使用Impala查询Kudu表
      • kudu
        • KuduConfiguration
        • KuduOverView
        • 表和模式设计
        • Kudu原理分析
        • Kudu生产实践
        • paper
          • KuduPaper阅读
      • kylin
        • 概述
      • presto
        • PrestoOverview
    • tools
      • sqltree
        • calcite
          • 快速入门
  • datawarehouse
    • 数据中台模块设计
      • thoth
      • 数据中台设计
    • 方案实践
      • Kudu数据冷备方案
      • 基于Flink的实时数仓建设
    • 理论
      • 数据仓库概念
      • devops
        • k8s-openshift客户端命令使用
        • maven
          • Maven命令
          • 制作maven骨架
      • 数据中台读书笔记
      • 数据仓库实战
  • base
    • algorithm
      • 算法题解
    • datastructure
      • 数据结构
    • scala
      • Scala基础
    • 分布式理论
      • Raft一致性算法
      • 分布式架构
    • 计算机理论
      • LSM存储模型
    • java
      • 并发编程
        • 并发工具类concurrent
        • 认识并发编程
  • mac os
    • iterm2
      • 多tab操作
  • servicemonitor
    • Prometheus
      • 安装
  • 贡献者指南
由 GitBook 提供支持
在本页
  • Description
  • Table Design
  • DataSource
  • MetaData Collector
  • DataSource Metadata Collector
在GitHub上编辑
  1. datawarehouse
  2. 数据中台模块设计

thoth

上一页数据中台模块设计下一页数据中台设计

最后更新于3年前

Description

  • Thoth是古埃及神话智慧之神的含义,对于forchange来说thoth就是数据部门的大数据元数据管理平台的含义,它包含技术元数据(数据源元数据、ETL元数据、数据血缘关系等等)和业务元数据(业务边界、指标口径等等)。

Table Design

DataSource

MetaData Collector

DataSource Metadata Collector

  • 数据源元数据采集器,采集Hive、Pg、Mysql等数据源元数据采集,提供定时和实时元数据采集。

Hive元数据采集

定时数据采集任务

Table信息采集

  • SQL

-- 采集单个schema下全部table元数据
SELECT
	tbls1.TBL_NAME tbl_name,
	tbls1.TBL_TYPE tbl_type,
	tbls1.CREATE_TIME tbl_create_time,
	tbls1.LAST_ACCESS_TIME tbl_last_access_time,
	tbls1.`OWNER` owner_name,
	sds1.NUM_BUCKETS num_buckets,
	sds1.LOCATION location,
	sds1.IS_COMPRESSED is_compressed,
	sds1.INPUT_FORMAT input_format,
	sds1.OUTPUT_FORMAT output_format,
	p.PKEY_NAME partition_field,
	p.PKEY_TYPE partition_type,
	p.PKEY_COMMENT partition_comment
FROM
	hivemeta.tbls tbls1
	JOIN hivemeta.dbs dbs1 ON tbls1.DB_ID = dbs1.DB_ID 
	AND dbs1.NAME = "for_ods"
	JOIN hivemeta.sds sds1 ON sds1.SD_ID = tbls1.SD_ID
	JOIN hivemeta.partition_keys p ON p.TBL_ID = tbls1.TBL_ID
	
--	采集单个schema的某个table的元数据
SELECT
	tbls1.TBL_NAME tbl_name,
	tbls1.TBL_TYPE tbl_type,
	tbls1.CREATE_TIME tbl_create_time,
	tbls1.LAST_ACCESS_TIME tbl_last_access_time,
	tbls1.`OWNER` owner_name,
	sds1.NUM_BUCKETS num_buckets,
	sds1.LOCATION location,
	sds1.IS_COMPRESSED is_compressed,
	sds1.INPUT_FORMAT input_format,
	sds1.OUTPUT_FORMAT output_format,
	p.PKEY_NAME partition_field,
	p.PKEY_TYPE partition_type,
	p.PKEY_COMMENT partition_comment
FROM
	hivemeta.tbls tbls1
	JOIN hivemeta.dbs dbs1 ON tbls1.DB_ID = dbs1.DB_ID 
	AND dbs1.NAME = "for_ods"
	AND tbls1.TBL_NAME="ods_aww_2005_external_group_chat_t"
	JOIN hivemeta.sds sds1 ON sds1.SD_ID = tbls1.SD_ID
	JOIN hivemeta.partition_keys p ON p.TBL_ID = tbls1.TBL_ID
  • 处理逻辑

    • 根据DataSource的配置获取SchemaName,调用上述SQL拉取HiveTable相关元数据信息

    • 循环遍历hive table元数据信息构建Table对象,查询当前tableName在table表中最大版本对象,如果最大版本不存在,则直接将构建的Table对象插入table表。并且内存中维护instanceName+schemaName+tableName的Hash值和tableId的映射。

    • 如果存在最大版本,比较table表中的相关属性(tableName、扩展属性、OwnerName、lastAccessTime、creationTime),如果该信息发生变化,则替换最大版本Table相关属性,并且将version+1,重新插入instanceSchemaTableNameAndIdMap内存映射。

Column信息采集

  • SQL

SELECT
	tbls1.TBL_NAME tbl_name,
	cv2.INTEGER_IDX column_index,
	cv2.COMMENT column_comment,
	cv2.TYPE_NAME type_name,
	cv2.COLUMN_NAME column_name
FROM
	hivemeta.tbls tbls1
	JOIN hivemeta.dbs dbs1 ON tbls1.DB_ID = dbs1.DB_ID 
	AND dbs1.NAME = "for_ods"
	JOIN hivemeta.sds sds1 ON sds1.SD_ID = tbls1.SD_ID
	JOIN hivemeta.columns_v2 cv2 ON sds1.CD_ID = cv2.CD_ID
  • 处理逻辑

    • 根据schemaName调用上述SQL获取其他全部的表名和列信息

    • 从instanceSchemaTableNameAndIdMap根据instance、schema、table的名称获取tableId(最大版本的),如果tableId不存在则更新table表元数据。

    • 根据tableId和columnName获取已经存在的Column,如果不存在则直接将现有的column元数据插入columns表,并且刷新tableIdAndColumnsMap缓存。

    • 如果tableIdAndColumnsMap存在该Column,则比较内存中的column和新查询出来的column信息,如果不相同则新插入一条新的column记录,其版本号+1。

MySQL元数据采集

数据源元数据表设计