最近在内部做了个分享,顺便画了一下这次impala数据血缘的架构图:
架构图:
如果想了解如何实现请参照前面几篇文章:
impala数据血缘与数据地图系列:
---------------------------------Impala血缘 架构图-----------------------------------------------------------
红色部分是用户会接触到的部分,绿色部分对于用户无感知。
解读:
1. impala是无主的MPP架构,因此用户每次SQL指定的impala节点就是主节点,当用户通过SQL或jdbc/odbc接口查询impala时,SQL命令首先 会发送到impala daemon节点,由该节点的QueryPlanner解析SQL成执行计划后发送给其他daemon节点分别计算各自的数据然后返回给该impala daemon节点。 所以我们只要在每台impala daemon节点部署filebeat并监控血缘日志即可。
2. 使用Filebeat监控impala血缘日志后发送到kafka集群指定的topic中;
3. 解析kafka内的血缘日志,将元数据(user,timestamp,id等信息),实体(表,字段),关系(表到表,字段到字段,字段到表)识别出来;
4. 将第三步里的结果存储进Neo4J;
5. 用户可以使用CQL或封装的接口对Neo4J里存储的impala血缘进行实时的查询;
功能介绍:
实时血缘:
建视图:逻辑如下
create view vw_lineage_test as
select acc.gid,acc.decrypt_name,ind.company_name ,acc.branch_name
from dl_nccp.account acc
inner join dl_nccp.individual ind on acc.gid=ind.gid and acc.is_deleted='0' and acc.is_valid='0';
修改视图逻辑:新增一个来源表contract以及该表的telephone字段
alter view vw_lineage_test as
select acc.gid,acc.decrypt_name,ind.company_name,acc.branch_name,c.telephone
from dl_nccp.account acc
inner join dl_nccp.individual ind on acc.gid=ind.gid and acc.is_deleted='0' and acc.is_valid='0'
inner join dl_nccp.contact c on acc.gid = c.gid
全类型血缘:
目前已实现字段到表,字段到字段,表到表,表到库级别的全类型血缘关系:
技术元数据管理:
实时更新数据字典、ETL任务元数据:
影响分析:
指定节点向后进行影响分析:
血缘分析:
指定节点向前进行血缘分析:
深度查询:
可指定血缘的查询深度:
如果对你有帮助,请点个赞吧~ 谢谢!