CM&CDH入門指南

語言: CN / TW / HK

  1 - Cloudera Manager 和 CDH 的關係?

  Cloudera Manager 是管理 Hadoop 叢集的工具,而 CDH 是 Cloudera 公司對 Apache Hadoop 進行二次開發之後的 Hadoop 發行版。

  2 - 什麼是 CDH?

  CDH(全稱:Cloudera’s Distribution Including Apache Hadoop)是 Apache Hadoop 發行版的一種,也是一套目前比較完整、充分測試的 Hadoop 及其相關專案的發行版。CDH 提供 Hadoop 的核心元素:可擴充套件儲存和分散式計算,以及基於 Web 的使用者介面和重要的企業功能。CDH 是 Apache 許可的開源軟體,也是唯一提供統一批處理、互動式 SQL 和互動式搜尋以及基於角色的訪問控制的 Hadoop 解決方案。

  CDH 特性:鄭州心理諮詢多少錢http://www.hyde8731.com/

  靈活性 - 儲存任何型別的資料,並使用多種不同的計算框架進行處理,包括批處理、互動式 SQL、自由文字搜尋、機器學習和統計計算。

  整合 - 在一個完整的 Hadoop 平臺(與多種硬體和軟體解決方案配合使用)上快速啟動並執行。

  安全 - 處理和控制敏感資料。

  可擴充套件性 - 支援多種應用程式並擴充套件以滿足您的需求。

  高可用性 - 可以充滿信心的執行重要的業務任務。

  相容性 - 利用現有的 IT 基礎設施和投資。

  CDH 主要功能模組:

  

06.png

 

  3 - 什麼是 Cloudera Manager?

  Cloudera Manager(簡稱:CM) 是一個擁有叢集自動化安裝、中心化管理、叢集監控、報警功能的管理工具。

  Cloudera Manager 用於管理 CDH 叢集的端到端應用程式。Cloudera Manager 對 CDH 的每個元件都提供了細粒度的視覺化和控制,從而設立了企業部署的標準。使運維人員得以提高叢集的效能,提升服務質量,提高合規性並降低管理成本。

  Cloudera Manager 管理控制檯:

  

05.png

 

  4 - Cloudera Manager 架構設計

  Cloudera Manager 的核心是 Cloudera Manager Server。該服務承載了管理員控制檯(Admin Console Web Server)和應用程式邏輯、並負責安裝軟體、配置、啟動和停止服務,以及管理在其上的所有服務執行的叢集。

  Cloudera Manager Server 與以下幾個元件配合使用:

  Server(服務) - Cloudera Manager 的核心,主要用於管理 Web Server 和應用邏輯。

  Agent(代理) - 安裝在每臺主機上。它負責啟動和停止程序、部署配置、觸發安裝和監控主機。

  Management Service(管理服務) - 由一組執行各種監控、警報和報告功能的角色組成的服務。

  Database(資料庫) - 儲存配置和監控資訊。

  Cloudera Repository(Cloudera 儲存庫) - 由 Cloudera Manager 分配軟體的儲存庫(repo 庫)。

  Clients(客戶端) - 提供了一個與 Server 互動的介面:

  Admin Console - 管理員使用該基於 Web 的使用者介面以管理叢集和 Cloudera Manager。

  API - 開發者可使用 API 建立自定義的 Cloudera Manager 應用程式。

  

04.png

 

  5 - Cloudera Manager 心跳

  Heartbeating(心跳)是 Cloudera Manager 中的主要通訊機制。預設情況下,Agent 每 15 秒傳送一次心跳到 Cloudera Manager Server。

  通過這個心跳機制,Agent 向 Cloudera Manager Server 彙報自己的活動。反過來,Cloudera Manager Server 會響應 Agent 應執行的操作。Agent 和 Cloudera Manager Server 最終都會進行一些協調。例如,如果我們啟動一個服務,Agent 嘗試啟動相應的程序,如果這個程序啟動失敗,則 Cloudera Manager Server 會將這個啟動命令標記為失敗。

  6 - Cloudera Manager 功能

  1、四大功能

  管理 - 自動化 Hadoop 安裝,對叢集進行統一管理,如:新增、刪除節點等操作。

  監控 - 提供實時的叢集健康狀況檢視,如:節點、服務的執行狀況。

  整合 - 提供一箇中央控制檯對叢集的配置進行更改。

  診斷 - 包含全方位的報告、診斷工具及建議,以幫助優化效能和利用率。

  2、狀態管理

  Cloudera Manager Server 維護了叢集的狀態。狀態可分為兩類:model 和 runtime。兩者都儲存於 Cloudera Manager Server 的資料庫中。

  model - 包含叢集、主機、服務、角色、配置。

  runtime - 包含程序、命令。

  

