iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何解决Hbase、elasticsearch整合中jar包冲突的问题
  • 870
分享到

如何解决Hbase、elasticsearch整合中jar包冲突的问题

hbaseelasticsearchjar 2023-05-30 19:05:13 870人浏览 安东尼
摘要

这篇文章主要介绍了如何解决HBase、elasticsearch整合中jar包冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题背景再数据平台中,项目搭建需要使用e

这篇文章主要介绍了如何解决HBaseelasticsearch整合中jar包冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

问题背景

再数据平台中,项目搭建需要使用es和HBASE搭建数据查询接口,整合的过程中出现jar包冲突的bug :com.Google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.ZooKeeper.MetaTableLocator

org.apache.hadoop.hbase.DoNotRetryioException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator    at org.apache.hadoop.hbase.client.rpcRetryinGCaller.translateException(RpcRetryingCaller.java:239)    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:150)    ...    at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator    at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntil    ...    at org.apache.hadoop.hbase.client.RegionServerCallable.prepare(RegionServerCallable.java:75)    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:134)    ... 45 more

解决办法

经排查,确认是因为 com.google.guava 这个包引起的冲突。es依赖于18及以上版本,而HBASE只支持16及以上版本。而guava这个包从17开始内部发生变化,方法发生改变,所以18并不会向下兼容16版本。在项目运行的过程中,如果同时引入16、18版本,es及hbase的调用过程会发生混乱。那么接下来就好办了,我们可以重新打包,将guava18打入es内部,再在pom文件中显示引用guava16版本的包。这样,es调用包内部打入的guava18,而hbase调用外部的guava16。

重新打包

新建Maven工程,在pom文件中进行如下配置:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="Http://maven.apache.org/POM/4.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <!--    this maven project is aim to fix the jar comflic in hbase & elasticsearch.    in es, required guava 18+ or up. but in hbase you should use guava 16- or blow.    cd the project directory and run 'sh ./cleanbuild.sh',you will get a new-self jar.    then, adjust your project pom.xml whth:    <dependency>      <groupId>douguo.shaded.elasticsearch</groupId>      <artifactId>douguo_shaded_elasticsearch</artifactId>      <version>1.0-SNAPSHOT</version>      <exclusions>        <exclusion>          <groupId>org.elasticsearch</groupId>          <artifactId>elasticsearch</artifactId>        </exclusion>      </exclusions>    </dependency>    finally, your jar comflic will be fixed.    @date:2017-11-30    @author:zhangjianfei    @since:douguo.shaded.elasticsearch-1.0.0  -->  <groupId>douguo.shaded.elasticsearch</groupId>  <artifactId>douguo_shaded_elasticsearch</artifactId>  <version>1.0-SNAPSHOT</version>  <properties>    <elasticsearch.version>2.4.1</elasticsearch.version>  </properties>  <dependencies>    <dependency>      <groupId>org.elasticsearch</groupId>      <artifactId>elasticsearch</artifactId>      <version>${elasticsearch.version}</version>    </dependency>    <dependency>      <groupId>org.elasticsearch.plugin</groupId>      <artifactId>shield</artifactId>      <version>${elasticsearch.version}</version>    </dependency>  </dependencies>  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-shade-plugin</artifactId>        <version>2.4.1</version>        <configuration>          <createDependencyReducedPom>false</createDependencyReducedPom>        </configuration>        <executions>          <execution>            <phase>package</phase>            <goals>              <goal>shade</goal>            </goals>            <configuration>              <relocations>                <relocation>                  <pattern>com.google.guava</pattern>                  <shadedPattern>douguo.shaded.elasticsearch.guava</shadedPattern>                </relocation>                <relocation>                  <pattern>org.joda</pattern>                  <shadedPattern>douguo.shaded.elasticsearch.joda</shadedPattern>                </relocation>                <relocation>                  <pattern>com.google.common</pattern>                  <shadedPattern>douguo.shaded.elasticsearch.common</shadedPattern>                </relocation>                <relocation>                  <pattern>com.google.thirdparty</pattern>                  <shadedPattern>douguo.shaded.elasticsearch.thirdparty</shadedPattern>                </relocation>              </relocations>              <transfORMers>                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" />              </transformers>            </configuration>          </execution>        </executions>      </plugin>    </plugins>  </build>  <repositories>    <repository>      <id>elasticsearch-releases</id>      <url>http://maven.elasticsearch.org/releases</url>      <releases>        <enabled>true</enabled>        <updatePolicy>daily</updatePolicy>      </releases>      <snapshots>        <enabled>false</enabled>      </snapshots>    </repository>  </repositories></project>

