一、Navigator的安装**
1.1、Navigator数据库创建
- 创建Navigator元数据库,使用MySQL创建数据库,建库如下:
create database nms default character set utf8;
CREATE USER 'nms'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nms. * TO 'nms'@'%';
FLUSH PRIVILEGES;
create database nas default character set utf8;
CREATE USER 'nas'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nas. * TO 'nas'@'%';
FLUSH PRIVILEGES;
创建MySQL JDBC驱动并创建软链接
cd /usr/share/java/
ln -s mysql-connector-java-5.1.34.jar mysql-connector-java.jar
1.2、添加角色
使用管理员登录Cloudera Manager的Web界面,进入Cloudera Management Service服务
- 点击【实例】,进入实例界面,点击【添加角色实例】
- 选择【Navigator Metadata Server】和【Navigator Audit Server】角色部署的节点
- 输入角色所使用的数据库账号及密码并点击【测试连接】,连接成功点击继续
- 进入实例列表,显示角色已安装成功
- 选择【Navigator Audit Server】和【Navigator Metadata Server】服务,点击【启动角色】
- 等待重启完毕
- 角色添加完毕如下图:
- 重启过时服务
二、Navigator的使用
1、访问入口
- 进入Cloudera Management Service服务,点击【Navigator Metadata Server】
- 在Cloudera Manager首页点击【集群】菜单
- 也可以在浏览器输入如下地址访问
http://192.168.0.200:7187/login.html
(可左右滑动)
- 输入账号密码,进如Navigator主页面(账户密码都是 admin)
2、元数据搜索
- 使用管理员登录Cloudera Navigator(下图为元数据搜索功能界面)
- 根据输入的检索条件可以检索出所有涉及的内容,根据Source Type进行展示
- 在搜索栏输入【testhive】,根据左边的过滤条件,过滤数据源为Hive且类型为Table类型的数据
- Navigator支持元数据模糊检索,元数据类型,所属用户等条件过滤,检索出来的数据显示有数据文件的HDFS路径、所属用户、创建时间及数据源等信息。
- 查看元数据详细信息
- 进入元数据详细界面,为数据添加标签(Tag)
- 添加成功如下图所示
- 可以通过标签检索我们的元数据信息
- 修改元数据名称
- 修改元数据名称后,可以根据修改后的名称来搜索我们的元数据信息
- 通过检索出来的结果,能看到修改后的元数据名称中会有一个【Original Name】字段标识原始元数据的名称。修改的元数据名称还原后则不能检索到testhive1元数据信息
- 使用默认的【testhive1】检索出来的数据
3、数据溯源管理
3.1、案例:
使用Sqoop抽取MySQL数据到HDFS,然后将创建Hive的sqoop_hosts外部表,再将sqoop_hosts表转化为hosts_paquet表,通过这系列流程查看Navigator是如何展示我们数据的流向。
3.2、依照HOSTS表在Hive种创建sqoop_hosts表
- 脚本使用Sqoop命令通过MySQL数据库中指定表(HOSTS表)创建Hive表(sqoop_hosts表)
```
vim create_hivetable.sh
————复制如下内容——————-
!/bin/sh
host=’cdh1.macro.com’ database=’cm’ user=’root’ password=’123456’ mysqlTable=’HOSTS’ hiveDB=’default’ hiveTable=’sqoop_hosts’ sqoop create-hive-table \ —connect jdbc:mysql://${host}:3306/${database} —username ${user} —password ${password} \ —table ${mysqlTable} \ —hive-table ${hiveDB}.${hiveTable} \ —hive-overwrite
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606813191495-7bb56bab-3920-4092-9509-44b0215825ac.png#align=left&display=inline&height=174&margin=%5Bobject%20Object%5D&name=image.png&originHeight=221&originWidth=946&size=20118&status=done&style=none&width=746)
2. **执行结果如下**
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606811584973-b989e88f-024e-4894-b7ee-8e3b9f3b738a.png#align=left&display=inline&height=136&margin=%5Bobject%20Object%5D&name=image.png&originHeight=228&originWidth=1250&size=48108&status=done&style=none&width=746)
<a name="H3KAI"></a>
### 3.2、导入Mysql数据至Hive
1. **在命令行执行脚本将MySQL表数据抽取到Hive的sqoop_hosts表中**
vim import_hivetable.sh ———复制如下内容——————
!/bin/sh
host=’cdh1.macro.com’ database=’cm’ user=’cm’ password=’password’ mysqlTable=’HOSTS’ hiveDB=’default’ hiveTable=’sqoop_hosts’ tmpDir=’/user/hive/warehouse/‘${hiveDB}’.db/‘${hiveTable} sqoop import —connect jdbc:mysql://${host}:3306/${database} —username ${user} —password ${password} \ —table $mysqlTable \ —hive-import —hive-table ${hiveDB}.${hiveTable} —target-dir ${tmpDir} —delete-target-dir \ —hive-overwrite \ —null-string ‘\N’ —null-non-string ‘\N’
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606813849684-edaa7354-a838-462d-ac13-3a1e3120f0a1.png#align=left&display=inline&height=130&margin=%5Bobject%20Object%5D&name=image.png&originHeight=237&originWidth=1359&size=28210&status=done&style=none&width=746)
2. **执行结果如下:**
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606813757063-dc2e78eb-10b0-4c5c-827e-2c14d88090a2.png#align=left&display=inline&height=325&margin=%5Bobject%20Object%5D&name=image.png&originHeight=595&originWidth=1364&size=79921&status=done&style=none&width=746)
3. **查询该表结果如下:**
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606813824227-cea14208-c635-43c2-8e39-9b50f637bce5.png#align=left&display=inline&height=310&margin=%5Bobject%20Object%5D&name=image.png&originHeight=620&originWidth=1500&size=114893&status=done&style=none&width=750)
4. 在Hue中执行SQL命令创建hosts_parquet表
```sql
create table sqoop_parquet like sqoop_hosts stored as parquetfile;
- 执行结果如下:
3.4、导入Hive数据至Mysql
在mysql的cm数据库中创建test_hosts表
create table test_hosts like HOSTS;
desc test_hosts;
创建脚本,执行将HDFS数据抽取到MySQL数据库中的test_hosts表 ``` vim export_hivetable.sh
!/bin/sh
host=’cdh1.macro.com’ database=’cm’ user=’cm’ password=’password’ mysqlTable=’test_hosts’ hiveDB=’default’ exportDir=’/user/hive/warehouse/sqoop_hosts’ sqoop export —connect jdbc:mysql://${host}:3306/${database} \ —username ${user} \ —password ${password} \ —table ${mysqlTable} \ —export-dir ${exportDir} \ —input-fields-terminated-by ‘\01’ \ -m 1
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606814132131-a1c5935e-31a3-4015-a0a1-2ab43ee4bfe9.png#align=left&display=inline&height=130&margin=%5Bobject%20Object%5D&name=image.png&originHeight=237&originWidth=1364&size=26198&status=done&style=none&width=746)
3. 执行结果如下:
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606814790293-273cc6fc-c168-4bea-bc8d-5c94757abf0b.png#align=left&display=inline&height=459&margin=%5Bobject%20Object%5D&name=image.png&originHeight=908&originWidth=1475&size=202763&status=done&style=none&width=746)
<a name="YVngQ"></a>
### 3.5、Navigator查看数据血缘分析
1. 完成以上的数据操作流程后,登录Navigator,查看数据血缘分析。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606815076812-41045b84-f399-4a5b-a825-7b13dce26662.png#align=left&display=inline&height=310&margin=%5Bobject%20Object%5D&name=image.png&originHeight=620&originWidth=1500&size=80361&status=done&style=none&width=750)
2. 进入元数据详细界面
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606894740800-6a512b72-78f2-49b1-b01d-4a82b6b846e8.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=118963&status=done&style=none&width=1618)
3. 点击【Lineage】菜单,进入数据血缘分析界面
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606894773314-f3677e72-0cf0-4ae7-a6a0-1a6008eadcb2.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=72208&status=done&style=none&width=1618)
4. 点击图中标注的【+】可以看到sqoop_hosts表中所有字段与hosts_parquet表中字段为11对应
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606894836750-2fdbf767-df63-41aa-a7d9-7e9ccdb6476a.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=82303&status=done&style=none&width=1618)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606895286564-7dbf3e1c-46d2-435d-9f5c-9741ae375c2a.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=155611&status=done&style=none&width=1618)<br />
5. 点击右侧菜单【Operations】,可以看到详细的跟踪到元数据的源头及目的地
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606895393534-597df16b-cdb1-4c41-be9d-3435670bb067.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=102287&status=done&style=none&width=1618)
6. 点击每一个节点可以查看到当前节点的详细描述
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606895440370-ec8f1626-8b7e-4e7e-8c4a-9dd01994df83.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=116057&status=done&style=none&width=1618)
7. 可以精确到每个字段的数据流向
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606895473003-32ca91d3-57bf-424a-bf9d-06e798d39ec7.png#align=left&display=inline&height=783&margin=%5Bobject%20Object%5D&name=image.png&originHeight=783&originWidth=1618&size=142529&status=done&style=none&width=1618)
<a name="FLdMu"></a>
## 4、审计功能
1. 我们命令行使用hdfs用户访问有权限的HDFS目录
kinit hdfs hadoop fs -ls /user/hive/warehouse
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1607147661021-87f72cc6-0672-46ae-8bf7-b066d2d21e0f.png#align=left&display=inline&height=243&margin=%5Bobject%20Object%5D&name=image.png&originHeight=243&originWidth=909&size=29580&status=done&style=none&width=909)
2. 登录Cloudera Manager Navigator进入【Audits】功能,添加筛选条件查看审计功能
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1607147750662-38621cda-0a20-4d36-a591-2bfdea737bc0.png#align=left&display=inline&height=687&margin=%5Bobject%20Object%5D&name=image.png&originHeight=687&originWidth=1349&size=64902&status=done&style=none&width=1349)
3. 点击【Apply】,可以看到我们操作HDFS的/user/hive/warehouse的审计日志
![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1607147787571-8e5eaa23-eb60-41ba-b13e-959d4d2bf0ad.png#align=left&display=inline&height=687&margin=%5Bobject%20Object%5D&name=image.png&originHeight=687&originWidth=1349&size=77990&status=done&style=none&width=1349)
4. 使用user_w用户查看无访问权限的HDFS目录
kinit user_w klist hdfs dfs -ls /user/hdfs ```
- 查看Cloudera Manager Navigator的审计日志,添加筛选条件,点击“Apply”,查看审计日志,可以看到有记录用户无权限访问该目录的日志
- 使用user_r用户登录Hue进行SQL操作,访问有权限的testhive表
- 登录Navigator查看审计日志
- 操作无权限访问的sqoop_hosts表
- 登录Navigator查看审计日志
- 同样Cloudera Manager Navigator可以对系统登录等操作进行审计,这里以Hue为例
5、数据生命周期管理
- 登录Navigator平台,点击【Policies】进入数据生命周期管理界面
- 查看【Search Query】查询条件,点击【Show full query】
- 点击【New Policy】创建一个自动分类标签的策略,点击【Save】保存策略
- 查看自动分类标签策略运行情况
6.总结
- Navigator提供了完整的元数据检索功能。可以通过搜索表名,文件名等都可以搜索出相关所有涉及的内容,包括文件路径,创建时间,创建人等。可以根据数据来源组件,操作,表等分类进行查询。可以为数据集添加标签(tag) ,支持基于标签的搜索。
- Navigator提供了完成了集群审计功能(含数据操作,权限控制、登录等)
- Navigator提供完整的数据血缘分析,通过可视化界面方便的查看数据详细的进入HDFS到流出的一系列过程。
- Navigator提供创建策略的方式来管理数据的生命周期,如为数据添加Tag、归档数据等策略。