目前社区小伙伴经常反映在 cdh 环境中部署 Dolphinscheduler 出现 hive 包冲突的问题,报错日志信息如下:

[WARN] 2020-04-29 09:55:30.815 org.eclipse.jetty.server.HttpChannel:[590] - /dolphinscheduler/datasources/connect
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/hadoop/hive/thrift/TFilterTransport
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1053)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/thrift/TFilterTransport
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.thrift.TFilterTransport
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

这是由于官方包中的 hive-jdbc 与 cdh 环境中的版本不一致导致的,下列两种方式可以解决该问题。

1. 通过源码编译部署

如果您通过源码编译进行部署,则可以通过修改 pom 文件的方式替换 hive-jdbc 包为cdh 版本。

  • 修改 pom.xml 文件

    • 配置 cloudera 仓库信息

      <repositories>
        <repository>
         <id>cloudera</id>
         <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
      </repositories>
    • 修改 hive.jdbc.version

      <!-- 这⾥以cdh5.15.1和cdh6.3.1为例, 可按实际情况修改为对应版本。 -->
      <!-- cdh5.15.1 -->
      <hive.jdbc.version>1.1.0-cdh5.15.1</hive.jdbc.version>
      <!-- cdh6.3.1 -->
      <hive.jdbc.version>2.1.1-cdh6.3.1</hive.jdbc.version>
    • 增加 hive-shims

      <!-- 具体版本按实际情况指定 -->
      <hive.shims.version>1.1.0-cdh5.15.1</hive.shims.version> <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-shims</artifactId>
        <version>${hive.shims.version}</version>
      </dependency>

修改后重新打包编译:

mvn -U clean package -Prelease -Dmaven.test.skip=true

打包完成后可以在lib中看到如下 hive-jdbc 相关 jar 包,说明打包完成, 可以进行部署。

hive-classification-1.1.0-cdh5.15.1.jar
hive-common-1.1.0-cdh5.15.1.jar
hive-jdbc-1.1.0-cdh5.15.1.jar
hive-metastore-1.1.0-cdh5.15.1.jar
hive-serde-1.1.0-cdh5.15.1.jar
hive-service-1.1.0-cdh5.15.1.jar
hive-shims-0.23-1.1.0-cdh5.16.1.jar
hive-shims-1.1.0-cdh5.16.1.jar
hive-shims-common-1.1.0-cdh5.16.1.jar
hive-shims-scheduler-1.1.0-cdh5.16.1.jar

由于 cloudera 仓库对网络有一定要求, 如果打包时下载jar包报错,可以先将官网的包直接部署,并参照已使用官方包部署进行处理。

2. 已使用官方包部署

如果您先前已使用官方包进行部署,那么可在 cdh 集群的任意节点中, 找到 cdh 版本的 hive包。

以我的环境为例,hive包在下列路径中:

/opt/cloudera/parcels/CDH/jars

同样的,只需要在这个路径中找到hive-jdbc相关的包, 然后替换掉Dolphinscheduler lib 中的 hive 包即可(需要移除原先的 hive-jdbc 相关包)。

以下为cdh6所需要的包:

hive-common-2.1.1-cdh6.3.1.jar
hive-jdbc-2.1.1-cdh6.3.1.jar
hive-metastore-2.1.1-cdh6.3.1.jar
hive-serde-2.1.1-cdh6.3.1.jar
hive-service-2.1.1-cdh6.3.1.jar
hive-service-rpc-2.1.1-cdh6.3.1.jar
hive-shims-0.23-2.1.1-cdh6.3.1.jar
hive-shims-2.1.1-cdh6.3.1.jar
hive-shims-common-2.1.1-cdh6.3.1.jar
hive-shims-scheduler-2.1.1-cdh6.3.1.jar

替换完成后,重启 Dolphinscheduler 即可。

