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 故障排查
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。