数据治理三-Atlas与Hive数据集成

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据治理三-Atlas与Hive数据集成

一、安装环境


JDK 1.8

二、安装Hadoop


1、下载hadoop


http://mirror.bit.edu.cn/apache/hadoop/ 选择合适的版本


下载hadoop


wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz


执行 进行解压,为了方便使用吗,mv进行修改名称

1. tar -xzvf hadoop-3.3.0.tar.gz 
2. mv hadoop-3.3.0.tar.gz  hadoop


2、修改环境变量

将hadoop环境信息写入环境变量中

vim /etc/profile
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$PATH


执行source etc/profile使其生效

3、修改配置文件

修改hadoop-env.sh文件,vim etc/hadoop/hadoop-env.sh修改JAVA_HOME信息

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64


执行hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z]',hadoop自带的例子,验证hadoop是否安装成功


三、安装hive


1、下载hive

wget http://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz


解压tar -zxvf apache-hive-3.1.2-bin.tar.gz  


修改名称 mv apache-hive-3.1.2-bin hive

2、修改环境变量

vim /etc/profile

export HIVE_HOME=/opt/hive
export PATH=$MAVEN_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$PATH

source etc/profile

3、修改hivesite 配置

<!-- WARNING!!! This file is auto generated  for   documentation purposes ONLY! -->
<!-- WARNING!!! Any changes you make to  this   file will be ignored by Hive.   -->
<!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->
<!-- Hive Execution Parameters -->
       <!-- 以下配置原配置都有,搜索之后进行修改或者删除后在统一位置添加 -->
   <property>
       <name>javax.jdo.option.ConnectionUserName</name>用户名
       <value>root</value>
   </property>
   <property>
       <name>javax.jdo.option.ConnectionPassword</name>密码
       <value> 123456 </value>
   </property>
  <property>
       <name>javax.jdo.option.ConnectionURL</name>mysql
       <value>jdbc:mysql: //127.0.0.1:3306/hive</value>
   </property>
   <property>
       <name>javax.jdo.option.ConnectionDriverName</name>mysql驱动程序
       <value>com.mysql.jdbc.Driver</value>
   </property>
<property>
   <name>hive.exec.script.wrapper</name>
   <value/>
   <description/>
</property>


复制mysql的驱动程序到hive/lib下面,然后进入/hive/bin 目录执行

schematool -dbType mysql -initSchema


4、验证是否安装成功


hive --version查看当前版本

hive 看是否进入hive命令操作行,进去的话说明成功


d930e8113edc894d264fb883fb51a61f.png


四、Hive数据集成


配置了hive的钩子后,在hive中做任何操作,都会被钩子所感应到,并以事件的形式发布到kafka,然后,atlas的Ingest模块会消费到kafka中的消息,并解析生成相应的atlas元数据写入底层的Janus图数据库来存储管理;


1、Hive同步配置集成


修改hive-env.sh,指定hive钩子的jar包位置,钩子的jar包和工具在atlas编译完成之后自动生成,在apache-atlas-sources-2.1.0/distro/target/目录下

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

修改hive-site.xml,指定钩子执行的方法

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


注意,这里其实是执行后的监控,可以有执行前,执行中的监控。其实就是一个执行生命周期的回调监控。


2、全量同步配置


拷贝atlas配置文件atlas-application.properties到hive配置目录


添加两行配置:

atlas.hook.hive.synchronous=false
atlas.rest.address=http://doit33:21000

atlas安装之前,hive中已存在的表,钩子是不会自动感应并生成相关元数据的;可以通过atlas的一个工具,来对已存在的hive库或表进行元数据导入;该工具也是存在atlas编译生成的hive-hook包里。

bin/import-hive.sh


执行结果如下,导入数据需要输入atlas的账号密码,输入完之后会开始导入数据,

提示Hive Meta Data imported successfully!!!说明数据导入成功

sh import-hive.sh 
Using Hive configuration directory [/opt/hive/conf]
Log file for import is /opt/apache-atlas-2.1.0/logs/import-hive.log
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
2021-01-15T11:41:01,614 INFO [main] org.apache.atlas.ApplicationProperties - Looking for atlas-application.properties in classpath
2021-01-15T11:41:01,619 INFO [main] org.apache.atlas.ApplicationProperties - Loading atlas-application.properties from file:/opt/hive/conf/atlas-application.properties
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Using graphdb backend 'janus'
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Using storage backend 'hbase2'
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Using index backend 'solr'
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Atlas is running in MODE: PROD.
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Setting solr-wait-searcher property 'true'
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Setting index.search.map-name property 'false'
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Setting atlas.graph.index.search.max-result-set-size = 150
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Property (set to default) atlas.graph.cache.db-cache = true
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Property (set to default) atlas.graph.cache.db-cache-clean-wait = 20
2021-01-15T11:41:01,660 INFO [main] org.apache.atlas.ApplicationProperties - Property (set to default) atlas.graph.cache.db-cache-size = 0.5
2021-01-15T11:41:01,661 INFO [main] org.apache.atlas.ApplicationProperties - Property (set to default) atlas.graph.cache.tx-cache-size = 15000
2021-01-15T11:41:01,661 INFO [main] org.apache.atlas.ApplicationProperties - Property (set to default) atlas.graph.cache.tx-dirty-size = 120
Enter username for atlas :- admin   #手动输入atlas用户名和密码
Enter password for atlas :- 
2021-01-15T11:41:05,721 INFO [main] org.apache.atlas.AtlasBaseClient - Trying with address http://127.0.0.1:21000
2021-01-15T11:41:05,831 INFO [main] org.apache.atlas.AtlasBaseClient - method=GET path=api/atlas/admin/status contentType=application/json; charset=UTF-8 accept=application/json status=200



