Hive与ElasticSerach 集成 使用Java代码远程连接踩坑记........................

上一篇博客的地址 : https://blog.csdn.net/weixin_38822045/article/details/87973419

第一:在上一篇博客解决了,Hive与ElasticSerach在Linux中集成出现的 ClassNotFoundException之后,通过Beeline操作之后,Beeline.distro 脚本里面 添加了

"$bin"/hive --service beeline "$@" -hiveconf hive.aux.jars.path=file:///usr/hdp/elasticsearch_hadoop.jar

在用Java代码,通过JDBC操作的时候,远程提交,会同样出现ClassNotFoundException,

至此,在Linux 出现的异常问题,重新出现了,查看 yarn运行界面 localhost:8088,查看MR 运行日志,发现是和Linux上缺少集成Jar是一样的异常,ClassNotFoundException,知道问题在此处,查看下  JDBC連接,发现使用JDBC连接的时候,调用的客户端并非是 Beeline客户端,而是  Java的客户端,如果调用的是Beeline客户端,集成Jar就会直接添加到当前会话,但是,Java客户端并没有  将集成jar添加到Hive的会话中,所以会出现异常

上述描述,已经知道了问题所在,现在需要将远程Java代码时,将Es集成Jar 同事提交到服务器,才不会运行异常

尝试过,多种方案,将Jar  分别都拷贝到  MR,Yarn,hive的各自Lib 里面去,运行的时候,还是运行ClassNotFoundException

至此,可以了解到,是因为 在运行这个请求的时候,并没有加载这个集成jar,找不到 集成Jar的位置,一直存在异常!

分析原因:  运行时 并没有加载Jar,但是Jar 却放到了对应的文件夹下面,所以问题出在,运行环境的问题

解决方案:配置Yarn和MR的运行环境【ClassPath】,

MR:

ClassPath:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar:/etc/hadoop/conf/secure:/usr/hdp/*

MR 的ClassPath添加:,/usr/hdp/*   前面的为系统默认的

红色为自己添加,然后集成Jar在 /usr/hdp/elasticserach-hadoop.jar 下面,

Yarn的 ClassPath添加同样:

Yarn :$HADOOP_CONF_DIR,/usr/hdp/current/hadoop-client/*,/usr/hdp/current/hadoop-client/lib/*,/usr/hdp/current/hadoop-hdfs-client/*,/usr/hdp/current/hadoop-hdfs-client/lib/*,/usr/hdp/current/hadoop-yarn-client/*,/usr/hdp/current/hadoop-yarn-client/lib/*,/usr/hdp/*

红色为自己添加,重启MR,YARN服务器,再次通过 Java远程提交即可!  

不会出现任何异常

远程操作方案解决

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值