开源的元数据管理平台很多。开源元数据管理平台是一种用于收集、存储和管理数据的工具,它们提供了一种可扩展的方式来组织和维护数据的元数据信息。以下是一些常见的开源元数据管理平台:
- Apache Atlas:Apache Atlas是一个开源的大数据元数据管理和数据治理平台,旨在帮助组织收集、整理和管理数据的元数据信息。它提供了丰富的元数据模型和搜索功能,可以与各种数据存储和处理平台集成。
- LinkedIn DataHub:LinkedIn DataHub是LinkedIn开源的元数据搜索和发现平台。它提供了一个集中式的元数据存储库,用于管理和浏览各种类型的数据集和数据资产的元数据信息。
- Amundsen:Amundsen是Lyft开源的数据发现和元数据管理平台。它提供了一个用户友好的界面,使用户可以搜索、浏览和贡献数据集的元数据信息。Amundsen还支持与其他数据工具和平台的集成。
- Metacat:Metacat是Netflix开源的数据发现和元数据管理平台。它提供了一个统一的接口来查找和浏览各种数据集的元数据信息,并支持与其他数据工具和服务的集成。
这些开源元数据管理平台都提供了各种功能,如元数据存储、搜索、浏览、数据资产关系管理、数据血统跟踪等,帮助组织更好地管理和利用数据的元数据信息。
而今天我们要介绍的OpenMetadata,希望提供一种元数据的管理标准,来让我们更好的管理元数据。
以上介绍来源1。
另外,关于元数据管理架构的发展,可参考之前我的一篇笔记4。
下面是本次开发环境搭建的操作记录,供大家参考。
本人操作环境为MacOS,官方文档2有的内容此处不再重复,按照文档要求对机器开发环境进行检查,需要补充安装的是:
antlr4
rpm
jq
其中rpm为可选项,先不安装。其它两个安装指令为:
brew install jq
brew install antlr
安装最新版本的antlr可能会导致空白页问题,建议手动安装4.9.2版本
下载ANTLR 4.9.2的jar文件:
从ANTLR的GitHub releases页面或官方网站下载ANTLR 4.9.2的jar文件。
移动jar文件到一个适当的目录:
例如,可将它放在/usr/local/lib
:
mv path_to_downloaded_jar/antlr-4.9.2-complete.jar /usr/local/lib/
创建antlr4和grun的快捷方式:
打开您的bash或zsh配置文件(.bashrc
, .bash_profile
, .zshrc
等)并添加以下别名:
alias antlr4='java -jar /usr/local/lib/antlr-4.9.2-complete.jar'
alias grun='java org.antlr.v4.gui.TestRig'
重新加载您的配置文件:
如果您使用的是bash:
source ~/.bash_profile
如果您使用的是zsh:
source ~/.zshrc
验证安装:
antlr4
上述安装步骤完成后,antlr4别名可在命令行被识别,但在构建项目依旧可能不被识别,在 Maven 中它会报 command not found
错误。
为了解决这个问题,需创建一个名为 antlr4
的可执行脚本,并确保它位于你的 $PATH
中。
创建一个新的脚本文件:
sudo nano /usr/local/bin/antlr4
将以下内容粘贴到编辑器中:
#!/bin/bash
java -jar /usr/local/lib/antlr-4.9.2-complete.jar "$@"
这里,"$@"
是一个特殊的变量,它会传递所有给该脚本的参数到 java -jar
命令。
保存并退出编辑器。
使脚本可执行:
sudo chmod +x /usr/local/bin/antlr4
然后是:
git clone https://github.com/open-metadata/OpenMetadata
cd openmetadata
python3 -m venv env
source env/bin/activate
make install_dev
make install_test precommit_install
如果你在执行时遇到google-re2相关错误时,请按以下步骤解决
google-re2安装问题解决
参考官方教程OpenMetadata Documentation: Get Help Instantly (open-metadata.org)进行操作。
先是通过docker部署Mysql,ProgreSQL和ES,但就这里的部署文档看不出来PostgreSQL有什么用,如果本地有MySQL和PostgreSQL的话(比如我),操作还复杂一些。比如修改对应docker-compose文件里面的端口号,以免于本地服务冲突:
ports:
- "3309:3306"
以上是MySQL端口的修改示例,将原来的3306改成了3309,容器端接口不变。但修改端口似乎对于整个项目的搭建会带来比较多负面影响,建议不修改。
接下来是项目整体打包,-DskipTests
建议加上,可以跳过一大堆单元测试的运行(单元测试的报错很难处理)。
mvn clean install -DskipTests
打包后为了方便后续开发,最好在IDEA中去运行实例,中间需要注意JAVA环境配置如检查JAVA_HOME是否配置在正确的路径上。
中间因网络或其他问题导致中断可从失败的模块重新开始,如:
mvn install -rf :openmetadata-service
可能需要单个测试的模块
cd /Users/januswing/code/OpenMetadata/openmetadata-service/src/test/java/org/openmetadata/service/resources/bots/BotResourceTest.java
mvn -Dtest=BotResourceTest test
找到打包好的分发包,在OpenMetadata/openmetadata-dist/target/openmetadata-版本号
这里,然后用以下命令执行Mysql表创建
sh bootstrap/bootstrap_storage.sh drop-create-all
记得不要cd进bootstrap,不然会执行失败,官方文档这里是有错的。
接下来,我们就可以在IDEA里面去Build和Run项目了,参考官方文档的配置没有问题。
- If you see blank page at http://localhost:8585, please check the logs at logs/openmetadata.log. You might be encountering one of the following errors:
-connection refused
orunreachable
- please confirm that MySQL and ES are reachable outside of docker by runningdocker ps
and checking that ports 3306 and 9200 are listening on 0.0.0.0
- If ElasticSearch in Docker on Mac is crashing, try changing Preferences -> Resources -> Memory to 4 GB
- If ElasticSearch logs showhigh disk watermark [90%] exceeded
, try changing Preferences -> Resources -> Disk Image Size to at least 16 GB
-Public Key Retrieval is not allowed
- verify that the JDBC connect URL inconf/openmetadata.yaml
is configured with the parameterallowPublicKeyRetrieval=true
- Browser console shows javascript errors, try doing a clean build. Some npm packages may not have been built properly.
环境或代码变更后,重新在根目录执行
mvn -DskipTests clean install
并IDEA中重新Run项目即可
Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create-metadata (default) on project openmetadata-service: Execution default of goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create-metadata failed.: NullPointerException
可以在日志中看到实际在执行的命令是:
Executing: /bin/sh -c cd '/Users/januswing/code/OpenMetadata/openmetadata-service' && 'git' 'rev-parse' '--verify' 'HEAD'
这个需要在openmetadata-service目录下返回当前分支上最新提交的完整 SHA-1 哈希值。如果你是直接下载github release源码包的话,就会有这个问题。
于是只需要把git构建好即可:
git init
git add .
git commit -m "initial commits"
org.sonarsource.scanner.maven
sonar-maven-plugin
${maven.sonar-plugin.version}
sonar是一个用来扫描代码质量的东西,下载release包构建时估计是无法调用到github仓库对应的secrets导致。
元数据提取框架官方使用airflow实现,也可以通过connector连接其他的元数据提取框架。
单独部署openmetadata_ingestion的方式官方文档没有明说,我是通过
docker compose -f docker/development/docker-compose.yml up ingestion --build -d
来部署的,但这会导致docker里面多出一套mysql和es的容器。上述命令执行成功后,将两个多出来的容器删掉,然后修改conf/openmetadata.yaml
如下:
metadataApiEndpoint: ${SERVER_HOST_API_URL:-http://host.docker.internal:8585/api}
重新Build & Run即可。
docker compose
过程中可能会经常遇到网络问题,修改~/.docker/.config.json加上代理有可能可解决一部分网络问题,前提是你本地有代理。
{
"auths": {
"https://index.docker.io/v1/": {}
},
"credsStore": "desktop",
"proxies": {
"default": {
"httpProxy": "http://localhost:1088",
"httpsProxy": "http://localhost:1088",
"noProxy": "localhost,127.0.0.1,host.docker.internal"
}
}
}
做完上面步骤,就可以在Settings里面连接本地数据库进行测试了。
## 参考资料[1] 项目介绍: 一体化元数据管理平台——OpenMetadata入门宝典
[2] 参考文档:OpenMetadata Documentation)
[3] 仓库地址:Open Standard for Metadata
[4] 第三代元数据架构:笔记-三代元数据目录架构