【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功能演示請參考大數據流動視頻號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章