欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Atlas学习笔记(1)—— 基础入门

Atlas学习笔记(1)—— 基础入门

2025/5/2 6:07:37 来源:https://blog.csdn.net/qq_51235856/article/details/144410084  浏览:    关键词:Atlas学习笔记(1)—— 基础入门

1.概述

Apache Atlas 为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,形成数据字典。并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能

数据字典(Data Dictionary)是信息系统或数据库中的一种工具,用于定义和描述数据的结构、内容及属性,比如从数据字典中,我们可以查到 hive 库的释义,表的介绍以及字段的解释和说明

2.架构原理

3.安装部署

版本:2.1

新特性:

  1. 更新了组件可以使用 Hadoop3.1、Hive3.1、Hive3.0、Hbase2.0、Solr7.5 和 Kafka2.0
  2. 将 JanusGraph 版本跟新为 0.3.1
  3. 更新了身份验证支持可信代理
  4. 更新了指标模块收集通知
  5. 支持 Atlas 增量导出元数据

下载:

  1. Atlas 官网地址:https://atlas.apache.org/
  2. 文档查看地址:https://atlas.apache.org/2.1.0/index.html
  3. 下载地址:https://www.apache.org/dyn/closer.cgi/atlas/2.1.0/apache-atlas-2.1.0-sources.tar.gz

注意:这里下载下来的是源码包,需要自己编译

3.1 环境依赖及集群规划

版本说明:

  1. JDK:1.8
  2. Hadoop:3.1.3
  3. MySQL:5.7.26
  4. Hive:3.1.2
  5. Zookeeper:3.5.7
  6. Kafka:2.4.1
  7. HBase:2.0.5
  8. Solr:7.7.3
  9. Atlas:2.1.0

其中除了Solr和Atlas之外,所有的组件都已经安装过了

3.2 Solr安装

  1. 创建系统用户solr:sudo useradd solr(各个节点都要执行)
  2. 设置密码为solr:echo solr | sudo passwd --stdin solr
  3. 解压安装包
  4. 修改目录所有者为solr:sudo chown -R solr:solr /opt/module/solr-7.7.3
  5. 修改zookeeper的host:vim /opt/module/solr-7.7.3/solr.in.sh,设置:ZK_HOST="hadoop112:2181,hadoop113:2181,hadoop114:2181"
  6. 分发组件到各个节点
  7. 启动solr:sudo -i -u solr/opt/module/solr-7.7.3/bin/solr start(所有节点上都要执行)

-i 表示模拟登录用户环境。

-u solr 指定以 solr 用户身份运行

  1. 访问web ui:http://hadoop112:8983(任意一个节点的ip都可以)

注意:

出现cloud菜单栏才说明部署成功

3.3 Atlas安装部署

安装很简单,解压apache-atlas-2.1.0-server.tar.gz包即可

3.3.1 集成HBase

修改atlas-application.properties文件:

atlas.graph.storage.hostname=hadoop112:2181,hadoop113:2181,hadoop114:2181

修改atlas-env.sh文件,添加:

export HBASE_CONF_DIR=/opt/module/hbase-2.0.5/conf

3.3.2 集成 Solr

修改atlas-application.properties文件:

atlas.graph.index.search.solr.zookeeperurl=hadoop112:2181,hadoop113:2181,hadoop114:2181

然后创建solr collection


sudo -i -u solr /opt/module/solr-7.7.3/bin/solr create -c vertex_index -d /opt/module/atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2
sudo -i -u solr /opt/module/solr-7.7.3/bin/solr create -c edge_index -d /opt/module/atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2
sudo -i -u solr /opt/module/solr-7.7.3/bin/solr create -c fulltext_index -d /opt/module/atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2

参数解析:

  • -c <collection_name>:指定要创建的集合名称
  • -d <config_path>:指定集合的配置文件路径
  • -shards <num_shards>:指定分片数量(shards),决定集合在 Solr 集群中分布的物理分片数
  • -replicationFactor <num_replicas>:指定每个分片的副本数(replicas)

在Graph中可以看到各个集合成功创建:

3.3.3 集成 Kafka

修改atlas-application.properties文件:

# 设置是否在 Atlas 内部启用嵌入式的通知服务,这里设置为false,即可使用外部配置的通知服务(Kafka)
atlas.notification.embedded=false
atlas.kafka.data=/opt/module/kafka-2.4.1/datas
atlas.kafka.zookeeper.connect=hadoop112:2181,hadoop113:2181,hadoop114:2181/kafka
atlas.kafka.bootstrap.servers=hadoop112:9092,hadoop113:9092,hadoop114:9092

3.3.4 Atlas Server 配置

修改atlas-application.properties文件:

######### Server Properties #########
atlas.rest.address=http://hadoop112:21000
# If enabled and set to true, this will run setup steps when the server starts
atlas.server.run.setup.on.start=false
######### Entity Audit Configs #########
atlas.audit.hbase.tablename=apache_atlas_entity_audit
atlas.audit.zookeeper.session.timeout.ms=1000
atlas.audit.hbase.zookeeper.quorum=hadoop112:2181,hadoop113:2181,hadoop114:2181

为了记录性能指标,可以修改atlas-log4j.xml文件,去掉以下这部分代码的注释:

<appender name="perf_appender" class="org.apache.log4j.DailyRollingFileAppender"><param name="file" value="${atlas.log.dir}/atlas_perf.log" /><param name="datePattern" value="'.'yyyy-MM-dd" /><param name="append" value="true" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d|%t|%m%n" /></layout>
</appender>
<logger name="org.apache.atlas.perf" additivity="false"><level value="debug" /><appender-ref ref="perf_appender" />
</logger>

3.3.5 集成 Hive

修改atlas-application.properties文件,添加如下内容:

######### Hive Hook Configs #######
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
atlas.cluster.name=primary

参数详解:

  1. atlas.hook.hive.synchronous
  • 含义:控制 Hive Hook 是否以同步方式执行。
  • 默认值:通常为 false
  • 值的作用:
    • false(异步):Hive 元数据的捕获和传递会在后台线程中执行。适合生产环境,避免因为 Atlas Hook 的延迟影响 Hive 操作的执行
    • true(同步):Hive 元数据的捕获和传递在 Hive 操作中同步完成。适合开发和调试环境,但可能会增加 Hive 操作的延迟
  1. atlas.hook.hive.numRetries
  • 含义:控制 Hive Hook 在元数据传递失败时的重试次数。
  • 默认值:3
  • 值的作用:
    • 指定当元数据传递到 Atlas 服务失败时,重试的次数。
    • 如果所有重试都失败,元数据操作可能会被丢失,具体行为取决于 Atlas 的容错机制。
  • 使用场景:当网络不稳定或 Atlas 服务暂时不可用时,通过设置合理的重试次数可以减少元数据丢失的风险。
  1. atlas.hook.hive.queueSize
  • 含义:设置 Hive Hook 用于存储待处理元数据事件的队列大小
  • 默认值:10000
  • 值的作用:
    • 决定 Hook 中用于缓冲 Hive 操作事件的队列容量。
    • 如果事件队列满了,新事件可能会被丢弃(视实现而定),因此需要根据 Hive 操作的并发度和 Atlas 的处理能力调整该值。
  • 注意事项:过大的队列可能占用较多内存,而过小的队列可能导致事件丢失。
  1. atlas.cluster.name
  • 含义:设置 Atlas 集群的名称。
  • 默认值:primary
  • 值的作用:
    • 指定当前 Atlas 集群的唯一标识。
    • 在多集群环境中,用于区分不同的 Atlas 实例。例如,当多个 Hive 环境都注册到同一个 Atlas 时,可以通过集群名称区分不同的来源。
  • 使用场景:
    • 在多数据中心或多环境部署时,通过 atlas.cluster.name 可以有效区分元数据的来源。

修改hive-site.xml文件,添加如下内容:

<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

