记一次protobuf和hbase自带protobuf版本冲突的解决

Posted niutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次protobuf和hbase自带protobuf版本冲突的解决相关的知识,希望对你有一定的参考价值。

技术图片

 

使用protobuf生产模板代码,使用的版本是:

<dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.6.1</version>
</dependency>

hbase的版本是:1.2.1-cdh5.1.4.0

如果打印maven依赖树的话,可以看到hbase的protobuf版本是2.5.0

这种情况下打包不会报错,但是一旦运行就会出错:

java.lang.ClassNotFoundException: com.google.protobuf.LiteralByteString

那么应该咱么解决?

答案是想办法向下兼容~ , 就是保留高版本,去除低版本

最终做法是在maven中去掉低版本相关依赖,以我的作为例子:

<dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>$hbase.version-$cdh.version</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-all</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.hbase</groupId>
                    <artifactId>hbase-protocol</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>$hbase.version-$cdh.version</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-all</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.hbase</groupId>
                    <artifactId>hbase-protocol</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

以上是关于记一次protobuf和hbase自带protobuf版本冲突的解决的主要内容,如果未能解决你的问题,请参考以下文章

记一次OGG数据写入HBase的丢失数据原因分析

记一次HBase RegionServer 经常挂掉 故障排查过程

记一次测试环境Hbase数据备份恢复以及恢复后部分表无法删除的问题处理

记一次 spark rdd 写数据到 hbase 报 NPE 的问题排查

记一次服务器异常掉电,导致HBase Master is initializing 问题处理

记一次服务器异常掉电,导致HBase Master is initializing 问题处理