Skip to content

Commit 57a3b8a

Browse files
author
xuchao
committed
添加对hadoop(非Kerberos) 写入 hbase(开启kerberos)兼容问题
1 parent 43753a4 commit 57a3b8a

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

core/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,18 @@
108108
<groupId>org.apache.flink</groupId>
109109
<artifactId>flink-yarn_2.11</artifactId>
110110
<version>${flink.version}</version>
111+
<exclusions>
112+
<exclusion>
113+
<groupId>org.apache.flink</groupId>
114+
<artifactId>flink-shaded-hadoop2</artifactId>
115+
</exclusion>
116+
</exclusions>
117+
</dependency>
118+
119+
<dependency>
120+
<groupId>org.apache.flink</groupId>
121+
<artifactId>flink-shaded-hadoop2</artifactId>
122+
<version>2.7.5-1.8.1</version>
111123
</dependency>
112124

113125
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-statebackend-rocksdb -->

hbase/hbase-sink/src/main/java/com/dtstack/flink/sql/sink/hbase/HbaseConfigUtils.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919
package com.dtstack.flink.sql.sink.hbase;
2020

2121
import org.apache.hadoop.conf.Configuration;
22+
import org.apache.hadoop.security.HadoopKerberosName;
2223
import org.apache.hadoop.security.UserGroupInformation;
24+
import org.apache.hadoop.security.authentication.util.KerberosName;
2325
import org.slf4j.Logger;
2426
import org.slf4j.LoggerFactory;
27+
import sun.security.krb5.Config;
28+
import sun.security.krb5.KrbException;
2529

2630
import java.io.IOException;
2731

@@ -54,7 +58,11 @@ public class HbaseConfigUtils {
5458
public static final String KEY_JAVA_SECURITY_KRB5_CONF = "java.security.krb5.conf";
5559
public static final String KEY_ZOOKEEPER_SASL_CLIENT = "zookeeper.sasl.client";
5660

57-
public static UserGroupInformation loginAndReturnUGI(Configuration conf, String principal, String keytab) throws IOException {
61+
public static final String KEY_HADOOP_SECURITY_AUTHENTICATION = "hadoop.security.authentication";
62+
public static final String KEY_HADOOP_SECURITY_AUTH_TO_LOCAL = "hadoop.security.auth_to_local";
63+
public static final String KEY_HADOOP_SECURITY_AUTHORIZATION = "hadoop.security.authorization";
64+
65+
public static UserGroupInformation loginAndReturnUGI(Configuration conf, String principal, String keytab) throws IOException, KrbException {
5866
LOG.info("loginAndReturnUGI principal {}",principal);
5967
LOG.info("loginAndReturnUGI keytab {}",keytab);
6068
if (conf == null) {
@@ -69,7 +77,13 @@ public static UserGroupInformation loginAndReturnUGI(Configuration conf, String
6977
throw new IllegalArgumentException("keytab can not be null");
7078
}
7179

72-
conf.set("hadoop.security.authentication", "Kerberos");
80+
conf.set(KEY_HADOOP_SECURITY_AUTHENTICATION, "Kerberos");
81+
//conf.set("hadoop.security.auth_to_local", "DEFAULT");
82+
conf.set(KEY_HADOOP_SECURITY_AUTH_TO_LOCAL, "RULE:[1:$1] RULE:[2:$1]");
83+
conf.set(KEY_HADOOP_SECURITY_AUTHORIZATION, "true");
84+
85+
Config.refresh();
86+
KerberosName.resetDefaultRealm();
7387
UserGroupInformation.setConfiguration(conf);
7488

7589
return UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keytab);

hbase/hbase-sink/src/main/java/com/dtstack/flink/sql/sink/hbase/HbaseOutputFormat.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private void openConn(){
112112
}
113113

114114
}
115-
private void openKerberosConn() throws IOException {
115+
private void openKerberosConn() throws Exception {
116116
conf.set(HbaseConfigUtils.KEY_HBASE_ZOOKEEPER_QUORUM, host);
117117
conf.set(HbaseConfigUtils.KEY_HBASE_ZOOKEEPER_ZNODE_QUORUM, zkParent);
118118

0 commit comments

Comments
 (0)