3、钩子测试

配置好所有钩子之后,hive中尝试创建一个测试表,再看一下atlas中是否可以搜索到。可以就算配置成功了

创建之前,数据表信息展示如下

ae9e2dbf90ba7e3d9b1141c3d103d102.png


之后在hive里再创建一张表

hive> CREATE TABLE `teache` (
> `id` int ,
> `name` string ,
> `age` int ,
> `sex` string,
> `peoject` string
> ) ;
OK
Time taken: 0.645 seconds
hive> show tables;
OK
class
student
teache
Time taken: 0.108 seconds, Fetched: 3 row(s)

atlas自动就有了

445bf8d644136af44d0b53891bb1a545.png


五、错误记录

1、配置文件中存在异常字符

根据指定的


26b7310379bfe35aa53f9566f71896a6.png

Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common- 3.1 . 2 .jar!/hive-log4j2.properties Async:  true
Exception in thread  "main"   java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
     at org.apache.hadoop.fs.Path.initialize(Path.java: 263 )
     at org.apache.hadoop.fs.Path.<init>(Path.java: 221 )
     at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java: 710 )
     at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java: 627 )
     at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java: 591 )
     at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java: 747 )
     at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java: 683 )
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 )
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 )
     at java.lang.reflect.Method.invoke(Method.java: 498 )
     at org.apache.hadoop.util.RunJar.run(RunJar.java: 323 )
     at org.apache.hadoop.util.RunJar.main(RunJar.java: 236 )
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
     at java.net.URI.checkPath(URI.java: 1823 )
     at java.net.URI.<init>(URI.java: 745 )
     at org.apache.hadoop.fs.Path.initialize(Path.java: 260 )
     ...  12   more

解决方式:

找到指定的配置文件行数,将描述进行删除

 <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive/local</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>


2、guava版本不一致


a1958de21b159f7bc35d5f98a44c2e39.png

Exception in thread  "main"   java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code  0x8
  at [row,col,system-id]: [ 3215 , 96 , "file:/opt/hive/conf/hive-site.xml" ]
     at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java: 3051 )
     at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java: 3000 )
     at org.apache.hadoop.conf.Configuration.getProps(Configuration.java: 2875 )
     at org.apache.hadoop.conf.Configuration.get(Configuration.java: 1484 )
     at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java: 4996 )
     at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java: 5069 )
     at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java: 5156 )
     at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java: 5104 )
     at org.apache.hive.beeline.HiveSchemaTool.<init>(HiveSchemaTool.java: 96 )
     at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java: 1473 )
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 )
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 )
     at java.lang.reflect.Method.invoke(Method.java: 498 )
     at org.apache.hadoop.util.RunJar.run(RunJar.java: 323 )
     at org.apache.hadoop.util.RunJar.main(RunJar.java: 236 )
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code  0x8
  at [row,col,system-id]: [ 3215 , 96 , "file:/opt/hive/conf/hive-site.xml" ]
     at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java: 621 )
     at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java: 491 )
     at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java: 2456 )
     at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java: 2403 )
     at com.ctc.wstx.sr.StreamScanner.resolveCharEnt(StreamScanner.java: 2369 )
     at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java: 1515 )
     at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java: 2828 )
     at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java: 1123 )
     at org.apache.hadoop.conf.Configuration$Parser.parseNext(Configuration.java: 3347 )
     at org.apache.hadoop.conf.Configuration$Parser.parse(Configuration.java: 3141 )
     at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java: 3034 )
     ...  15   more


解决办法:


1、com.google.common.base.Preconditions.checkArgument这个类所在的jar包为:guava.jar


2、hadoop-3.2.1(路径:hadoop\share\hadoop\common\lib)中该jar包为  guava-27.0-jre.jar;而hive-3.1.2(路径:hive/lib)中该jar包为guava-19.0.1.jar


3、将jar包变成一致的版本:删除hive中低版本jar包,将hadoop中高版本的复制到hive的lib中。


再次启动问题得到解决!

目录
相关文章
|
6天前
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
6天前
|
SQL 分布式计算 Hadoop
创建hive表并关联数据
创建hive表并关联数据
39 0
|
6天前
|
人工智能 NoSQL atlas
MongoDB Atlas Vector Search与Amazon Bedrock集成已全面可用
MongoDB Atlas Vector Search知识库与Amazon Bedrock的最新集成,将极大加速生成式AI应用的开发
2490 1
|
6天前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
52 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
6天前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0
|
6天前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在DataWorks中,查看ODPS表的OSS对象如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
29 1
|
6天前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之在DataWorks中,将数据集成功能将AnalyticDB for MySQL中的数据实时同步到MaxCompute中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 0
|
6天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
29 0
|
6天前
|
分布式计算 DataWorks Java
DataWorks常见问题之数据集成导出分区表的全量数据如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
52 0
|
6天前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。

热门文章

最新文章