1. 程式人生 > >使用Hadoop API訪問Kerberos 安全HDFS

使用Hadoop API訪問Kerberos 安全HDFS

使用kerberos下安全Hadoop時,通常是在linux系統下使用kinit命令進行身份認證,下面提供一種在java api中認證的方式:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.SecurityUtil;
import org.apache.hadoop.security.UserGroupInformation;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by sure on 15-5-12.
 */
public class HdfsKerberos {
    static Configuration conf = new Configuration();
    public static void main(String[] args) throws IOException {
        //keytab檔案的路徑
        conf.set(KEYTAB_FILE_KEY, "/opt/sure.keytab");
        //principal
        conf.set(USER_NAME_KEY, "sure");
        login(conf);
        System.out.println(loadHdfsFile("/trident/trident-1-0-1431409180775.txt"));
    }
    public static List<String> loadHdfsFile(String filePath){
        List<String> resultList = new ArrayList<>();
        FileSystem fileSystem = null;
        try {
            fileSystem = FileSystem.get(conf);
            FSDataInputStream fs = fileSystem.open(new Path(filePath));
            BufferedReader bis = new BufferedReader(new InputStreamReader(fs,"UTF-8"));
            String line;
            while ((line = bis.readLine()) != null) {
                resultList.add(line);
            }
            fileSystem.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultList;
    }
    public static final String KEYTAB_FILE_KEY = "hdfs.keytab.file";
    public static final String USER_NAME_KEY = "hdfs.kerberos.principal";
    public static void login(Configuration hdfsConfig) throws IOException {
        if (UserGroupInformation.isSecurityEnabled()) {
            String keytab = conf.get(KEYTAB_FILE_KEY);
            if (keytab != null) {
                hdfsConfig.set(KEYTAB_FILE_KEY, keytab);
            }
            String userName = conf.get(USER_NAME_KEY);
            if (userName != null) {
                hdfsConfig.set(USER_NAME_KEY, userName);
            }
            SecurityUtil.login(hdfsConfig, KEYTAB_FILE_KEY, USER_NAME_KEY);
        }
    }
}


相關推薦

使用Hadoop API訪問Kerberos 安全HDFS

使用kerberos下安全Hadoop時,通常是在linux系統下使用kinit命令進行身份認證,下面提供一種在java api中認證的方式: import org.apache.hadoop.conf.Configuration; import org.apache.ha

Hadoop api訪問 01讀取檔案練習

//編譯工具   eclipse   import java.net.MalformedURLException; import java.net.URL;   public class FangWenDemo {    static{  

使用API訪問開啟kerberos叢集下的HDFS

使用API訪問開啟安全Kerberos的Hdfs hadoop叢集(cdh叢集)在開啟kerberos安全認證方式後,通常如果在叢集shell客戶端通過hadoop dfs命令訪問的,經過kinit

Structure Streaming和spark streaming原生API訪問HDFS檔案資料對比

此文已由作者嶽猛授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 Structure Stream訪問方式 code examples import org.apache.spark.sql.streaming._ val df = spark.

Java API 訪問HA模式下的HDFS叢集

在使用Hadoop Java API訪問HDFS叢集時,在建立FileSystem物件時,直接指定NameNode的IP以及埠號即可。但是在HA模式下,訪問HDFS叢集卻有一些不同,需要指定NameSpace和主備NameNode的IP以及埠等資訊,具體操作方式見如下程式碼: Configura

管理API訪問令牌的最佳安全實踐

【51CTO.com快譯】如今,無論是基於Web的應用、還是本地原生的各種程式,都需要通過後端的API來實現資源的訪問保護。要想得到API的授權,各種訪問請求就必須包含相應的訪問令牌或金鑰。本文將向API提供者和應用程式開發人員重點介紹,我們在管理訪問令牌中的各種最佳安全實踐。 管理AP

java能否實現訪問kerberos和simple安全級別的兩個叢集

走過路過的java/hadoop大神,幫忙給看看。現在我的java程式,需要同時實現對多個叢集的讀寫,這些叢集分別由kerberos和simple這樣不同的安全級別,我是在方法中用分支實現的,但是訪問時,總是會出現互相影響的情況,基本有兩種異常。 如果simple叢集訪問成

Hadoop生態圈-開啟Ambari的Kerberos安全選項

