【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
大家好,我是独孤风,今天的元数据管理平台Datahub的系列教程,我们来聊一下Datahub CLI。也就是Datahub的客户端。
我们在安装和使用Datahub 的过程中遇到了很多问题。
- 如何安装Datahub ?
- 为什么总是拉取镜像?
- 如何启动Datahub ?
- 这些Datahub 的Docker命令都是做什么的?
有很多同学虽然搜到了答案,但是并不知道是如何解决的,下一次遇到还是一头雾水,所以今天我就带大家学习一下Datahub 的安装维护神器——Datahub CLI。
Datahub 为了用户可以更方便的操作,提供了一个名为datahub的客户端,客户端的软件包由acryldata公司维护。
Datahub CLI与Datahub的大版本保持一致。
Datahub CLI为了让大家方便的使用Datahub,提供了大量的命令。比如调动docker拉取并启动Datahub相关容器,初始化操作,拉取元数据等等。
这也就是我们在最初安装Datahub的时候,为什么需要用Datahub CLI进行一系列操作,后面才使用Datahub的原因,而在使用过程中也经常需要使用CLI对Datahub进行维护。所以学习并熟练掌握Datahub CLI还是非常有必要的。
本文就带大家学习下,Datahub CLI中最重要的Docker命令。学会本文,就再也不用担心用Docker安装Datahub的问题了。
本文档所含资料位置:“大数据流动VIP资料库” 》》“Datahub专栏资料包”,也可以在后台回复“Datahub获取”。
一、Datahub CLI的安装
由于Datahub CLI基于Python开发,所以同样发布在了pypi软件包管理中。
其地址如下:https://pypi.org/project/acryl-datahub/
2023年12月12日的最新版本是0.12.1.0

我们也可以在这里看到历史版本情况。

并且可以直接下载下来,如果是离线环境,可以下载下来安装。

官网建议是在虚拟环境中安装,这样可以给其一个干净的环境。
python3 -m venv venv # create the environment
source venv/bin/activate # activate the environment
也可以直接进行安装,需要Python3.7以上的环境。
升级pip,随后安装acryl-datahub。
python3 -m pip install --upgrade pip wheel setuptools
python3 -m pip install --upgrade acryl-datahub
安装后可以验证一下
datahub version
有的时候会提示 "-bash: datahub: command not found",不要惊慌,换成这个命令就好。
python3 -m datahub version
正常会看到下面的显示。

下面我们逐一介绍下都有什么命令。
二、基本命令
上文中我们已经知道,基本的命令形式是 python -m datahub --配置 命令 参数
其中python或者python3需要能执行python3.7以上的命令。
部分版本也可以直接执行datahub --配置 命令 参数
那么我们就执行第一个命令help
python -m datahub --help
将会展示所有的配置和命令情况。
这里也说明了 --help 会展示帮助信息,并退出。
其他的配置项,有是否打印debug日志,展示版本信息等等。

命令这里只是一个整体的概述。比如我们经常用的docker命令可以操作本地的docker镜像。而想要知道命令更具体的信息,可以使用命令。
python -m datahub docker --help

