1.1 定位
Wherehows定位于元数据仓库(a metadata warehouse),而不是数据仓库。它从不同的源系统中采集元数据,并进行标准化和建模,从而作为元数据仓库完成血缘分析。
区别于一般的数据处理平台,wherehows仅获取、处理元数据,而不涉及对业务数据的处理。
1.2 厂商信息
Wherehows是由LinkedIn开源,并主要在LinkedIn内部使用。外部应用应该比较少,暂时没有看到相关应用案例。
1.3 经典场景
全局数据视图
Wherehows可以作为公司级的数据集元数据管理仓库,方便员工及时了解公司有哪些数据集、数据集的组织结构以及数据集的确切信息等。
及时发现更新
通过wherehows可以追踪数据集的更改(如修改为新的位置或删除列),并提供了谱系跟踪函数查找从该数据集读取的任何作业,从而可以方便给数据集通知使用者。
1.4 Wherehows系统介绍
1.4.1 系统组件
Wherehows包括frontend、backend和数据层(wherehows仓库)三个组件,如下图所示:
 
Frontend
frontend即前端Web组件,提供可视化查询功能。提供展示元数据的UI,包括Datasets和Flows两个功能视图:
    Dataset视图:
该该视图下,用户可以查看wherehows从各种数据库类型系统中抓取的元数据以及元数据之间的组织结构,乃至元数据之间的血缘关系(并不是所有的数据都有血缘关系,数据的血缘关系是从Flows得到的)。
    Flows视图:
在该视图下,用户可以查看调度系统中的作业流信息以及作业流操作的数据的血缘。
Backend
Backend作为服务后端,主要提供API接口和执行ETL作业两个功能:
    提供RESTful API接口:
用户可以使用API接口将数据源系统或调度系统的连接参数等信息配置到wherehows中,以便于wherehows进行元数据获取。
    执行ETL作业:
在wherehows中是通过ETL作业来管理从源系统获取元数据的过程,这些作业被定期调度执行,可以通过API接口来激活作业。
数据层
Wherehows使用MySQL作为其数据存储引擎,存储的数据包括自身的ETL作业数据、从数据源系统获取的元数据信息、从调度系统获取的作业信息等内容。
1.4.2 组网模式
Wherehows的各组件之间是相互解耦的,即frontend、backend和数据库都可以独立部署。但在运行状态,frontend、backend都要依赖于数据层,而frontend、backend之间则没有强依赖,即不相互感知,如下所示:
 
1.4.3 系统依赖
Wherehows的安装和运行依赖于如下内容:
    Gradle(>=2.4)
    Play(2.2.4)
    JDK(1.8.X)
    MySQL(存储抽取的元数据>=5.6,网上说5.7会有问题)
    ElasticSerach
可选依赖,在官方提供的sandbox环境中并未运行ES。
当部署ES时,ES在wherehows中的应用如下所示:
1.    ETL作业抓取数据到ES。
检查源代码,与ES相关的仅WhereHows-master\wherehows-etl\src\main\resources\jython\ElasticSearchIndex.py,主要是将dict_field_detail、dict_dataset、dict_business_metric、comments、flow、flow_job表的数据插入到ES中,创建索引,提高检索效率。
 
2.    前端可以将ES作为搜索引擎,从而提升检索效率。
在WhereHows-master\wherehows-frontend\application.env配置文件中提供如下可配参数:
 
# Serach Engine
WHZ_SEARCH_ENGINE=elasticsearch

# Elasticsearch (Change "localhost" to your Es host )
WHZ_ES_DATASET_URL="http://localhost:9200/wherehows/dataset/_search"
WHZ_ES_METRIC_URL="http://localhost:9200/wherehows/metric/_search"
WHZ_ES_FLOW_URL="http://localhost:9200/wherehows/flow_jobs/_search"
    外部库:如mysql-connector-java.5.1.*.jar、jython-standalone-2.7.0.jar等。
1.4.4 与大数据系统的关系
Wherehows是独立于源系统的,即在部署上wherehows与hive、Azkaban等源系统是无关的,wherehows仅仅是从源系统抓取元数据,这些元数据可以分为数据集类和作业类,其中作业类就是指调度任务信息(从调度系统的数据库中抓取以及从日志服务器抓取),如Azkaban、Oozie的调度信息以及相关执行日志。
Wherehows与源系统的关系如下图所示:
 
