前言
Atlas 的使用相对简单,其主要工作是同步各服务(主要是Hive) 的元数据,并构建元数据实体之间的关联关系,然后对所存储的元数据建立索引,最终未用户提供数据血缘查看及元数据检索等功能。
Atlas 在安装之初,需手动执行一次元数据的全量导入,后续 Atlas 便会利用Hive Hook 增量同步 Hive 的元数据。
一、Hive 元数据初次导入
Atlas 提供了一个 Hive 元数据导入的脚本,直接执行该脚本,即可完成 Hive元数据的初次全量导入。
1. 导入 Hive 元数据
执行以下命令
[root@hadoop102 ~]# /opt/module/atlas/hook-bin/import-hive.sh
按提示输入用户名:admin,输入密码:admin
Enter username for atlas :- admin
Enter password for atlas :-
等待片刻,出现以下日志,即表明导入成功
Hive Meta Data import was successful!!!
2. 查看 Hive 元数据
搜索 hive_table 类型的元数据,可已看到 Atlas 已经拿到了 Hive 元数据
任选一张表查看血缘依赖关系 :
发现此时并未出现期望的血缘依赖,原因是 Atlas 是根据 Hive 所执行的 SQL 语句获取表与表之间以及字段与字段之间的依赖关系的,例如执行insert into table_a select * from table_b
语句,Atlas 就能获取 table_a 与 table_b 之间的依赖关系。此时并未执行任何 SQL 语句,故还不能出现血缘依赖关系。
二、Hive 元数据增量同步
Hive 元数据的增量同步,无需人为干预,只要 Hive 中的元数据发生变化(执行 DDL 语句),Hive Hook 就会将元数据的变动通知 Atlas。除此之外,Atlas 还会根据 DML 语句获取数据之间的血缘关系。
1. 全流程调度
为查看血缘关系效果,此处使用 Azkaban 将数仓的全流程调度一次。
A、新数据准备
① 用户行为日志
启动日志采集通道,包括 Zookeeper,Kafka,Flume 等。
修改 hadoop102,hadoop103 两台节的 /opt/module/applog/application.yml文件,将模拟日期改为 2020-06-17 如下
#业务日期
mock.date: "2020-06-17"
执行生成日志的脚本
# lg.sh
等待片刻,观察 HDFS 是否出现 2020-06-17 的日志文件
② 业务数据
修改 /opt/module/db_log/application.properties,将模拟日期修改为2020-06-17,如下
#业务日期
mock.date=2020-06-17
进入到 /opt/module/db_log 路径,执行模拟生成业务数据的命令,如下
# java -jar gmall2020-mock-db-2021-01-22.jar
观察 mysql 的 gmall 数据中是否出现 2020-06-17 的数据
B、启动 Azkaban
注意需使用 azkaban 用户启动 Azkaban
①启动 Executor Server
在各节点执行以下命令,启动Executor
[root@hadoop102 ~]# sudo -i -u azkaban bash -c "cd /opt/module/azkaban/azkaban-exec;bin/start-exec.sh"
[root@hadoop103 ~]# sudo -i -u azkaban bash -c "cd /opt/module/azkaban/azkaban-exec;bin/start-exec.sh"
[root@hadoop104 ~]# sudo -i -u azkaban bash -c "cd /opt/module/azkaban/azkaban-exec;bin/start-exec.sh"
② 激活 Executor Server,任选一台节点执行以下激活命令即可
[root@hadoop102 ~]# curl http://hadoop102:12321/executor?action=activate
[root@hadoop102 ~]# curl http://hadoop103:12321/executor?action=activate
[root@hadoop102 ~]# curl http://hadoop104:12321/executor?action=activate
③ 启动Web Server
[root@hadoop102 ~]# sudo -i -u azkaban bash -c "cd /opt/module/azkaban/azkaban-web;bin/start-web.sh"
C、全流程调度
① 工作流参数
② 运行结果
2. 查看血缘依赖
此时在通过 Atlas 查看 Hive 元数据,即可发现血缘依赖