kerberos下JAVA代碼操作hbase的方式(客戶端方式,應用程序方式)


(一)如果部署JAVA 代碼的主機用戶獲取了kerberos權限情況下

   假設主機名是:client

   su - client 登錄主機后

  kinit -kt /keytab的路徑/client.keytab client@STARYEA.COM

  編寫的java代碼入下:

  

public static void main(String[] args) throws IOException, InterruptedException {

conf = HBaseConfiguration.create();
conf.addResource("hbase-site.xml");
conf.addResource("core-site.xml");
conf.addResource("hdfs-site.xml");

--代碼正常寫不需要添加任何東西

conn = ConnectionFactory.createConnection(conf);

createTable("client:test_table_0204");
insertData("clienttest_table_0204");
QueryAll("client:test_table_0204");

conn.close();

}

 

(二)以應用程序的方式獲取kerberos認證的情況下

   假設主機名是:client

   su - client 登錄主機后

   kdestory --刪除主機的憑證,在這種情況下 JAVA代碼如下

public static void main(String[] args) throws IOException,
InterruptedException {

conf = HBaseConfiguration.create();
conf.addResource("hbase-site.xml");
conf.addResource("core-site.xml");
conf.addResource("hdfs-site.xml");

--需要添加kerberos認證
String USER = "client@STARYEA.COM";
String KEYTAB = "/etc/security/keytabs/client.keytab";

--APP需要kerberos認證
UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI(USER, KEYTAB);


ugi.doAs(new PrivilegedExceptionAction<Void>() {
   public Void run() {
     try {
      conn = ConnectionFactory.createConnection(conf);

      createTable("client:test_table_0204");
      insertData("client:test_table_0204");
      QueryAll("client:test_table_0204");
    }   catch (IOException e) {
    // TODO Auto-generated catch block
     e.printStackTrace();
}

return null;
}
});

conn.close();

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM