元数据管理平台Atlas的安装部署

安装前环境准备

  1. JDK
  2. Zookeeper3.5.7
  3. Hadoop3.1.3
  4. Mysql
  5. Hive3.12
  6. Kafka_2.11-2.41
  7. Solr-7.73
  8. HBase
  9. Atlas2.0

安装Solr

1.在每台节点创建系统用户 solr;

sudo useradd solr	//增加solr用户
echo solr | sudo passwd --stdin solr	//设置密码为solr

2.在 102 节点上传 solr 安装包 solr-7.7.3.tgz,并解压到/opt/module 目录,重命名为 solr;

tar -zxvf solr-7.7.3.tgz -C /opt/module/
cd /opt/module
mv solr-7.7.3/ solr

3.修改 solr 目录的所有者为 solr 用户;

sudo chown -R solr:solr /opt/module/solr

4.修改 solr 配置文件: 修改/opt/module/solr/bin/solr.in.sh 文件中的以下属性

 cd /opt/module/solr/bin/
 sudo vim solr.in.sh

5.分发 solr

 sudo xsync /opt/module/solr

6.启动 solr 集群

(1) 注意启动前先启动Zookeeper集群

zk.sh start

(2) 出于安全考虑,不推荐使用 root 用户启动 solr,使用 solr 用户,在所有节点执行以 下命令启动 solr 集群

sudo -i -u solr /opt/module/solr/bin/solr start

出现 **Happy Searching! **字样表明启动成功。
在这里插入图片描述
(3) 访问 web 页面,默认端口为 8983,http://hadoop102:8983
在这里插入图片描述

安装Atlas

1.把 apache-atlas-2.1.0-server.tar.gz 上传到 hadoop102 的/opt/software 目录下;

2.解压 apache-atlas-2.1.0-server.tar.gz 到/opt/module/目录下面;

tar -zxvf apache-atlas-2.1.0-server.tar.gz -C /opt/module/

3.修改 apache-atlas-2.1.0 的名称为 atlas

mv apache-atlas-2.1.0 atlas

Atlas 集成 Hbase

1.修改/opt/module/atlas/conf/atlas-application.properties 配置文件中的以下参数

atlas.graph.storage.hostname=hadoop102:2181,hadoop103:2181,hadoop104:2181

2.修改/opt/module/atlas/conf/atlas-env.sh 配置文件,增加以下内容

export HBASE_CONF_DIR=/opt/module/hbase/conf

Atlas 集成 Solr

1.修改/opt/module/atlas/conf/atlas-application.properties 配置文件中的以下参数

atlas.graph.index.search.backend=solr
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeperurl=hadoop102:2181,hadoop103:2181,hadoop104:2181

2.创建 solr collection

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

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

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


Atlas 集成 Kafka

修改/opt/module/atlas/conf/atlas-application.properties 配置文件中的以下参数

atlas.notification.embedded=false
atlas.kafka.data=/opt/module/kafka/data
atlas.kafka.zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
atlas.kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

Atlas Server 配置

1.修改/opt/module/atlas/conf/atlas-application.properties 配置文件中的以下参数

######### Server Properties #########
atlas.rest.address=http://hadoop102: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=hadoop102:2181,hadoop103:2181,hadoop104:2181

2.记录性能指标,进入/opt/module/atlas/conf/路径,修改当前目录下的 atlas-log4j.xml

[root@hadoop101 conf]$ vim 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>

Atlas 集成 Hive

1.修改/opt/module/atlas/conf/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

2.修改 Hive 配置文件,在/opt/module/hive/conf/hive-site.xml 文件中增加以下参数,配置 Hive Hook。

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

3.安装 Hive Hook

(1) 解压 Hive Hook

tar -zxvf 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/

(3) 修改/opt/module/hive/conf/hive-env.sh 配置文件

配置前先修改文件名

mv hive-env.sh.template hive-env.sh
export HIVE_AUX_JARS_PATH=/opt/module/atlas/hook/hive