          Hadoop生態圈-開啟Ambari的Kerberos安全選項                                        作者:尹正傑  版權宣告:原創作品,謝絕轉載!否則將追究法律責任。       在完成IPA-Server服

hadoop分散式檔案系統(HDFS)常用API學習

1、org.apache.hadoop.fs.FileSystem 範圍 方法 返回值 描述 addDelegationTokens(String renewer, Cre

通過API訪問HDFS

一、通過 java.net.URL 1.在ubuntu下開啟eclipse 2.建立專案 3.匯入hadoop所有jar包  Build Path --->Configure  Build Path ---> Add External JARs ---&g

【筆記】JAVA API 訪問 HDFS

1.獲取HDFS檔案系統 public static FileSystem getFileSystem(){ //讀取配置檔案 Configuration conf = new Configur

Hadoop 系列(七)—— HDFS Java API

一、 簡介 想要使用 HDFS API,需要匯入依賴 hadoop-client。如果是 CDH 版本的 Hadoop,還需要額外指明其倉庫地址: <?xml version="1.0" encoding="UTF-8"?> <project xmln

Hadoop化繁為簡—hdfs的核心剖析

數據 blog args mis javaapi 區別 原理 site 公鑰 層層遞進-解開hdfs的面紗   1、hdfs是什麽?它與普通服務器的文件系統有什麽區別?它的特性有什麽?   2、hdfs的工作原理是怎樣的?   3、每臺機器都單獨啟動有什麽弊端?假設有

<順序訪問><隨機訪問><HDFS>

arc 發生 hat ide oop lar 訪問慢 jump 新的 Overview 如果你了解過HDFS,至少看過這句話吧: HDFS is a filesystem designed for storing very large files with stream

hadoop 使用ip配置導致hdfs啟動失敗

hadoop $2 value servers 無法 col reg dfs property dataNode 有守護進行,但hdfs web頁面上顯示沒有live node。 錯誤日誌: 2017-06-21 17:44:59,513 ERROR org.apa

Hadoop源碼學習之HDFS(一)

-a node bsp ima 數據 layout 版本號 name 技術   Hadoop的HDFS可以分為NameNode與DataNode,NameNode存儲所有DataNode中數據的元數據信息。而DataNode負責存儲真正的數據(數據塊)信息以及數據塊的ID。

Linux運維之道之ENGINEER1.2(HTTP服務基礎,網頁內容訪問安全web)

達內 linux運維engineer ENGINEER1.2HTTP服務基礎基於B/S架構的網頁服務----服務端提供頁面;----瀏覽器下載並顯示頁面;--------------------------------------------------------------------------

利用JAVA API遠程進行HDFS的相關操作

測試 call 文件重命名 spa getname created ces 一段時間 action 學習HDFS有一段時間了,現在把自己總結的HDFS的相關操作代碼展示給大家。 主要有HDFS的增刪改查,文件的追加,windows本地文件的上傳,hdfs文件的下載,文件重命

asp.net web api 接口安全與角色控制

unix時間戳 客戶 unix時間 space nal gui 接口安全 不同的 ict 1 API接口驗證與授權 JWT JWT定義,它包含三部分:header,payload,signature;每一部分都是使用Base64編碼的JSON字符串。之間以句號分隔。sign

使用過濾器對mvc api接口安全加密

display 控制 aspnet 示例 .com res 過度設計 sys req asp.net api接口安全 安全要求: b1.防偽裝攻擊(案例:在公共網絡環境中,第三方 有意或惡意 的調用我們的接口) b2.防篡改攻擊(案例:在公共網絡環境中,請求頭/查詢字