【Datahub系列教程】Datahub入門必學——DatahubCLI之Docker命令詳解

獨孤風發表於2023-12-28

大家好,我是獨孤風,今天的後設資料管理平臺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功能演示請參考大資料流動影片號

相關文章