从上图可以看出,wherehows仅是从源系统如Oozie、Azkaban、HDFS、Teradata中爬取元数据信息并存储到自身的Repo库中,即wherehows仅需要可以访问源系统的元数据存储系统或日志系统即可。
举例说明:
    数据集类源系统:以Hive为例,wherehows从Hive的元数据库如MySQL中抽取元数据并存储在自身的元数据仓库中,从而最终可以从wherehows中查看Hive中的元数据信息,如Hive中有哪些Database、Database下有哪些表等。Wherehows不能直接得到数据集的血缘,wherehows中数据集的血缘是从相关作业的分析中得到的。
    作业类源系统:以Azkaban为例,假设运行hive或pig任务,则wherehows可以从Azkaban的元数据库中获取作业信息、并从JobHistory获取实际运行的Hive或pig的日志,并对这些元数据以及日志数据解析形成血缘。
1.5 Wherehows功能介绍
1.5.1 功能视图

Wherehows前端提供的功能模块包括Dataset、Flows、Tools以及Advanced。
    Dataset提供数据集的元数据查询能力:
功能概览:
 
数据集血缘:
 
    Flows提供调度作业流的元数据查询能力:
功能概览:
 
Flows血缘:
 
    Tools提供数据schema历史查询能力,如下图所示:
 
    Advanced提供元数据的高级检索能力,该功能模块需要依赖ElasticSerach,如下截图所示:

1.5.2 作业管理
相关原理
Wherehows中将元数据的抽取、加载的过程称之为ETL作业,相关实现原理如下所示:
原文链接:https://github.com/LinkedIn/Wherehows/wiki/Set-Up-New-Metadata-ETL-Jobs
1.    配置元数据库的链接信息
在wh_etl_job_property表中配置,每种类型的数据源如hive、Azkaban、Oracle等都有相关的配置参数,如下图所示:
 
2.    配置wherehows的作业调度。
在wh_property表中配置,属于公共信息,配置一次即可,如下所示:
 
3.    配置元数据的抽取的调度信息。
在wh_etl_job表中配置,根据配置的cron表达式,wherehows进行元数据抽取。wh_etl_job表内容如下图所示:
 
抽取过程:
1)    Extract连接调度系统的元数据库或数据库系统,抽取元数据并以json格式保存在本地。
2)    Transfrom:将json转换为csv格式,以便于加载。
3)    Load:将csv格式的元数据加载到wherehows的数据库中,调度类的表包括:flow, flow_job, flow_dag, flow_schedule, flow_owner_permission, flow_execution, job_execution;数据类的表:dict_dataset
Wherehows已实现Hive、Oozie、Azkaban、Appworx等元数据ETL的作业脚本,如下图所示:
 
4.    激活ETL作业。
在完成上述配置,并且在源系统中进行操作导致元数据更改后,可以通过API的方式激活相关ETL作业,从而快速进行元数据抽取并在wherehows中查看。
    示例一:激活AZKABAN_LINEAGE_METADATA_ETL作业
curl -H "Content-Type: application/json" -X PUT -d '{"wh_etl_job_name":"AZKABAN_LINEAGE_METADATA_ETL", "ref_id":1, "control":"activate"}' http://localhost:9001/etl/control
    示例二:激活AZKABAN_EXECUTION_METADATA_ETL作业
curl -H "Content-Type: application/json" -X PUT -d '{"wh_etl_job_name":"AZKABAN_EXECUTION_METADATA_ETL", "ref_id":1, "control":"activate"}' http://localhost:9001/etl/control
wherehows支持的其它作业类型以及激活时的参数可以通过查看wh_etl_job表获得。
执行上述API调用后,可以看到wh_etl_job表中相关作业的is_active字段的取值已经变为Y(激活状态),next_run字段则标识了该作业下次运行时刻的时间戳。当系统时间到达相关next_run对应的时刻后,wherehows会自动执行相关作业的extract、transform、load任务,可以在/var/tmp/wherehows/wherehows.log日志中查看相关作业的执行情况。
支持的作业类型
 
未来规划
官方暂未看到相关规划,但提供了用户创建新的作业类型的操作指导。
1.5.3 血缘分析
相关原理

 
支持的血缘分析类型:
目前在官方文档中仅提到对如下两种调度系统的血缘分析:
    Azkaban:有文档,支持血缘分析需要配置“模式”,详见https://github.com/linkedin/WhereHows/tree/master/wherehows-etl中的Azkaban Lineage章节。
    Appworx:暂无文档,不清楚配置过程(未开源)。

未来规划:
 
1.5.4 工作流程
考虑如下场景:将调度系统Azkaban接入到wherehows中,从而在wherehows中实现Azkaban作业流的查看与分析。
 
1.6 Wherehows优劣分析
Wherehows优势
    支持元数据的历史版本管理以及对比分析。
    一站式的元数据分析管理系统。
Wherehows劣势
    支持的源系统比较少。
    在开源版本中仅支持Azkaban调度任务的血缘分析,因此也只有通过Azkaban调度操作的数据集或表才能获得血缘分析,而其他调度任务或数据集仅能获得元数据信息,而没有血缘信息。
    血缘分析粒度较粗,不支持列级血缘。如对HDFS仅能显示数据文件之间的血缘。
    Web UI仅提供查询能力,相关配置需要通过调用API接口实现。
    缺乏有效的用户、权限管理能力。