关于 CDH 环境中部署 Dolphinscheduler 出现 hive-jdbc 包冲突的解决办法的更多相关文章

  1. 关于Vue.cli 脚手架环境中引入Bootstrap时,table表格样式缺失的解决办法

    Vue+bootstrap不能正常使用table的样式 环境:下载官网的本地bootstrap包,然后在vue 的index.html引入bootstrap的css和js环境 问题描述:1. vue里 ...

  2. 在maven 中部署SSM项目找不 Spring ContextLoaderListener 的解决办法

    1.项目使用技术:maven的项目使用了Spring MVC+Spring +Mybatis+Tomcat搭建一个项目. 2.报错信息: Error configuring application l ...

  3. weblogic下部署应用时slf4j与logbak冲突的解决办法

    今天在weblogic上部署一个使用logback的应用时,报错如下: java.lang.IllegalArgumentException: Invalid 'logbackConfigLocati ...

  4. IDEA中Tomcat找不到war包导出按钮解决办法

    解决办法 (1) 打开Idea,点击File,然后点击Project Structure-,进入项目结构 (2) 具体步骤看下图: (3) 具体步骤如下图: (4) 具体步骤如下图: (5) 问题解决 ...

  5. 如何在多机架(rack)配置环境中部署cassandra节点

    cassandra节点上数据的分布和存储是由系统自动完成的.除了我们要设计好partition key之外,在多机架(rack)配置环境中部署cassandra节点,也需要考虑cassandra分布数 ...

  6. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  7. SpringCloud+Feign环境下文件上传与form-data同时存在的解决办法(2)

    书接上文. 上文中描述了如何在 SpringCloud+Feign环境下上传文件与form-data同时存在的解决办法,实践证明基本可行,但却会引入其他问题. 主要导致的后果是: 1. 无法与普通Fe ...

  8. Eclipse中js文件修改后浏览器不能及时更新的解决办法

    项目中js文件修改后浏览器不能及时更新的解决办法 转载:http://www.codeweblog.com/%E9%A1%B9%E7%9B%AE%E4%B8%ADjs%E6%96%87%E4%BB%B ...

  9. .NET在IE9中页面间URL传递中文变成乱码的解决办法

     在.Net的项目中,鼠标点击查询按钮,转到查询页面,但URL中包含中文时,传到服务器端后,中文变成了乱码(只有IE9出现该问题).       尝试使用Server.UrlEncode()进行编码, ...

随机推荐

  1. python之模块(hashlib、logging)

    hashlib模块 加密的概念 加密,是以某种特殊的算法改变原有的数据,当其他人获得数据时,也无法了解数据的内容.简单的来说,就是将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂),密文数据的 ...

  2. antdVue问题

    antdVue框架问题 #(1)slot/slot-scope插槽问题 一般用于表格数据渲染 eg: <span slot="user" slot-scope="t ...

  3. 碎碎念软件研发02:敏捷之Scrum

    一.什么是 Scrum 1.1 Scrum 定义 Scrum 是敏捷开发方法之一,它使用比较广泛. 敏捷的其它开发方法还有 XP(极限编程).FDD(特性驱动开发).Crystal(水晶方法).TDD ...

  4. 白嫖Azure与体验GoLand远程开发

    前言 近期因为有本地开发远程使用Linux编译部署的需求,而虚拟机的性能实在是不敢恭维,WSL的坑之前也踩过(没有systemd等),故考虑使用SSH连接云服务器开发. 目前VSCode提出了Remo ...

  5. 类型转换——JavaSE基础

    类型转换 类型判断 可以通过Instanceof关键字判断左操作数是否是右操作数的父类或本身 强制类型转换 不能对布尔值进行转换 不能将对象类型转换为不相关的类型 把高容量转向低容量时,需要进行强制类 ...

  6. sklearn练习1 回归

    from sklearn.svm import SVR from sklearn.pipeline import make_pipeline from sklearn.preprocessing im ...

  7. yum源更换/新

    参考:https://www.cnblogs.com/opsprobe/p/10673031.html

  8. pycharm相关介绍

    一.settings设置   1.搜font 设置字体 2.Keymap------快捷键 二.常用快捷键 1.Ctrl + Enter:在下方新建行但不移动光标: 2.Shift + Enter:在 ...

  9. ssh隧道连接的方式连接数据库

    最好用xshell做隧道连接,其他工具没接触过过 1.先新建一个会话 2.点进刚刚建好的连接,右击属性 3.点进隧道,添加,输入映射到本地的配置 4.完成之后用数据库连接工具连接即可 参考连接: ht ...

  10. 怎么理解相互独立事件?真的是没有任何关系的事件吗?《考研概率论学习之我见》 -by zobol

    1.从条件概率的定义来看独立事件的定义 2.从古典概率的定义来看独立事件的定义 3.P(A|B)和P(A)的关系是什么? 4.由P(AB)=P(A)P(B)推出"独立" 5.从韦恩 ...