(4) 将 Atlas 配置文件/opt/module/atlas/conf/atlas-application.properties拷贝到/opt/module/hive/conf 目录

cp /opt/module/atlas/conf/atlas-application.properties /opt/module/hive/conf/
启动Atlas
#启动hadoop
myhadoop.sh start
#启动Zookeeper
zk.sh start
#启动Kafka
kf.sh start
#在HMaster节点启动HBase
start-hbase.sh
#在所有节点执行以下命令,使用 solr 用户启动 Solr
sudo -i -u solr /opt/module/solr/bin/solr start
#进入/opt/module/atlas 路径,启动 Atlas 服务
bin/atlas_start.py

jpsall查看上述服务是否启动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sctKxQB-1648799059674)(C:\Users\Husheng\AppData\Roaming\Typora\typora-user-images\image-20220331164413758.png)]

启动atlas的时间较长,会一直打点,出现如下提示,证明启动成功
在这里插入图片描述
访问 Atlas 的 WebUI
在这里插入图片描述
访问地址:http://hadoop102:21000 注意:如果刷新不出来,多等一会

账户和密码都是admin,


Atlas的使用测试

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

​ Atlas 在安装之初,需手动执行一次元数据的全量导入,后续 Atlas 便会利用 Hive Hook 增量同步 Hive 的元数据。

Hive元数据初次导入

导入 Hive 元数据

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

按提示输入用户名:admin;输入密码:admin

Enter username for atlas :- admin
Enter password for atlas :- admin

等待片刻,出现以下日志,即表明导入成功:

Hive Meta Data import was successful!!!

案例测试

(1)hive中创建用户表

CREATE TABLE test_user (
 `id` STRING COMMENT '编号',
 `name` STRING COMMENT '姓名',
 `province_id` STRING COMMENT '省份ID',
 `province_name` STRING COMMENT '省份名称'
 )COMMENT '用户表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

(2) hive中创建订单事实表

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';

(3) hive中创建地区维度表

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';

(4) 创建总表

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';

(5) 写入数据

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;
  • 数据资产目录:
    在这里插入图片描述
  • 表的元数据信息
    在这里插入图片描述
  • 表的血缘关系图
    在这里插入图片描述
    字段的元数据信息和血缘关系图类似。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Atlas 提供了 Java API 来读取表元数据。您可以使用以下步骤来读取 Atlas 中的表元数据: 1. 创建 AtlasClient 对象,指定 Atlas 服务的 URL 和认证信息。 ```java AtlasClient atlasClient = new AtlasClient(new String[]{"http://localhost:21000"}, new String[]{"username", "password"}); ``` 2. 使用 AtlasClient 对象调用 `getEntityByAttribute` 方法,指定查询条件,获取表的 Atlas 实体对象。 ```java String typeName = "hive_table"; String attributeName = "qualifiedName"; String attributeValue = "database_name.table_name"; Map<String, String> attributes = new HashMap<String, String>(); attributes.put(attributeName, attributeValue); List<String> guids = atlasClient.getEntityByAttribute(typeName, attributes); if (guids == null || guids.isEmpty()) { System.out.println("Table not found in Atlas"); return; } String guid = guids.get(0); ``` 3. 使用 AtlasClient 对象调用 `getEntity` 方法,指定表的 GUID,获取表的 Atlas 实体对象。 ```java Referenceable tableRef = atlasClient.getEntity(guid); ``` 4. 从 Atlas 实体对象中获取表的元数据信息。 ```java String tableName = (String) tableRef.get("name"); String owner = (String) tableRef.get("owner"); String createTime = (String) tableRef.get("createTime"); List<Referenceable> columns = (List<Referenceable>) tableRef.get("columns"); ``` 以上代码仅供参考,您需要根据实际情况进行修改和调整。如果您需要更多帮助,请提供更多上下文和详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁子_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值