Hadoop多用戶作業調度器
hadoop 最初是為批處理作業設計的,當時只采用了一個簡單的FIFO調度機制分配任務,隨着hadoop的普及以及應用的用戶越來越多,基於FIFO的單用戶調度機制不能很好的利用集群資源(比如機器學習和數據挖掘對處理耗時要求不高但I/O密集,生產性作業隊實時要求高,如Hive查詢統計CPU密集,即不同的作業類型對資源要求不一致),多用戶調度器勢在必行。多用戶調度主要有兩種思路,一種是在物理集群上虛擬出多個hadoop集群,優點是實現簡單,缺點是集群管理麻煩、調度資源浪費,典型代表HOD(Hadoop on Demand);另一種是擴展Hadoop調度器,使之支持多隊列多用戶調度,典型代表是capacity scheduler 和fair scheduler。
hadoop 隊列管理機制
hadoop 以隊列為單位管理資源,用戶只能向一個或多個隊列提交作業,隊列管理分為兩方便:用戶權限管理和資源管理。管理員可以配置每個隊列的用戶和用戶組,也可以配置每個隊列的管理員,他可以kill隊列,改變隊列的優先級等;系統支援管理有調度器完成,管理員可以設置各個隊列的資源容量參數。
capacity Scheduler
capacity scheduler 主要是由yahoo實現的,主要有以下幾個特點:
- 容量保證:管理員可以設置隊列的資源使用上限
- 靈活性:如果一個隊列的資源有剩余,可以共享給其他需要資源的隊列,當此隊列需要資源時由其他隊列歸還資源。
- 多重租賃:支持多用戶共享集群和多作業同時運行。
- 支持資源密集型作業
- 支持作業優先級
hadoop 安全機制
由於hadoop 一般部署在由防火牆隔離的局域網環境之中,hadoop安全機制基本不用與考慮地域外網攻擊,更多的是保障多用戶在集群環境下安全高效的使用集群資源。Hadoop RPC 采用了SASL(Sample Authentication and Security Layer) 進行安全認證。
Kerberos 認證
kerberos 是一種網絡安全認證協議,主要概念如下:
- 客戶端(client):請求服務的用戶
- 服務端(server):向用戶提供服務的一方
- 秘鑰分發中心(kerberos key distribution center,KDC):中心化的存儲了客戶端密碼和其他賬戶信息,他接收來自客戶端的請求,驗證合法性並授予會話憑證,分為認證服務和授權服務。
- 認證服務(authentication server,AS):校驗用戶身份
- 票據授權服務(Ticket-Granting Service,TGS):驗證由AS頒發的票據,如果票據驗證通過,則頒發服務許可票據
- 票據(Ticket):用於服務器與用戶之間安全的傳輸信息,同時也附加一些標識
- 票據授權票據(Ticket-Granting Ticket,TGT):AS頒發的票據
- 服務許可票據(Service-Granting Ticket,SGT):TGS頒發的票據
kerberos 一般采用對稱加密方式,認證流程如下圖:
kerberos相對於SSL的優點:
- kerberos采用對稱加密相比SSL非對稱加密算法高效。
- 用戶管理簡單,kerberos基於第三方KDC統一管理,撤銷用戶只需移出KDC記錄,而SSL需要廣播給各個服務器
Kerberos協議本身並不能完全解決網絡安全性問題,它是建立在一些假定之上的,只有在滿足這些假定的環境中它才能正常運行:
- 不能對拒絕服務(Denial of Service)攻擊進行防護。Kerberos不能解決拒絕服務攻擊,在該協議的很多環節中,攻擊者都可以阻斷正常的認證步驟。這類攻擊只能由管理員和用戶來檢測和解決。
- 主體必須保證他們的私鑰的安全。如果一個入侵者通過某種方法竊取了主體的私鑰,他就能冒充身份。
- Kerberos無法應付口令猜測攻擊。如果一個用戶選擇了弱口令,那么攻擊者就有可能成功地用口令字典破解掉,繼而獲得那些由源自於用戶口令加密的所有消息。
- 網絡上每個主機的時鍾必須是松散同步的。這種同步可以減少應用服務器進行重放攻擊檢測時所記錄的數據。松散程度可以以一個服務器為准進行配置。時鍾同步協議必須保證自身的安全,才能保證時鍾在網上同步。
- 主體的標識不能頻繁地循環使用。由於訪問控制的典型模式是使用訪問控制列表(ACLs)來對主體進行授權。如果一個舊的ACL還保存着已被刪除主體的入口,那么攻擊者可以重新使用這些被刪除的用戶標識,就會獲得舊ACL中所說明的訪問權限。