基于华为FusionInsightHD的HBase自定义函数配置流程介绍

举报
chenyunliang 发表于 2020/08/07 11:11:17 2020/08/07
【摘要】 通过配置集群参数以便支持在phoenix中支持使用自定义函数,涉及产品授权暂时不上传已经开发的jar包文件。

HBase自定义函数流程说明

  1. 配置流程

    1. 将编写好的HBase自定义函数打成jar,注意将依赖的框架全部打包到jar文件中。

    2. HBase需要在hbase-site.xml中配置

<property>

  <name>phoenix.functions.allowUserDefinedFunctions</name>

  <value>true</value>

</property>

<property>

  <name>fs.hdfs.impl</name>

  <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>

</property>

<property>

  <name>hbase.rootdir</name>

  <value>hdfs://填写自己的/hbase</value>

</property>     

<!-- 自定义函数,存储jarhdfs目录 -- >

<property>

  <name>hbase.dynamic.jars.dir</name>

  <value>hdfs://填写自己的/hbase/lib</value>

</property>

3.如果是华为FusionInsight HD则需要在配置上述namevalue(华为HD有可能已配置,已配置的不要再配置,否则将引起未知问题),保存后重启HBase,重新下载客户端安装(如果只是配置改变,可以在客户端hbase-site.xml中单独修改即可)


按这个添加到HBASE_REGIONSERVER_OPTS中去,然后重启hbase

4.将编译好的自定义函数jar包上传到HDFS(hbase-site.xml中配置的hbase.dynamic.jars.dir)

[root@hd-host01 opt]# cd /opt/hadoop_client_c80/

[root@hd-host01 hadoop_client_c80]# source bigdata_env

[root@hd-host01 hadoop_client_c80]# kinit loader_hm

Password for loader_hm@HADOOP.COM: 输入密码

[root@hadoop61 udf]# hdfs dfs -mkdir /tmp/lib

[root@hadoop61 udf]# hdfs dfs -put audaque-phoenix-udf-1.0.1.jar /tmp/lib/

5.登陆phoenix后注册自定义函数,测试是否正常使用,以dcf_etl客户端模式为例:

[root@hadoop61 conf]# sqlline.py

Connected to: Phoenix (version 4.13)

Driver: PhoenixEmbeddedDriver (version 4.13)

Autocommit status: true

Transaction isolation: TRANSACTION_READ_COMMITTED

Building list of tables and columns for tab-completion (set fastconnect to true to skip)...

419/419 (100%) Done

Done

sqlline version 1.2.0

0: jdbc:phoenix> DROP FUNCTION SM4_ENCRYPT;

No rows affected (0.035 seconds)

0: jdbc:phoenix> CREATE FUNCTION SM4_ENCRYPT(VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixSM4EncryptFunction' using jar '/hbase/lib/audaque-phoenix-udf-1.0.1.jar';

No rows affected (0.027 seconds)

0: jdbc:phoenix> select SM4_ENCRYPT(NAME) FROM TEST;

2020-05-26 16:54:16,832 INFO  [hconnection-0x28975c28-shared--pool1-t29] ipc.RpcClientImpl: RPC Server Kerberos principal name for service=ClientService is hbase/hadoop.hadoop.com@HADOOP.COM

+------------------------------------------------------------------+

|          SM4_ENCRYPT(NAME)            |

+------------------------------------------------------------------+

| @@86f59edb2607b858914f2e3f90a2528a     |

+------------------------------------------------------------------+

1 row selected (1.792 seconds)

  1. 注意:使用DES加解密时,出现了这样的报错提示:“Unsupported secret key algorithmAES”,是由于JDK8 update 161之后,DH的密钥长度至少为512位,但AES算法密钥不能达到这样的长度,所以导致报错。

解决办法(JVM系统变量配置):

-Djdk.crypto.KeyAgreement.legacyKDF=true

华为大数据平台dcf需要客户端修改配置(${dcf客户端目录}/HBase/component_env),如下图:

  1. 使用phoenix自定义函数说明与命令

函数说明:

DQMS_SM4_ENCRYPT            SM4加密

DQMS_SM4_DECRYPT            SM4解密

DQMS_DES_ENCRYPT            DES加密

DQMS_DES_DECRYPT            DES解密

DQMS_DESENSITIZATION          数据脱敏

创建函数(需要先上传到HDFS)

CREATE FUNCTION DQMS_SM4_ENCRYPT(VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixSM4EncryptFunction' using jar '/tmp/hbase/udf/audaque-phoenix-udf-1.0.1.jar';

CREATE FUNCTION DQMS_SM4_DECRYPT(VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixSM4DecryptFunction' using jar '/tmp/hbase/udf/audaque-phoenix-udf-1.0.1.jar';

CREATE FUNCTION DQMS_DES_ENCRYPT(VARCHAR,VARCHAR,VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixDesEncryptFunction' using jar '/tmp/hbase/udf/audaque-phoenix-udf-1.0.1.jar';

CREATE FUNCTION DQMS_DES_DECRYPT(VARCHAR,VARCHAR,VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixDesDecryptFunction' using jar '/tmp/hbase/udf/audaque-phoenix-udf-1.0.1.jar';

CREATE FUNCTION DQMS_DESENSITIZATION(VARCHAR,VARCHAR,VARCHAR) returns VARCHAR as 'com.audaque.phoenix.udf.PhoenixDesensitizationFunction' using jar '/tmp/hbase/udf/audaque-phoenix-udf-1.0.1.jar';

删除函数:

DROP FUNCTION DQMS_SM4_ENCRYPT;

DROP FUNCTION DQMS_SM4_DECRYPT;

DROP FUNCTION DQMS_DES_ENCRYPT;

DROP FUNCTION DQMS_DES_DECRYPT;

DROP FUNCTION DQMS_DESENSITIZATION;



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。