Hbase之Java API遠端存取Kerberos認證

來源:互聯網
上載者:User

標籤:記錄   sync   nts   hba   actor   format   cep   .property   遠程服務   

HbaseConnKer.java

 1 package BigData.conn; 2  3 import BigData.utils.resource.ResourcesUtils; 4 import org.apache.hadoop.conf.Configuration; 5 import org.apache.hadoop.hbase.HBaseConfiguration; 6 import org.apache.hadoop.hbase.client.Connection; 7 import org.apache.hadoop.hbase.client.ConnectionFactory; 8 import org.apache.hadoop.security.UserGroupInformation; 9 10 import java.io.IOException;11 import java.io.InputStream;12 import java.nio.file.Files;13 import java.nio.file.Paths;14 import java.util.Properties;15 16 public class HbaseConnKer {17 18     private static Connection connectionKer = null;19 20     private static volatile HbaseConnKer instanceKer;21 22     private HbaseConnKer() {23         try {24             Properties pro = ResourcesUtils.getResourceAsProperties("Kerberos/HbaseConfigKer.properties");25 26         /*   這個設定檔主要是記錄 kerberos的相關配置資訊,例如KDC是哪個IP?預設的realm是哪個?27              這個檔案是從遠程伺服器上copy下來的*/28             System.setProperty("java.security.krb5.conf", pro.getProperty("java.security.krb5.conf"));29 30             Configuration conf = HBaseConfiguration.create();31 32             // -----Kerberos配置-----33             InputStream hbaseSiteInputStream = Files.newInputStream(Paths.get(pro.getProperty("hbase.site")));34             if (hbaseSiteInputStream == null) {35                 System.out.println("The hbase-site.xml is null!");36             }37             conf.addResource(hbaseSiteInputStream);38             conf.set("hadoop.security.authentication", pro.getProperty("hadoop.security.authentication"));39 40             // 這個可以理解成使用者名稱資訊,也就是Principal41             conf.set("kerberos.principal", pro.getProperty("kerberos.principal"));42 43             UserGroupInformation.setConfiguration(conf);44             UserGroupInformation.loginUserFromKeytab(pro.getProperty("kerberos.principal"),45                     pro.getProperty("kerberos.keytab"));46             // ----------47 48             //顯示已連線的服務器49             System.out.println("串連伺服器:"+conf.get("hbase.zookeeper.quorum"));50 51             connectionKer = ConnectionFactory.createConnection(conf);52             System.out.println("建立connection成功!");53         } catch (IOException e) {54             e.printStackTrace();55         }56 57     }58 59     public static Connection getConnection() {60         return connectionKer;61     }62 63     public static HbaseConnKer getIstance() {64         // 定義一個共有的靜態方法,返回該類型執行個體65         if (instanceKer == null) {66             // 對象執行個體化時與否判斷(不使用同步代碼塊,instance不等於null時,直接返回對象,提高運行效率)67             synchronized (HbaseConnKer.class) {68                 // 同步代碼塊(對象未初始化時,使用同步代碼塊,保證多線程訪問時對象在第一次建立後,不再重複被建立)69                 if (instanceKer == null) {70                     // 未初始化,則初始instance變數71                     instanceKer = new HbaseConnKer();72                 }73             }74         }75         return instanceKer;76     }77 }

 

HbaseConfigKer.properties

# HBase confighbase.zookeeper.quorum=20.1.1.93hbase.zookeeper.property.clientPort=2181java.security.krb5.conf=src/main/resources/Kerberos/krb5.confhadoop.security.authentication=kerberoshbase.site=src/main/resources/Kerberos/hbase-site.xmlkerberos.keytab=src/main/resources/Kerberos/XXX.keytab[email protected]

 

Hbase之Java API遠端存取Kerberos認證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.