Amundsen 是一個數據發現和元數據引擎,旨在提高數據分析師、數據科學家和工程師與數據交互時的生產力。目前,它通過索引數據資源(表格、儀表板、數據流等)并基于使用模式(例如,查詢頻率高的表格會優先于查詢頻率低的表格)提供頁面排名式的搜索功能來實現這一目標。您可以將其視為數據版的 Google 搜索。該項目以挪威探險家羅爾德·阿蒙森 (Roald Amundsen) 的名字命名,他是第一個發現南極的人。
安裝
Installation
使用 Docker 快速啟動默認版本的 Amundsen
以下指令用于通過 Docker 部署 Amundsen。
-
確保為 Docker 預留至少 3 GB 磁盤空間,并安裝
docker
和docker-compose
。 -
克隆本倉庫及其子模塊,執行:
git clone --recursive https://github.com/amundsen-io/amundsen.git
-
進入克隆目錄并執行以下命令:
# 使用 Neo4j 后端 $ docker-compose -f docker-amundsen.yml up# 使用 Atlas $ docker-compose -f docker-amundsen-atlas.yml up
若是首次運行,建議提前查閱故障排查步驟,尤其是與 ElasticSearch 堆內存及 Docker 引擎內存分配相關的首項(可能導致 Docker 錯誤 137)。
-
將提供的示例數據導入 Neo4j:(如使用 Atlas 后端,請跳過此步)
-
在另一終端窗口中,切換至 databuilder 目錄。
-
examples/
目錄中的sample_data_loader
Python 腳本依賴 elasticsearch client、pyhocon 等庫。請在虛擬環境中安裝依賴并執行腳本,命令如下。如在 Windows 運行python3 setup.py install
時出現extas_require
相關錯誤,請見 Windows 故障排查。python3 -m venv venvsource venv/bin/activatepip3 install --upgrade pippip3 install -r requirements.txtpython3 setup.py installpython3 example/scripts/sample_data_loader.py
-
在
http://localhost:5000
查看 UI,嘗試搜索test
,應返回結果。
-
也可對表實體執行精確匹配搜索。例如:在表字段中搜索
test_table1
,將返回匹配記錄。
Atlas 注意: Atlas 啟動需一定時間,因此執行 docker-compose up
后可能不會立即看到結果。當 Docker 日志輸出 Amundsen Entity Definitions Created...
時,Atlas 即準備就緒。
驗證部署
- 通過訪問
http://localhost:7474/browser/
驗證示例數據是否已導入 Neo4j,在查詢框中運行MATCH (n:Table) RETURN n LIMIT 25
,應能看到若干表。
- 通過訪問以下地址驗證數據是否已加載到元數據服務:
http://localhost:5000/table_detail/gold/hive/test_schema/test_table1
http://localhost:5000/table_detail/gold/dynamo/test_schema/test_table2
故障排查
-
若 Docker 容器為 ElasticSearch 分配的堆內存不足,
es_amundsen
將在docker-compose
期間失敗。 -
docker-compose 錯誤:
es_amundsen | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
-
增加堆內存,詳細說明見此
- 編輯
/etc/sysctl.conf
- 添加條目
vm.max_map_count=262144
,保存并退出。 - 重載設置
$ sysctl -p
- 重啟
docker-compose
- 編輯
-
若
docker-amundsen-local.yml
因org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Failed to create node environment
停止,則es_amundsen
無法寫入.local/elasticsearch
。 -
chown -R 1000:1000 .local/elasticsearch
-
重啟
docker-compose
-
運行示例數據加載器時若出現與 ElasticSearch 或 Neo4j 相關的連接錯誤,如:
Traceback (most recent call last):File "/home/ubuntu/amundsen/amundsendatabuilder/venv/lib/python3.6/site-packages/neobolt/direct.py", line 831, in _connects.connect(resolved_address)ConnectionRefusedError: [Errno 111] Connection refused
-
若
elastic search
容器因max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
報錯停止,請將以下代碼添加至docker-amundsen-local.yml
的elasticsearch
定義中:ulimits: nofile:soft: 65535hard: 65535
然后執行
docker ps
檢查 5 個 Amundsen 相關容器是否全部運行?能否通過 http://localhost:7474/browser/ 連接 Neo4j UI 及 http://localhost:9200 訪問原始 ES API?Docker 日志是否顯示嚴重問題? -
若首次訪問網站 (http://localhost:5000/) 時 ES 容器因 Docker 錯誤 137 崩潰,這是因為 Docker 引擎默認僅分配 2 GB 內存。所有容器加載示例數據后,最低需要 3 GB。請前往
Docker -> Preferences -> Resources -> Advanced
增加Memory
,然后重啟 Docker 引擎。
-
Windows 故障排查
風險提示與免責聲明
本文內容基于公開信息研究整理,不構成任何形式的投資建議。歷史表現不應作為未來收益保證,市場存在不可預見的波動風險。投資者需結合自身財務狀況及風險承受能力獨立決策,并自行承擔交易結果。作者及發布方不對任何依據本文操作導致的損失承擔法律責任。市場有風險,投資須謹慎。