元数据处理目录
1、登陆slave2节点 ,打开新的终端 ,启动Atlas服务
2、打开atlas web页面(终端切换到右侧桌面,然后在桌面打开浏览器输入网址)
【实训名称】
元数据处理
【实训内容】
某电商公司 ,通过其业务应用软件数据上报到服务器的形式 ,收集了很多用JSON格式的用户行为数据。营销人员提出需求:计算用户每日活跃指数 ,即从用户浏览商品个数、评论数、点赞数、广 告点击数、商品消息推送数等方面 ,全面了解每位用户每日使用此应用软件的活跃程度 ,并对活跃指数高的用户给予一定的奖励或优惠。
【已具备环境】
节点名称 | 服务组件 |
master | NameNode、DataNode、NodeManager、JDK、Zookeeper、kafka broker |
slave1 | ResourceManager、JobHistoryServer、DataNode、NodeManager、JDK、Zookeeper、hive、mysql |
slave2 | HMaster、Regionserver、DataNode、NodeManager、JDK、Zookeeper、solr、atlas |
【实训技巧】
- 每个服务属于不同用户的管理,子用户都是hadoop用户管理的,下列是用户结构:
切换用户的命令:sudo su – 用户名
退出子用户回到hadoop用户命令:exit
注意:子用户不能切换到另一个子用户(如:hdfs切换到hive不行的,只能退到hadoop再进入hive)
- 有时候服务器或者界面会卡住,可以根据情况尝试下面几种刷新:
【实训步骤】
步骤一 :Atlas启动
本次安装atlas服务依赖hadoop、zookeeper、hive、hbase、solr、kafka服务 ,启动atlas前需确保以上服务都已经完成部署并服务正常。
1、登陆slave2节点 ,打开新的终端 ,启动Atlas服务
[hadoop@slave2 ~]$ sudo su - atlas
[atlas@slave2 ~]$ cd /softwares/apache-atlas-1.1.0.3.1.4.0-315/bin
[atlas@slave2 bin]$ ./atlas_start.py
###以下不用复制
starting atlas on host localhost
starting atlas on port 21000
Apache Atlas Server started!!!
说明 :当看到Apache Atlas Server started!!!日志时表示服务正常启动,但atlas第一次启动较慢 ,需要完成一些初始化,需要等待一些时间。 atlas的日志文件在$ATLAS_HOME/logs中 ,其中application.log记录了atlas 的全部日志信息 ,可以在该文件中观察到atlas的启动运行情况。
2、打开atlas web页面(终端切换到右侧桌面,然后在桌面打开浏览器输入网址)
在浏览器地址中键入http://slave2:21000便可访问Atlas的WebUI ,默认用户名密码:admin/admin
步骤二: Hive的元数据导入Atlas
1、批处理导入Hive元数据
(1) 登录slave2节点 ,在桌面打开新的终端 ,修改import-hive.sh
[hadoop@slave2 ~]$ sudo su - atlas
[atlas@slave2 ~]$ vim /softwares/apache-atlas-1.1.0.3.1.4.0-315/hook-bin/import-hive.sh
进入界面后 ,鼠标单机屏内框 ,按下键盘"i" ,进入编辑模式
如下 ,在脚本第一行添加,请看下面演示图片位置:
HIVE_CONF_DIR=/softwares/hive-3.1.2/conf
HIVE_HOME=/softwares/hive-3.1.2
代码成功粘贴后 ,按下键盘"ESC" ,鼠标单机屏内框 ,按下组合键"Shift+z+z"。( Z按2次)
(2) 登录slave2节点 ,打开新的终端 ,拷贝atlas-application.properties文件到hive的conf目录
[hadoop@slave2 ~]$ sudo su - hive
[hive@slave2 ~]$ cp /softwares/apache-atlas-1.1.0.3.1.4.0-315/conf/atlas-application.properties /softwares/hive-3.1.2/conf
[hive@slave2 ~]$ cd /softwares/hive-3.1.2/conf/
[hive@slave2 ~]$ ll
说明 :atlas-application.properties文件中提供了一些属性 ,控制Hive Hook的线程池和通知系统的性能。通常采用默认值 ,读者可根据自己的需要 ,对这些参数进行调整。
(3) 登录slave2节点 ,打开新的终端 ,执行import-hive.sh ,将hive的元数据导入atlas
[hadoop@slave2 ~]$ sudo su - atlas
[atlas@slave2 ~ ]$ cd /softwares/apache-atlas-1.1.0.3.1.4.0-315/hook-bin/
[atlas@slave2 hook-bin]$ ./import-hive.sh
该脚本执行过程中,需要输入用户名及密码 ,默认用户名和密码都为admin。
(4) 元数据导入成功后 ,控制台会输出如下信息:
2、实时导入Hive元数据(Hook钩子模式)
import-hive.sh脚本能够完成将Hive中的元数据信息导入Atlas中 ,但这个过程需要手动完成 ,并且不能实时地监控Hive中的数据变动。 若想要实时地关注Hive中数据的改变 ,可以通过配置Hive Hook 的方式 ,完成对Hive的监听 ,自动导入Atlas规定格式的元数据到Atlas中。
Atlas通过Hive Hook监听Hive的执行命令 ,Hive Hook可以用来添加、更新、删除Atlas中的实体。Hive Hook的配置过程如下:
(1) 登录slave2节点 ,打开新的终端 ,修改hive-site.xml配置文件
[hadoop@slave2 ~]$ sudo su - hive
[hive@slave2 ~]$ vim /softwares/hive-3.1.2/conf/hive-site.xml
进入界面后 ,鼠标单机屏内框 ,按下键盘"i" ,进入编辑模式
添加内容如下,需要添加在</configuration>标签前面,如图所示:
<property>
<name>hive.exec.post.hooks</name>
<value>org.apache.atlas.hive.hook.HiveHook</value>
</property>
代码成功粘贴后 ,按下键盘"ESC" ,鼠标单机屏内框 ,按下组合键"Shift+z+z"。( Z按2次)
(2) 配置hive-env.sh文件 ,添加如下内容
[hive@slave2 ~]$ vim /softwares/hive-3.1.2/conf/hive-env.sh
进入界面后 ,鼠标单机屏内框 ,按下键盘"i" ,进入编辑模式
export HIVE_AUX_JARS_PATH=/softwares/apache-atlas-1.1.0.3.1.4.0-315/hook/hive
代码成功粘贴后 ,按下键盘"ESC" ,鼠标单机屏内框 ,按下组合键"Shift+z+z"。( Z按2次)
说明:其中/software/apache-atlas-1.1.0.3.1.4.0-315/hook/hive为atlas的安装根目录 ,可根据自己集群设置的情况更改。
步骤三:查询元数据
-
使用Atlas查询元数据信息
特别提示:再用Atlas查询元数据过程中,会出现自己操作的和手册上图片的查询结果中表的数量不一致、表的名称不一致,不用管,只需要有手册上指定的那其中一个表即可,其他不做理会。
1.1 元数据信息查询
在Atlas的Web界面中 ,若想要查询某张表的元数据信息 ,需要在左侧的"SEARCH(搜索)"菜单中的"Search By Type(按类型搜索)"选择"hive_table" ,再在"Search By Text(按文本搜索)"中输入想要搜索 的表名 ,然后点击"Search"按钮进行搜索。这里以DWD层中的用户行为明细表作为演示。
(1)在左侧"Search By Type"选择hive_table ,在"Search By Text"输入dwd_base_event_log ,点击Search按钮 ,查询表信息 ,如下:
(2) 依次点击右侧的"Attributes-> Columns(列)"按钮 ,可以选择想展示的表信息(字段、表类型、数据库等)。选择后如果没出现,刷新一下浏览器
(3) 点击表名可以进一步查看表的元数据信息 ,基本信息包括字段、创建时间、所在数据库、表名、创建者、分区字段、是否外部表等。
1.2 查询字段
当不确定某些字段在哪个表中时 ,可以使用查询字段的方式进行查询。在Atlas中 ,提供了以字段进行查询的方式 ,在"SEARCH"的"Search By Type"中 ,选择"hive_column" ,然后在"Search By Text" 中输入要搜索的字段名 ,点击"Search"按钮便可进行查询。以搜索"score"字段为例。
(1) 在左侧"Search By Type"选择hive_column ,Search By Text输入score ,点击Search按钮 ,查询表信息 ,如下:
(2) 在右侧界面中的搜索结果列表里,点击字段名可以进一步查看详细信息 ,如字段名、字段类型、所有者、所在表等信息。
说明:使用这种方式 ,便可以快速定位某个字段所在的表的位置。
1.3 自定义查询
(1) 按分类进行查询
有些特定场景 ,我们需要对表或者字段进行分类打标签的操作 ,以方便查询。比如想要查询数仓中所有DWS层的表 ,这时就可以采用打标签的方式进行查询。
(a) 选择Atlas的左侧菜单中的"CLASSIFICATION (分类)" ,点击加号创建分类。
(b) 填写分类信息 ,如我们将DWS层的表的类别设置为"dws"。
Description设置为“retailers_dws_tables”,然后点击create,点击创建后,经常卡住,先等一会,若还是卡住就刷新一下
(c) 回到SEARCH菜单下 ,不设置条件搜索所有的Hive表 ,将Hive中DWS层对应的表勾选,点击右上方的"CLASSIFICATION"。
(d) 窗口中 ,选择分类"dws" ,然后点击"Add(添加)"。
(e) 当再查询表时 ,便可以按分类进行查询,在"Search By Classification(以分类搜索)"中 ,选择"dws" ,然后点击"Search"。
(2) 按术语进行查询
某些情况下我们对Hive中的表名或者字段名的含义还不太熟悉 ,只知晓要查询的某些业务性的术语或关键词 ,比如"每日用户使用活跃得分" ,此时我们就可以通过构建术语的方式来进行查询。
(a) 选择Atlas的左侧菜单中的"GLOSSARY(术语词汇表)" ,点击加号创建术语词汇表。
(b) 填写分类的名称及描述信息。
(c) 在对应分类下添加术语 ,点击"Create Term(创建术语)"
(d) 创建术语填写术语名称及基本信息。创建时可能会卡,等待后刷新,没有就再创
(e) 用术语标记字段:在对应的Hive字段下点击"Term(术语)"下的加号。
(f) 选择要标记的术语点击"Assign(指定)"。
(g) 按术语查询:在"Search By Term"中 ,选择"每日用户使用活跃得分" ,然后点击"Search"。
步骤四 :查看审计信息
1、查看Hive表的审计信息
在hive_table中选择一张表 ,并点击"Audits(审计)",就可以查看各个用户对此表操作时间及操作类型 ,此类审计信息属于操作元数据。
- SEARCH菜单下 ,不设置条件搜索所有的Hive表
2、点击"Detail(详情)"还可以查看详细信息。
2、查看Hive字段的审计信息
1、 在hive_column中选择一张表 ,并点击"Audits",就可以查看各个用户对此表操作时间及操作类型等审计信息。
2、点击"Detail"还可以查看详细信息
3、使用Atlas分析元数据
1、在Atlas中 ,可以通过点击右上方的分析按钮(Statistics) ,查看当前元数据中的统计汇总信息。
说明:统计分析界面包含两大块主要内容 ,分别为实体(entities)和服务统计信息(server statistics)。实体信息中主要包含当前各个表中的活动实体和删除实体的统计信息 ,而服务统计信息分为服务 详细信息和通知详细信息 ,包含了服务的更新时间、开始时间、上个消息发出时间等信息。可以通过统计分析界面 ,快速了解到当前元数据系统中的全局信息和更新情况的记录。
步骤五:元数据的数据血缘
1、在Hive中进行血缘追溯
在Atlas安装启动以前创建的hive表是没有办法导入血缘关系内容的 ,故用一张简单的表作演示
(1)在浏览器地址中键入http://slave2:21000便可访问Atlas的WebUI ,默认用户名密码:admin/admin
(2) 登录slave2节点 ,打开新的终端 ,编辑hive表数据文件
[hadoop@slave2 ~]$ cd /tools/testdata
[hadoop@slave2 testdata]$ sudo vim student.txt
进入界面后 ,鼠标单机屏内框 ,按下键盘"i" ,进入编辑模式
1,zhangsan
2,lisi
3,wangwu
代码成功粘贴后 ,按下键盘"ESC" ,鼠标单机屏内框 ,按下组合键"Shift+z+z"。( Z按2次)
[hadoop@slave2 testdata]$ sudo chown hive:hadoop student.txt
(3)登录slave2节点 ,打开新的终端 ,登录hive客户端
[hadoop@slave2 ~]$ sudo su - hive
[hive@slave2 ~]$ cd /softwares/hive-3.1.2
[hive@slave2 hive-3.1.2]$ bin/hive
(4)执行以下SQL ,创建student表,只复制黄色部分
hive> use default;
hive> show tables;
hive> create table student
(id int,name string)
row format delimited fields terminated by ',';
hive> show tables;
hive> desc student;
(5)插入少量数据
hive> load data local inpath '/tools/testdata/student.txt' overwrite into table student;
hive> select * from student;
(6)由student表创建出student1表
hive> create table student1 as select * from student;
hive> show tables;
hive> select * from student1;
(7)回到Atlas浏览器,查看这张表的血缘关系中 ,观察这张表是怎么来的
(8)再回到hive中(前面那个命令窗口,若不小心关了去前面复制,下面演示要回去复制的命令,没关的帅哥美女无需操作)
再根据student1创建一个student2
hive> create table student2 as select * from student1;
hive> show tables;
hive> select * from student2;
(9)回到浏览器的Atlas,查看这张表的血缘关系中 ,观察这张表是怎么来的
2、查看数据血缘
2.1 数据准备
(1) 登录slave2节点 ,打开新的终端。依次执行以下命令 ,删除HDFS上之前的数据
[hadoop@slave2 ~]$ sudo su - hdfs
[hdfs@slave2 ~]$ hdfs dfs -rmr /user/hive/warehouse/gmall0608/*
2) 打开新的终端,执行以下命令创建所需要的文件
[hadoop@slave2 ~]$ sudo vim /tools/testdata/drop.sql
进入界面后 ,鼠标单机屏内框 ,按下键盘"i" ,进入编辑模式 ,复制以下代码
use usersAction6;
drop table if exists aws_useractive_log;
drop table if exists dwd_base_event_log;
drop table if exists dwd_display_log;
drop table if exists dwd_newsdetail_log;
drop table if exists dwd_loading_log;
drop table if exists dwd_ad_log;
drop table if exists dwd_notification_log;
drop table if exists dwd_comment_log;
drop table if exists dwd_favorites_log;
drop table if exists dwd_praise_log;
drop table if exists dwd_praise_log;
drop table if exists ods_event_log;
drop table if exists dws_useractive_log;
代码成功粘贴后 ,按下键盘"ESC" ,鼠标单机屏内框 ,按下组合键"Shift+z+z"。( Z按2次)
[hadoop@slave2 ~]$ sudo chmod 755 /tools/testdata/drop.sql
(2) 依次执行以下命令 ,重新初始化hive数据,初始化需要时间,所以等待每条执行完。
[hadoop@slave2 ~]$ sudo su – hive
[hive@slave2 ~]$ cd /softwares/hive-3.1.2
[hive@slave2 hive-3.1.2]$ bin/hive -f /tools/testdata/drop.sql
[hive@slave2 hive-3.1.2]$ bin/hive -f /tools/testdata/ods.sql
[hive@slave2 hive-3.1.2]$ bin/hive -f /tools/testdata/dwd.sql
[hive@slave2 hive-3.1.2]$ bin/hive -f /tools/testdata/dws.sql
[hive@slave2 hive-3.1.2]$ bin/hive -f /tools/testdata/awd.sql
2.2 使用atlas查看hive表的数据血缘
(1) 在浏览器地址中键入http://slave2:21000便可访问Atlas的WebUI ,默认用户名密码:admin/admin
(2) 在Atlas的Web界面设置"Search By Type"为"hive_table",搜索数据仓库中的所有表
(3) 点开任意表中的"Lineage(血缘)"菜单可查看数据血缘相关信息 ,以dwd_loading_log为例。可以看出图的下半部分是DWS层、ADS层建表的信息 ,图的上部分主要体现的是DWS层的数据是如何从 DWD层各个表中抽取并计算的。此类数据血缘信息属于业务元数据。
2.3 使用atlas查看hive字段的数据血缘
(1) aws_useractive_log表中的score字段 ,可以在左侧工具栏以类型为hive_column ,字段名为score进行搜索
(2) 依次点击"score->Lineage标签" ,查看字段血缘关系