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