基于华为FusionInsightHD的HBase自定义函数配置流程介绍
HBase自定义函数流程说明
配置流程
将编写好的HBase自定义函数打成jar,注意将依赖的框架全部打包到jar文件中。
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> <!-- 自定义函数,存储jar的hdfs目录 -- > <property> <name>hbase.dynamic.jars.dir</name> <value>hdfs://填写自己的/hbase/lib</value> </property> |
3.如果是华为FusionInsight HD则需要在配置上述name和value值(华为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) |
注意:使用DES加解密时,出现了这样的报错提示:“Unsupported secret key algorithm:AES”,是由于JDK8 update 161之后,DH的密钥长度至少为512位,但AES算法密钥不能达到这样的长度,所以导致报错。
解决办法(JVM系统变量配置):
-Djdk.crypto.KeyAgreement.legacyKDF=true |
华为大数据平台dcf需要客户端修改配置(${dcf客户端目录}/HBase/component_env),如下图:
使用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; |
- 点赞
- 收藏
- 关注作者
评论(0)