将org.joda等4个可能有冲突的jar包通过maven-shade-plugin插件迁移后重新打个jar包从而使得在引入这个jar包时能够使用该jar包自己的依赖而不是使用外部依赖。这里需要注意的是,需要将com.google.common等4个包全部重新迁移,否则会出现java.lang.IllegalAccessError: tried to access method com.google.common.base的错误

项目打包

mvn clean install

新的依赖包会在.m2 maven仓库中,如果公司搭建了仓库的话,需要上传jar包。如果直接运行jar包的话,记得重新编译项目,并替换lib目录

项目载入新包

只需要在pom文件中配置:

<!-- douguo.shaded.elasticsearch --><dependency>  <groupId>douguo.shaded.elasticsearch</groupId>  <artifactId>douguo_shaded_elasticsearch</artifactId>  <version>1.0-SNAPSHOT</version>  <exclusions>    <exclusion>      <groupId>org.elasticsearch</groupId>      <artifactId>elasticsearch</artifactId>    </exclusion>  </exclusions></dependency><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><!-- this guava is only used in habse   in es, 18.0+ is required, but hbase only supported 16.0 or blow.   clean as install douguo.shaded.elasticsearch --><dependency>  <groupId>com.google.guava</groupId>  <artifactId>guava</artifactId>  <version>16.0</version></dependency>

这样,guava18包就在douguo.shaded.elasticsearch下,es会优先调用。而外部配置的guava16就会被HBASE调用。2个版本的jar包互相独立存在!

感谢你能够认真阅读完这篇文章,希望小编分享的“如何解决Hbase、elasticsearch整合中jar包冲突的问题”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: 如何解决Hbase、elasticsearch整合中jar包冲突的问题

