大家好,我是獨孤風,今天的元數據管理平臺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功能演示請參考大數據流動視頻號