ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-04-30

2021-04-30 17:29:45  阅读:358  来源: 互联网

标签:04 dloss1 30 jar hive udf 2021 jars root


1.编写文档目的

大多数企业在使用CDH集群时,考虑数据的安全性会在集群中启用Sentry服务,这样就会导致之前正常使用的UDF函数无法正常使用。本文主要讲述如何在Sentry环境下使用自定义UDF函数。

 

文章概述

  1. 部署UDF JAR 文件
  2. Hive配置
  3. 授权JAR文件
  4. 创建临时函数
  5. 创建永久函数

测试环境

  1. CM和CDH版本为6.2.1
  2. 采用用户

前置条件

  1. 集群Kerberos已启用
  2. 集群已安装Sentry服务且正常使用

 

2. 部署UDF JAR包

1.将开发好的UDF JAR包上传至HServer2及Metastore服务所在服务器统一目录

[root@dloss1 ~]# sudo mkdir /usr/lib/hive-udf-jars
[root@dloss1 hive-udf-jars]# sudo chown -R hive:hive apog-udf-1.0.jar 
[root@dloss1 hive-udf-jars]# ll

image.png(后续换了jar包)

注意:/usr/lib/hive-udf-jars目录及目录下文件的属主为hive,确保hive用户能访问

2.将开发好的UDF JAR上传至HDFS

[root@dloss1 hive-udf-jars]# hadoop fs -mkdir /user/hive/udfjars
[root@dloss1 hive-udf-jars]# hadoop fs -ls /user/hive/udfjars
[root@dloss1 hive-udf-jars]# hadoop fs -put apog-udf-1.0.jar/user/hive/udfjars
[root@dloss1 hive-udf-jars]# hadoop fs -ls /user/hive/udfjars
Found 1 items
-rw-r--r--   3 hive hive   94869756 2021-04-14 16:45 /user/hive/udfjars/apog-udf-1.0.jar
[root@dloss1 hive-udf-jars]# 

image.png注意:/user/hive/udfjars和jar文件的所属用户必须为hive

 

3.Hive配置

1.登录CM管理控制台,进入Hive服务

点击配置,选择高级配置,在hive-site.xml文件中增加如下配置

<property>
    <name>hive.reloadable.aux.jars.path</name>  #引入jar包
    <value>/usr/lib/hive-udf-jars</value>
</property>

image.png注意:hive.reloadable.aux.jars.path路径为本地的/usr/lib/hive-udf-jars目录

 

 

2.保存配置,回到CM主页根据提示重启Hive服务

 

4.授权JAR文件

image.png

5.创建函数

1.用hive用户通过beeline登录HiveServer2测试

 

(修改<name>hive.reloadable.aux.jars.path</name>配置只对 Beeline 适用,Hive CLI 方式无法识别 Jar 包)

(因已经开启了Kerberos认证需要先登录Hive/dloss1@FAYON.COM账号再进行beeline连接)

beeline
!connect jdbc:hive2://dloss1:10000/;principal=hive/dloss1@FAYSON.COM

image.png

创建临时函数

create function TEST0415 as 'com.ceb.ccrp.apog.udf.TransferLocationUDTF' using jar 'hdfs://nameservice1/user/hive/udfjar/apog-udf-1.0.jar';
#此中'com.ceb.ccrp.apog.udf.TransferLocationUDTF'是调用java方法的路径、'hdfs://nameservice1/user/hive/udfjar/apog-udf-1.0.jar'是hue授权后jar包的路径

使用函数

select TEST0415(113.15150738786386,40.97701708193782);

image.png

 

 

 

 

为用户授权JAR文件的GRANT ALL ON URI特权,则用户就可以在他们拥有写权限的数据库上创建Function

 

问题总结:

1、设置image.png

值时要注意jar包要在每个节点的相同本地路径存在、否则hive相关服务会启动失败、启动失败会报java版本不一样的错误

2、修改完hive配置文件重启服务后要重新连接beeline

3、多次测试在beeline中的add权限问题后还是不能使用,最后使用在hue授予权限后的DHFS中的jar包路径解决问题

4、java.net.SocketException: Broken pipe报错可能的原因

防火墙和网络上的问题,或者服务器发生了crash

应用系统的数据库连接池导致,忘记数据库连接的关闭

5、add jar权限问题(未解决)

6、Unknown HS2 problem when communicating with Thrift server

 

 

 

 

 

 

 

 

标签:04,dloss1,30,jar,hive,udf,2021,jars,root
来源: https://blog.csdn.net/weixin_45392855/article/details/116307245

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有