本文链接: https://www.lsjlt.com/news/220601.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决Hbase、elasticsearch整合中jar包冲突的问题
    这篇文章主要介绍了如何解决Hbase、elasticsearch整合中jar包冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题背景再数据平台中,项目搭建需要使用e...
    99+
    2023-05-30
    hbase elasticsearch jar
  • SpringBoot解决jar包冲突的问题,简单有效
    目录SpringBoot解决jar包冲突今天SpringBoot项目打包发现一直在报错我查到的一个解决方案,可使用所有jar包冲突问题springbootjar冲突问题集锦1、日志j...
    99+
    2022-11-12
  • Maven中出现JAR包冲突如何解决
    本篇文章给大家分享的是有关出现Maven JAR包冲突如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JAR冲突产生的原因   Pom.xm...
    99+
    2023-06-06
  • 如何解决docker与vmware的冲突问题
    这篇文章给大家分享的是有关如何解决docker与vmware的冲突问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、docker启动问题:问题解决:需要开启Hyper-V,(开启方法:控制面板->程序-...
    99+
    2023-06-14
  • css样式冲突的问题如何解决
    本篇内容介绍了“css样式冲突的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、 细化选择符通过使用组合器(Combinato...
    99+
    2023-06-20
  • mysql主键冲突的问题如何解决
    本篇内容介绍了“mysql主键冲突的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明忽略冲突保留原始记录。冲突更新冲突后部分字...
    99+
    2023-06-20
  • python中安装模块包版本冲突问题的解决
    问题 最近在工作中遇到一个问题,在安装python软件包的时候,经常会遇类似这样一个问题。比如对于ipython,机子本身安装的版本是1.2.1,显然太低,不足以跑jupyter,尝试着用pip安装,却发...
    99+
    2022-06-04
    模块 冲突 版本
  • VSCode中Eslint和Prettier冲突问题如何解决
    这篇文章主要讲解了“VSCode中Eslint和Prettier冲突问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VSCode中Eslint和Prettier冲突问题如何解决”吧...
    99+
    2023-07-05
  • Android如何解决游戏发行切包资源索引冲突的问题
    本篇内容介绍了“Android如何解决游戏发行切包资源索引冲突的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景游戏发行切包过程中,经...
    99+
    2023-06-14
  • 如何解决Android Libgdx中ScrollPane和Actor事件冲突问题
    小编给大家分享一下如何解决Android Libgdx中ScrollPane和Actor事件冲突问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Libgdx的...
    99+
    2023-05-30
    android libgdx
  • 如何解决Go语言中的并发内存访问冲突问题?
    如何解决Go语言中的并发内存访问冲突问题?在Go语言中,我们可以使用goroutine来实现并发编程,这无疑给我们带来了更强大的性能和并行处理能力。然而,并发编程也会引发一些问题,其中最常见的就是内存访问冲突。内存访问冲突问题是指多个gor...
    99+
    2023-10-22
  • 如何解决Vue.js和layui日期控件冲突的问题
    这篇文章主要介绍如何解决Vue.js和layui日期控件冲突的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事故还原:在用layui的日期控件的时候发现一个问题,就是form表单...
    99+
    2022-10-19
  • 如何解决sass-loader和node-sass版本冲突的问题
    目录报错信息1报错信息2解决办法网上解决方法我的解决方案太难了,两天没有学习了,这个问题卡了很久,差点就放弃了,今天终于解决了,继续学习Vue! 报错信息1 ERROR  ...
    99+
    2022-11-13
  • 如何解决JS中双击和单击事件冲突的问题
    这篇文章主要为大家展示了“如何解决JS中双击和单击事件冲突的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决JS中双击和单击事件冲突的问题”这篇文章吧...
    99+
    2022-10-19
  • 如何解决JS中touchstart事件与click事件冲突的问题
    这篇文章主要介绍了如何解决JS中touchstart事件与click事件冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言移动互联...
    99+
    2022-10-19
  • 在Java打包中如何处理Apache和Laravel的冲突问题?
    Java打包是将Java项目打包成一个可执行的文件,方便部署和运行。但是,在打包过程中经常会遇到不同依赖包之间的冲突问题。比如,Apache和Laravel这两个依赖包就会出现冲突。本文将介绍在Java打包中如何处理Apache和Lara...
    99+
    2023-10-15
    打包 apache laravel
  • ASP 重定向接口和 Laravel 的冲突问题,如何解决?
    在开发 Web 应用程序时,经常需要使用重定向接口来实现页面跳转和请求转发。ASP 是一种非常常见的 Web 应用程序框架,而 Laravel 是一种基于 PHP 的现代化 Web 应用程序框架。然而,在使用 ASP 重定向接口和 Lar...
    99+
    2023-06-23
    重定向 接口 laravel
  • 如何解决layui中form表单与button的点击事件冲突问题
    这篇文章给大家分享的是有关如何解决layui中form表单与button的点击事件冲突问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。layui的form表单位置和button...
    99+
    2022-10-19
  • 如何解决页面中marquee与flash同时存在时的冲突问题
    这篇文章主要为大家展示了“如何解决页面中marquee与flash同时存在时的冲突问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决页面中marquee与flash同时存在时的冲突问题”...
    99+
    2023-06-08
  • 如何解决Go语言中的并发文件的读写锁冲突问题?
    如何解决Go语言中的并发文件的读写锁冲突问题?在Go语言中,我们经常会遇到需要同时对一个文件进行读写操作的场景,比如并发地写日志文件。如果不加以控制,多个goroutine同时对同一个文件进行读写操作,就会产生冲突,导致数据丢失或不一致。为...
    99+
    2023-10-22
    并发 关键词:Go语言 文件读写锁冲突
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作