01.png

 

  3、配置管理

  Cloudera Manager 定義了以下幾個級別的配置:

  服務級別 - 可定義適用於整個服務例項的配置,如:HDFS 服務的預設副本因子(dfs.replication)。

  角色組級別 - 可定義適用於角色組的配置,如:DataNode 的處理執行緒數量(dfs.datanode.handler.count),這可根據 DataNodes 的不同分組進行不同的配置。

  角色例項級別 - 可覆蓋從角色組級別繼承的配置。這種配置需要謹慎使用,因為它很容易導致角色組內的配置分歧。如:因排錯而臨時啟用除錯日誌記錄以解決某個角色例項問題。

  主機級別 - 具有與監控、軟體管理和資源管理相關的配置。

  Cloudera Manager - 具有與其自身管理操作相關的配置。

  4、程序管理

  在非 Cloudera Manager 管理的叢集中,使用 init 指令碼啟動角色例項程序,如 service hadoop-hdfs-datanode start。但在 Cloudera Manager 管理的叢集中,使用 init 指令碼啟動和停止服務將不起作用。

  在 Cloudera Manager 管理的叢集中,只能使用 Cloudera Manager 啟動或停止角色例項程序。Cloudera Manager 使用 supervisord 的開源程序管理工具,其會啟動程序、重定向日誌檔案、通知程序失敗、將呼叫程序設定有效正確的使用者 ID 等。 Cloudera Manager 支援自動重啟崩潰的程序。如果一個程序在啟動後頻繁崩潰,它也會用健康狀況不佳的標誌來標記一個角色例項。

  停止 Cloudera Manager Server 和 Cloudera Manager Agents 不會關閉您的服務;任何正在執行的角色例項都會繼續執行。

  Agent 預設開機自啟動,在啟動時由 init.d 啟動。然後,它會聯絡 Cloudera Manager Server 並確定應執行哪些程序。Agent 作為 Cloudera Manager 主機監控的一部分進行監控。如果 Agent 停止心跳,則會將主機標記為執行狀況不良。

  Agent 的主要職責之一是啟動和停止程序。當 Agent 從服務端檢測心跳檢測到新程序時,Agent 會在 /var/run/cloudera-scm-agent 中建立一個目錄,並解壓縮配置。然後,它與 supervisord 聯絡開始該過程。

  一個 Cloudera Manager 程序永遠不會單獨執行。換句話說,一個程序不僅僅是執行的命令和引數 exec(),還包括配置檔案,需要建立的目錄以及其它資訊。

  5、軟體包管理

  Cloudera Manager 的主要功能是安裝和升級 CDH 和管理其它服務。它支援兩種軟體分發格式:packages 和 parcels。

  Package - 二進位制分發格式。包含已編譯的程式碼和元資料(如包描述、版本和依賴項等)。Cloudera Manager 為每個受支援的作業系統自帶的軟體來管理 package。

  Parcel - 二進位制分發格式。包含程式檔案,與由 Cloudera Manager 使用附加元資料。

  Packages 和 Parcels 的重要區別如下:

  使用 Parcels 要求叢集由 Cloudera Manager 管理。這包括不屬於 CDH 常規部分的任何元件(如:Spark 2)。

  同一個 Parcels 可安裝多個版本,並激活其中一個。而使用 Packages 只能同時安裝一個版本並使用該版本。

  Parcels 可安裝到任何位置,預設的安裝目錄是 /opt/cloudera/parcels。而 Packages 只能被安裝在 /usr/lib 目錄下。

  通過 Parcels 安裝時,Cloudera Manager 會自動下載、分發並激活和叢集中所有主機作業系統版本一致的 Parcel 包,解決某些作業系統版本不一致問題。

  6、主機管理

  Cloudera Manager 提供了多種功能來管理 Hadoop 叢集中的主機。首次執行 Cloudera Manager 管理控制檯時,可搜尋主機並新增到叢集,一旦選擇了主機,就可以將 CDH 角色的分配到該主機。Cloudera Manager 會自動的部署所有需要的軟體:JDK、Cloudera Manager Agent、CDH、Impala、Solr 等。

  當服務部署完成並執行後,管理控制檯中的 Hosts 區域將顯示叢集中管理的主機的整體狀態。提供的資訊包括主機上執行的 CDH 版本、主機所屬的叢集以及每個主機上執行的角色數量。Cloudera Manager 提供用於管理主機的生命週期以及新增和刪除主機的操作。Cloudera Management Service 上的主機監控器角色可以監控主機的健康狀態並收集主機指標,以便我們監控主機的執行狀況和效能。

  