这样就会显示docker的帮助信息了。下面我们就来逐一的过一遍。
三、Docker命令
docker有check,ingest-sample-data,nuke,quickstart四个命令。
配置项只有--help,也就是说上面四个命令都可以通过--help来查看更具体的信息。
quickstart命令
quickstart可以自动在本地启动datahub需要的相关镜像,首先会去github获取最新的docker-compose文件,随后根据文件拉取最新的docker镜像,启动datahub整个系统。
所以很多同学执行datahub安装时,会报错,其实就是获取compose文件报错了。
因为需要去访问raw.githubusercontent.com这个网址,没有成功。
ERROR {datahub.entrypoints:201} - Command failed: HTTPSConnectionPool(host='raw.githubusercontent.com', port=443): Max retries exceeded with url: /datahub-project/datahub/master/docker/quickstart/docker-compose-without-neo4j-m1.quickstart.yml (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x107cba570>: Failed to establish a new connection: [Errno 61] Connection refused'))
同时,这里有一些设置,如--quickstart-compose-file,会使用本地的配置文件,这些设置会覆盖掉默认的配置去执行。
下面我们来结合实际应用来看看这些配置项。
其实通过quickstart的运行机制,同样解释了另一个现象,就是如果每次都执行quickstart,都会去拉取最新的镜像,网络不好的话会很坑。
这个问题有很多的解决方式。
建议大家搞一个稳定版本的配置文件,每次用本地文件启动即可,也可以改改版本号。这是我每次启动的命令,用我自己的配置文件。
python -m datahub docker quickstart --quickstart-compose-file ./dugufeng_yml/docker-compose-without-neo4j-dugufeng.quickstart.yml
也可以使用version命令来指定版本,可以通过这个参数来设置datahub的版本,如果没有设置,就会有配置文件的版本,可以使用'stable'来指定为最新的版本。
python -m datahub docker quickstart --version stable
--build-locally配置会尝试在启动前,先在本地构建容器。
python -m datahub docker quickstart --build-locally
--pull-images / --no-pull-images配置会尝试在启动前,是否去Docker Hub拉取镜像。
python -m datahub docker quickstart --no-pull-images
还有--dump-logs-on-failure用于打印失败日志,--graph-service-impl用于指定graph服务的实现。
下面这几个比较常用。如果本地已经有其他服务占用了端口会报端口占用错误Port 3306 was already in use。这时候我们可以灵活的指定一下其他的端口。
python -m datahub docker quickstart --mysql-port 3306 --zk-port 2181 --kafka-broker-port 9092 --schema-registry-port 8081 --elastic-port 9092
大家可以选择下面的命令来停止datahub。
python -m datahub docker quickstart --stop
正常停止后的显示。

可以对当前数据进行备份。
python -m datahub docker quickstart --backup
默认会备份镜像到 ~/.datahub/quickstart/,也可以选择自己指定一个位置。
python -m datahub docker quickstart --backup --backup-file <path to backup file>
恢复配置,可以选择只恢复索引数据,还是核心数据。
python -m datahub docker quickstart --restore
python -m datahub docker quickstart --restore-indices
python -m datahub docker quickstart --restore --no-restore-indices
同样也可以指定恢复的sql文件。
python -m datahub docker quickstart --restore --restore-file /home/my_user/datahub_backups/quickstart_backup.sql
还有一个配置 --standalone_consumers用于将 MAE & MCE作为单独的docker容器。
--kafka-setup加载 Kafka setup,--arch TEXT 指定要使用的CPU架构参数,有x86, arm64,m1。
nuke命令
可以使用nuke命令,可以清除所有Datahub的状态。(相当于恢复出厂了,慎用)
python -m datahub docker nuke

nuke只有两个选项,--help可以查询帮助。
--keep-data用户删除数据。
check命令
check命令用于检查docker容器状态是否健康。
这是正常的显示状态。

check命令处理--help查看帮助,没有其他的配置项。
ingest-sample-data命令
ingest-sample-data命令用于导入示例的元数据文件。
我们刚进入Datahub的时候会报一个错误,No Metadata Found。其实就是没有元数据。

我们这时候可以执行命令,来导入下示例数据看看。
python -m datahub docker ingest-sample-data
导入成功的显示。

再进入,数据已经有了。

除了--help,还有两个。
--parh可以指定一下本地的文件,将文件导入。
具体文件格式可以参考,MCE示例文件。

--token命令,用于datahub启动权限管理的时候METADATA_SERVICE_AUTH_ENABLED=true
需要指定token。
四、Docker基本操作
除了datahub的docker操作,有的时候也需要我们直接使用docker命令去排查一些问题。
下面是常用的命令。
使用以下命令列出当前正在运行的容器:
docker ps
这将显示所有正在运行的容器的列表,包括容器ID、名称、状态等信息。
找到要停止的容器的容器ID或名称。
使用以下命令停止容器,其中是容器的ID或名称:
docker stop
例如,如果要停止容器ID为dugufeng666的容器,可以运行以下命令:
docker stop dugufeng666
这将向容器发送停止信号,并使容器停止运行。
等待一段时间,直到容器完全停止。可以使用以下命令来验证容器的状态:
docker ps -a
这将显示所有容器的列表,包括已停止的容器。确保目标容器的状态显示为"Exited"。
停止所有容器
docker stop $(docker ps -a -q)
其他的命令我们下一期继续聊~
未完待续~
Datahub功能演示请参考大数据流动视频号
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解的更多相关文章
- [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解
接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...
- Java NIO系列教程(二) Channel通道介绍及FileChannel详解
目录: <Java NIO系列教程(二) Channel> <Java NIO系列教程(三) Channel之Socket通道> Channel是一个通道,可以通过它读取和写入 ...
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
- Linux必学的60个命令
inux必学的60个命令Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想 ...
- Linux必学的60个命令【转载】
Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存 [转载地址]http://blog.chinaunix.net/uid-16728139-id-3154272.ht ...
- Linux Shell系列教程之(八)Shell printf命令详解
本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...
- Crontab- Linux必学的60个命令
1.作用 使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户. 2.格式 crontab [ -u user ] 文件 cro ...
随机推荐
- mysql关键字匹配度模糊查询
有时候项目中需要进行模糊查询,但是要对查询出来的结果进行匹配度排序,比如搜索关键字是"北",需要把数据库中第一个字是北的排在前面,此时就可以用mysql的INSTR函数. INST ...
- C#结合OpenCVSharp4图片相似度识别
OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...
- 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析
开心一刻 昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 问题背景 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有 ...
- windows 网络模拟工具分享
[下载地址] Releases · jagt/clumsy · GitHub [介绍] 无需安装 无需篡改和代理 系统级限制,不针对单个程序,但可以针对单个IP 离线也可以限制,随停随用 界面简单 [ ...
- 微服务使用openfeign调用单点的会话失效问题
项目Springcloud,认证中心方式实现SSO使用开源框架Sa-Token 本身的单独访问每个客户端服务的单点就没有问题.然后单点通过Fegin调用就不好使了! 主要使用的Sa-Token的微服务 ...
- 低代码平台如何借助Nginx实现网关服务
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在典型的系统部署架构中,应用服务器是一种软件或硬件系统, ...
- Kbaor_2023_9_28_Java第一次实战项目_ELM_V1_食品的实体类、工具类与实现类
Kbaor_2023_9_28_Java第一次实战项目_ELM_V1_食品的实体类.工具类与实现类 ELM_V1_食品的实体类 package elm_V1; /** * [食品实体类] * * @a ...
- 系统RAM几乎爆满与解决方法
先说一遍,遇事不决就重启! 在电脑长时间运转下某些无良应用程序会产生大量的临时文件(目前我怀疑是有道云笔记) 最终导致系统爆炸 附图 在这种情况下,我下载了RAM实时监测我内存占用情况 结果发现pag ...
- 栈源代码(c++)
stack.h #ifndef STACK_H_ #define STACK_H_ #include<iostream> template<class T> struct No ...
- HTML5的重要内容-1
HTML学习笔记-1 (一):first-child和:first-of-type :first-child第一个元素 :first-of-type第一个某种类型元素 (二):only-child和: ...