- 首先从官网查了一下支持的数据源:
Hive sqoop Falcon Storm
普及一下Apache Falcon是一个开源的hadoop数据生命周期管理框架, 它提供了数据源 (Feed) 的管理服务,如生命周期管理,备份,存档到云等,通过Web UI可以很容易地配置这些预定义的策略, 能够大大简化hadoop集群的数据流管理
- 安装之前需要手动配置 atlas-application.properties包括SOLR,KAFKA, HBASE,支持配置其他集群
- 读取配置加载类atlas-plugin-classloader-1.1.0.jar
- atlas_start.py 加载一些基础的Type,(基本都是写死到代码层面的)源码(HiveDataTypes)
- atlas安装并启动完之后,这个时候系统还是空的,atlas是 通过HOOK去监听你的HIVE语句,所以一般我们会通过atlas的import_hive.sh先把HIVE里的表,数据库等信息全部导入到atlas, 之后如果表有操作,通过接收KAFKA的数据再进行处理
- 以Hive为例说明:
导入 Hive Metadata,org.apache.atlas.hive.bridge.HiveMetaStoreBridge 使用 org.apache.atlas.hive.model.HiveDataModelGenerator 中定义的模型将 Hive 元数据导入 Atlas。 import-hive.sh 命令可以用来方便这一点。脚本需要 Hadoop 和 Hive 类路径 jar。 对于 Hadoop jar,请确保环境变量 HADOOP_CLASSPATH 已设置。另一种方法是将 HADOOP_HOME 设置为指向 Hadoop 安装的根目录同样,对于 Hive jar,将 HIVE_HOME 设置为 Hive 安装的根目录将环境变量 HIVE_CONF_DIR 设置为 Hive 配置目录复制 ${atlas-conf}/atlas-application.properties 到 hive conf 目录
Hive 在使用 hive hook 的 hive 命令执行上支持侦听器。 这用于在 Atlas 中使用 org.apache.atlas.hive.model.HiveDataModelGenerator 中定义的模型添加/更新/删除实体。 hive hook 将请求提交给线程池执行器,以避免阻塞命令执行。 线程将实体作为消息提交给通知服务器,并且服务器读取这些消息并注册实体,里面有各种配置信息,请查看http://atlas.apache.org/Configuration.html
以字段血缘关系为例说明
ColumnLineageProcess 类型是 Process 的子类,这将输出列与一组输入列或输入表相关联
Lineage 还捕获 Dependency 的类型:当前的值是 SIMPLE,EXPRESSION,SCRIPT
SIMPLE依赖: 意味着输出列具有与输入相同的值
EXPRESSION依赖: 意味着输出列被输入列上的运行时中的一些表达式(例如Hive SQL表达式)转换。
SCRIPT依赖: 表示输出列由用户提供的脚本转换。
在 EXPRESSION 依赖的情况下,表达式属性包含字符串形式的表达式
由于 Process 链接输入和输出 DataSet,我们使 Column 成为 DataSet 的子类
Limitations(规则)以下 hive 操作由 hive hook 当前捕获
create database
create table/view, create table as select
load, import, export
DMLs (insert)
alter database
alter table (skewed table information, stored as, protection is not supported)
alter view