03.png

 

  7、資源管理

  Cloudera Manager 資源管理通過定義不同服務使用的叢集資源來確保叢集資源使用的規範性。使用資源管理可以:

  確保在合理的時間內完成關鍵工作任務。

  支援基於使用者組之間合理公平的叢集資源排程。

  防止使用者完全搶佔資源而使其它使用者不能訪問叢集。

  

02.png

 

  8、使用者管理

  通過使用者帳號可以控制訪問 Cloudera Manager 的元件。Cloudera Manager 提供了多種使用者身份認證機制。

  通過對 Cloudera Manager Database 配置對使用者進行身份驗證。

  外部身份認證服務。

  LDAP 服務(Active Directory 或 OpenLDAP 相容目錄)。

  指定其它外部服務。

  支援使用安全性宣告標記語言(SAML)的單點登入認證。

  9、安全管理

  認證 - Cloudera Manager 叢集支援 LDAP 和 Kerberos 兩種認證方式。LDAP 和 Kerberos 並不是互斥的。

  授權 - CDH 目前提供以下幾種許可權控制:

  檔案和目錄使用傳統的 POSIX-style 許可權控制, 每一個目錄和檔案都分配有一個唯一的所有者和組。每一個型別都有一組可用的基本許可權; 只需讀、寫和執行檔案許可權,目錄有一個額外的訪問子目錄的許可權。

  HDFS 的擴充套件訪問控制列表(ACLs)為 HDFS 檔案的許可權提供細粒度的控制,將檔案基於使用者或它所在的組來賦許可權。

  Apache HBase 使用 ACLs 來對列、列簇、列族限定符授權各種操作(READ, WRITE, CREATE, ADMIN)。HBase ACLs 可以向用戶和組進行賦權或者回收許可權。

  Apache Sentry 基於角色的許可權控制。

  加密 - 在叢集不同技術層級靜態資料和傳輸資料支援不同的加密方式。

  OS Filesystem-level(作業系統檔案系統級) - Cloudera Navigator Encrypt,用於獲得 Cloudera Navigator 許可證的 Cloudera 客戶。

  Network-level(網路級) - 遠端過程呼叫(RPC)。此保護使用行業標準協議(TLS/SSL)。

  HDFS-level(HDFS 級) - HDFS 透明加密。

  與作業系統檔案系統級和網路級加密不同,HDFS 透明加密是端到端的。也就是說,它可以對靜態資料加密和傳輸中的資料加密,這比實現作業系統檔案系統級和網路級加密的組合效率更高。

  10、管理服務

  Cloudera Management Service 將各種管理功能實現為一組角色。

  活動監控(Activity Monitor)

  主機監控(Host Monitor)

  服務監控(Service Monitor)

  事件服務(Event Server)

  告警釋出(Alert Publisher)

  報表管理(Reports Manager,預設未新增)