1.7 未来规划
短期规划
提升搜索算法
使用Gobblin实现大部分ETL作业的转换
支持接入Kafka,即从kafka实现数据平台元数据变更事件的监听
中期规划
在graphDB中存储血缘元数据并提供查询能力
存储后端支持NoSQL、Ground等
增加管理接口
远期规划
支持列级血缘
支持度量、仪表盘、实验等功能。
1.8 在调研中发现的问题
调研中使用的是官方提供的wherehows VM镜像,在操作中有如下问题:
当在Azkaban中调度Hive类型的作业时:
    作业中新创建的表在Hive中无法查询到
    对于Hive中已经存在的表,当在Azkaban调度中使用时,会出现表不存在的异常报错。

Wherehows调研总结相关推荐

  1. DataHub调研数据血缘

    DataHub调研&数据血缘 1. DataHub? 阿里的数据工具datahub? 回答: 不是 DataHub是由Linkedin开源的,官方喊出的口号为:The Metadata Pla ...

  2. 2022-2028年中国自动驾驶系统行业现状调研分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国自动驾驶系统行业市场行业相关概述.中国自 ...

  3. 2022-2028年中国UI设计行业现状调研分析及发展趋势研究报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国UI设计行业市场行业相关概述.中国UI设 ...

  4. 2022-2028年中国儿童医疗行业深度调研及投资前景预测报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国儿童医疗行业市场行业相关概述.中国儿童医 ...

  5. 2022-2028年中国果壳活性炭行业市场发展调研及竞争战略分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国果壳活性炭行业市场行业相关概述.中国果壳 ...

  6. 2022-2028年中国抗肿瘤药物行业市场分析调研及发展趋势研究报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国抗肿瘤药物行业市场行业相关概述.中国抗肿 ...

  7. 2021-2027年中国医联体(医疗联合体)建设深度调研及投资前景预测报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国医联体(医疗联合体)行业市场行业相关概述 ...

  8. 2022-2028年中国干洗行业市场全景调研与投资前景预测报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国干洗行业市场行业相关概述.中国干洗行业 ...

  9. 2022-2028年中国高密度聚乙烯(HDPE)行业市场发展调研及投资前景分析报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国高密度聚乙烯(HDPE)行业市场行业相 ...

  10. 2022-2028年中国环卫行业产业链深度调研及投资前景预测报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国环卫行业市场行业相关概述.中国环卫行业 ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——通信
  2. 5.9 程序示例--非线性分类-机器学习笔记-斯坦福吴恩达教授
  3. Android性能优化工具
  4. linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》
  5. 服务器重新部署踩坑记
  6. c++中关于字符串的读入——cin、getline、get、gtes(查询+思考+总结)
  7. C++ STL bitset类常用函数的使用
  8. Android TabLayout和ViewPager
  9. ins与apache的区别_既然nginx比apache快,为什么nginx没有取代apache?
  10. java day47【redis概念 、下载安装 、 命令操作 、持久化操作 、使用Java客户端操作redis】...
  11. 我开发共享软件的三次经历(上):打造一款很多人用的软件
  12. app开发流程:手机软件开发app的6个步骤
  13. 【Qt/C++异常笔记】间接寻址级别不同
  14. 计算机考研复试-《数据库》篇
  15. Mongodb模式设计
  16. [转]移动IIS7.5默认inetpub目录_se7en3_新浪博客
  17. MFC 获取屏幕客户区(及显示器大小)
  18. PEP8 python规范神器和jupyter notebook主题更改--Jupyter Notebook 快速入门
  19. g711原理pcm转alaw,pcm转ulaw,alaw转pcm,ulaw转pcm
  20. ubuntu 安装网络打印机(hp laserjet 3055 pcl5)

热门文章

  1. 用Arcgis把离散的点画出等值线和等值面(色斑图)
  2. Spring Boot 2.X默认连接池HikariCP详解
  3. Android移动应用开发大作业
  4. 吉他扒谱该怎么做?分享一款超好用的扒谱工具!
  5. 轻量级自适应个人自动发卡源码全开源 附详细图文安装教程
  6. 表达式计算引擎-JEP
  7. mysql alisql,Mysql-03. ubuntu 安装 alisql
  8. CentOS 8 的安装(官方安装、清华大学开源软件镜像站、阿里云镜像、网易镜像下的安装步骤)
  9. 发那科机器人圆弧指令怎么用_发那科机器人指令编辑详细介绍
  10. 进销存ERP源码 进销存APP源码 带小程序ERP源码