然后安装hive hook:

  1. 解压apache-atlas-2.1.0-hive-hook.tar.gz
  2. 将 Hive Hook 依赖复制到 Atlas 安装路径:cp -r apache-atlas-hive-hook-2.1.0/* /opt/module/atlas-2.1.0/,复制完成后Atlas的安装路径下应有两个目录:hookhook-bin

然后修改hive-env.sh配置文件,添加如下配置(用于加载辅助 JAR 文件 ):

export HIVE_AUX_JARS_PATH=/opt/module/atlas-2.1.0/hook/hive

最后将atlas-application.properties配置文件拷贝到hive的conf目录下:cp /opt/module/atlas-2.1.0/conf/atlas-application.properties /opt/module/hive-3.1.3/conf/

3.4 Atlas启动

  1. 启动Hadoop集群
  2. 启动Zookeeper集群
  3. 启动Kafka集群
  4. 启动HBase集群
  5. 启动 Solr 集群
  6. 启动Atlas服务:进入安装路径后执行:bin/atlas_start.py

停止的脚本为atlas_stop.py

需要注意的是初次启动时需要进行各项初始化操作,所需时间比较长,因此可以通过tail -f命令监听Atlas安装路径下的logs/application.log文件,指导不再继续输出日志,说明成功启动;同时也可以起到查看是否发生报错的作用

  1. 访问Web UI:http://hadoop112:21000

用户名和密码都是admin

4.简单使用

Atlas 的使用相对简单,其主要工作是同步各服务(主要是 Hive)的元数据,并构建元数据实体之间的关联关系,然后对所存储的元数据建立索引,最终为用户提供数据血缘查看及元数据检索等功能。

4.1 Hive元数据初次导入

执行以下脚本即可导入当前hive中的所有元数据:

/opt/module/atlas-2.1.0/hook-bin/import-hive.sh

适用于数仓已经有了一定规模,但是Atlas刚刚搭建起来的情况,可以一次性将hive的元数据全部导入atlas中

4.2 Hive元数据增量同步

Atlas启动后,Hive 元数据的增量同步无需人为干预,只要 Hive 中的元数据发生变化(执行 DDL 语句),Hive Hook 就会将元数据的变动通知 Atlas

除此之外,Atlas 还会根据 DML 语句获取数据之间的血缘关系

创建两张表:订单事实表和地区维度表:

CREATE TABLE dwd_order_info (`id` STRING COMMENT '订单号',`final_amount` DECIMAL(16,2) COMMENT '订单最终金额',`order_status` STRING COMMENT '订单状态',`user_id` STRING COMMENT '用户 id',`payment_way` STRING COMMENT '支付方式',`delivery_address` STRING COMMENT '送货地址',`out_trade_no` STRING COMMENT '支付流水号',`create_time` STRING COMMENT '创建时间',`operate_time` STRING COMMENT '操作时间',`expire_time` STRING COMMENT '过期时间',`tracking_no` STRING COMMENT '物流单编号',`province_id` STRING COMMENT '省份 ID',`activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',`coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',`original_amount` DECIMAL(16,2) COMMENT '订单原价金额',`feight_fee` DECIMAL(16,2) COMMENT '运费',`feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免'
) COMMENT '订单表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';CREATE TABLE dim_base_province (`id` STRING COMMENT '编号',`name` STRING COMMENT '省份名称',`region_id` STRING COMMENT '地区 ID',`area_code` STRING COMMENT '地区编码',`iso_code` STRING COMMENT 'ISO-3166 编码,供可视化使用',`iso_3166_2` STRING COMMENT 'IOS-3166-2 编码,供可视化使用'
) COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

然后进行数据装载,将相关文件上传到hive表的hdfs路径下即可

建表完成后,可以从atlas中看到这两张表:

4.3 生成血缘依赖

此时这两张表并没有任何的关联,也就是不存在血缘关系,我们可以点开一张表,查看其Lineage,结果为空:

于是我们接下来基于这两张表计算一个需求指标:每个省份的订单次数和订单金额

创建ads层的表:

CREATE TABLE `ads_order_by_province` (`dt` STRING COMMENT '统计日期',`province_id` STRING COMMENT '省份 id',`province_name` STRING COMMENT '省份名称',`area_code` STRING COMMENT '地区编码',`iso_code` STRING COMMENT '国际标准地区编码',`iso_code_3166_2` STRING COMMENT '国际标准地区编码',`order_count` BIGINT COMMENT '订单数',`order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

然后进行数据装载:

insert into table ads_order_by_province
select'2021-08-30' dt,bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2,count(*) order_count,sum(oi.final_amount) order_amount
from dwd_order_info oi
left join dim_base_province bp
on oi.province_id=bp.id
group by bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2;

数据装载完成后,即可看到血缘关系依赖:

可以看到我们的需求指标表依赖于订单事实表和地区维度表

同时也可以查看字段的血缘关系依赖:

如图,order_amount这一字段是通过订单事实表中的final_amount计算而来

学习教程链接:Atlas ,相关安装包在评论区有获取方式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词