Cloudera Hadoop-Cloudera大數據平台介紹
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
由於Hadoop深受客戶歡迎,因此許多公司都推出了各自版本的Hadoop,也有一些公司圍繞Hadoop開發產品。在Hadoop生態系統中,規模最大,知名度最高的公司就是Cloudera,2008年成立的Cloudera是最早將Hadoop商用的公司,為合作伙伴提供Hadoop商用解決方案。
Cloudera企業解決方案包括Cloudera Hadoop發行版(Cloudera's Distribution Including Apache Hadoop,簡稱CDH),Cloudera Manager(CM)等。概括起來說,Cloudera提供一個可伸縮,穩定的,綜合的企業級大數據管理平台,它擁有最多的部署案例,提供強大的部署,管理和監控工具。
一.Cloudea簡介
眾所周知,Hadoop是一個開源的項目,所以很多公司在這個基礎上進行商業化,在Hadoop生態系統中,規模最大,知名度最高的公司則是Cloudera,目前Intel已經成為額Cloudera最大的戰略股東。Cloudera的客戶有很多知名公司,如哥倫比亞廣播公司,eBay,摩根大通,迪士尼等。 Cloudera提供一個可擴展,靈活的,集成的企業級大數據管理平台,可用來方便地管理你的企業中快速增長的多種多樣的數據。業界領先的Cloudera產品和解決方案使你能夠部署並管理Apache Hadoop及其相關項目,操作和分析你的數據,以及保護數據的安全。 Cloudera提供下列產品和工具: (1)CDH Cloudera 分發的 Apache Hadoop 和其他相關開放源代碼項目,包括 Cloudera Impala 和 Cloudera Search,Cloudera Kudu等。CDH 還提供安全保護以及與許多硬件和軟件解決方案的集成。 (2)Cloudera Imapala Impala最初由Cloudera公司開發的,其最初設計動機是充分結合傳統數據庫與大數據系統Hadoop的優勢,構造一個全新的,支持SQL與多租戶,並具備良好的靈活性和擴展性的高性能查詢引擎。 Cloudera結合傳統數據庫與大數據系統Hadoop各自優點,利用C++語言構造了一個全新的高性能查詢引擎Impala。在Cloudera的測試中,Impala的查詢效率比Hadoop生態系統中的SQL引擎Hive有數量級的提升。 您可以通過 Cloudera Manager 用戶界面管理 Impala 及其他 Hadoop 組件,並通過 Sentry 授權框架保護其數據。 詳情請參考:https://www.cnblogs.com/yinzhengjie/p/10859658.html (3)Cloudera Search 提供近實時訪問已存儲的數據,或者攝取到Hadoop以及HBase中去。Search提供了近實時的索引,全文檢索和Dirll-Down(下鑽)的導航,以及一個簡單的全文所有接口,只需要一些NoSQL或者編程基礎(技能)即可使用。完全集群的數據處理平台Search使用了在CDH中靈活的,可擴展的,可靠的存儲系統。這樣就不再需要在基礎設施層或業務層移動大量的數據了,也不需要產生新的任務。 (4)Cloudera Manager 一個復用與部署,管理,和監控的CDH大數據平台的應用程序。Cloudera Manager提供Admin Console,這是基於Web的用戶界面,使得企業數據管理更加容易方便。Coudera Manager易於升級和安裝Hadoop組件,還提供了在幾分鍾之內建立集群主節點的高可用(High Availability)。它還包括Cloudera Manager API,可用來獲取集群運行狀態以及配置Coudera Manager。 (5)Cloudera Kudu Kudu是Cloudera公司用c++語言開源的列式存儲引擎,專門為了對快速變化的數據進行快速分析,填補了以往Hadoop存儲層的空缺。 kudu是一個強類型的純列式存儲數據庫。類似於HBase,Kudu的表是由很多數據子集構成的,表被水平拆分成多個Tablet(類似於HBase的Region),這些Tablet被散布到不同機器上,以實現分布式的存儲存儲和讀寫。 詳情請參考:https://www.cnblogs.com/yinzhengjie/p/10915819.html (6)Cloudera Naviator 定位為Hadoop提供數據管理和監管的工具,它簡化了存儲和密鑰的管理。Cloudera Navigator中強的數據審計和數據保護使企業能夠滿足嚴格的規范限制並遵從相關法規。 博主推薦閱讀一 : https://www.cloudera.com/documentation/enterprise/5-16-x/topics/introduction.html。 博主推薦閱讀二 : https://www.cloudera.com/documentation/enterprise/5-16-x/topics/release_notes.html。
二.Coludera的Hadoop發行版CDH簡介
1>.CDH概述
Cloudera提供了Hadoop的商業發行版本CDH(Cloudera's Distribution Including Apache Hadoop),能夠十分方便地對Hadoop集群進行安裝,部署和管理。是目前比較完整的,充分測試的Hadoop及其相關項目的發行版。CDH的基礎組件均基於Apache License開源,無論個人學習還是企業使用都比較有保障。 如下圖所示(官方鏈接:https://www.cloudera.com/documentation/enterprise/5-16-x/topics/cdh_intro.html),CDH是Cloudera發布的一個自己封裝的Hadoop商業版軟件發行包,里面不僅包含了Cloudera的商業版Hadoop,同時CDH中也包含了各類常用的開源數據處理與存儲框架,如Spark,Hive,HBase等。 部署Hadoop集群的時候,可以選擇Cloudera Express免費版本。這個版本包含了CDH以及Cloudera Manager核心功能,提供了對集群的管理功能,比如自動化部署,中心化管理,監控,診斷功能等。另外,Cloudera Express免費版本對集群節點數目是無限制的。收費的Cloudera Enterprise擁有高級管理功能,如提供商業技術支持,自動化備份和災難恢復,記錄配置歷史及回滾等,而這些功能Cloudera Express則沒有。
2>.CDH各個版本說明
(1)CDH6 CDH的大版號目前編到6,我們簡稱CDH 6,其Hadoop核心組件對應社區的3.0.0版本,並在該版本基礎上打上各種補丁。在大版本好的后面跟有2位小版本號。 CDH 6下載地址 : https://archive.cloudera.com/cdh6/ (2)CDH5 CDH 5的hadoop核心組件對應社區的2.6.0版本,並在該版本基礎上打上了各種補丁。 CDH 5下載地址 : https://archive.cloudera.com/cdh5/ (3)CDH4 CDH4對應Hadoop核心組件2.0,目前還能從Cloudera倉庫下載到,但是不推薦使用(信息的小伙伴可以發現該版本最近一次更新時間是2017-9-21日,過了這么久不更新估計以后會停止技術支持!)。 CDH 4下載地址 :https://archive.cloudera.com/cdh4/ (4)CDH3 CDH3以及更早的版本對應Hadoop核心組件1.x(包括0.22x之前),目前已經下載不到,如果有這樣版本的集群,應盡快備份數據和升級。
3>.CDH特性
(1)靈活性: 能夠存儲各種類型的數據,並使用各種不同的計算框架進行操作,包括批處理,交互式SQL,文本搜索,集群學習和統計計算等。 (2)集成性: 能夠快速集成和運行一個完整的Hadoop平台,適用於各種不同的硬件和軟件。 (3)安全性: 處理和控制敏感數據。 (4)擴展性: 能夠部署多種應用,並擴展和擴充它們以滿足你的需求。 (5)高可用性: 可以放心地用於關鍵的商業任務。 (6)兼容性: 可以利用你現有的IT基礎設施和投資。
4>.CDH和Apache Hadoop對比
Hadoop大致可分為Apache Hadoop和第三方發行版本Hadoop。考慮到Hadoop集群部署的高效性,集群的穩定性以及后期集中的配置管理,業界大多使用Cloudera公司的發行版CDH。 Apache Hadoop社區版本雖然完全開源免費,但是也存在諸多問題: (1)版本管理比較混亂,讓人有些無所適從; (2)集群部署配置較為復雜,通常安裝集群需要編寫大量的配置文件,分發到每一台節點上,容易出錯,效率低下; (3)對集群的監控,運維,需要安裝第三方的其他軟件,運維難度比較大; (4)在Hadoop生態圈中,組件的選擇和使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等,需要大量考慮兼容性的問題,經常會浪大量的時間去編譯組件,解決版本沖突問題。 CDH版本的Hadoop的優勢在於: (1)基於Apache協議,100%開源,版本管理清晰; (2)在兼容性,安全性,穩定性上比Apache Hadoop有大幅度的增強; (3)運維簡單方便,對於Hadoop集群提供管理,診斷,監控,配置更改等功能,使得運維工作非常高效,而且集群節點越來越多,優勢越明顯。 (4)CDH提供成體系的文檔,很多大公司的應用案例以及商業支持等。
三.Cloudera Manager大數據平台管理介紹
1>.Cloudera Manager概述
Cloudera Manager(簡稱CM)是為了便於在集群中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集群中主機,Hadoop,Hive,Spark等服務的安裝和配置做了極大的簡化。他是Hadoop集群的軟件分發及管理平台,通過它可以快速部署好一個Hadoop集群,並對集群的節點及服務進行實時監控。
CM是一種管理CDH集群的端到端的應用。CM通過對CDH集群的各部分提供精細的可視化和控制,建立企業級部署標准,增強了操作人員的能力以提升性能,提升服務質量,提高合規性,降低管理成本。
通過CM,技術人員可以很容易地部署和集中化操作CDH技術站和其他可托管的服務。它使安裝過程自動化,使部署時間從幾個星期減少到幾個分鍾;提供了一個集群范圍,實時的主機和服務運行情況的視圖;提供了一個單一的中央控制器,對集群配置進行變更;並采用全方位的報告和診斷工具來幫助你優化性能和利用率。
2>.Cloudera Manager架構
Cloudera Manager的整體架構圖如下圖所示,CM的核心是Cloudera Manager Server。Server承載了管理員控制台(Admin Console Web Server)和應用邏輯,並負責安裝軟件,配置,啟動,停止服務,以及管理運行有服務的集群。 官方鏈接:https://www.cloudera.com/documentation/enterprise/5-16-x/topics/cm_intro_primer.html#concept_kmf_mss_vk。
Cloudera Manager的核心是Cloudera Manager Server,它包括以下組件: (1)Server 托管Admin Console Web Server和應用程序邏輯。它負責安裝軟件,配置,啟動和停止服務以及管理運行服務的集群。 (2)Agent 安裝在每台主機上,它負責啟動和停止進程,解壓縮配置,觸發安裝和監控主機。 定期發送檢測信號(心跳信息)給CM,默認情況下,Agent每隔15秒向Cloudera Manager Server發送一次檢測信號。然而為了減少用戶等待時間(延遲),當狀態發生變化時會提高頻率。如果Agent停止檢測信號(心跳信息),主機將被標記為運行狀態不良。 心跳信息的交換過程中,Agent通知CMS其自身的活性。反過來,CMS使用該消息對應執行的操作進行響應。Agent和CMS兩者最終會達成一致,例如當啟動一個服務時,Agent會嘗試啟動相關的進程;如果一個進程啟動失敗,CMS會將啟動命令標記為失敗。 (3)Managerment Server 執行各種監控,報警和報告功能的一組角色的服務。 (4)Database 存儲配置和監控信息。通常,多個邏輯數據庫在一個或多個數據庫服務器上運行。例如,CMS和監控服務使用不同的邏輯數據庫。 (5)Cloudera Repository 可供Cloudera Manager分配軟件的存儲庫(repo庫),換句話說,就是為CM提供用於軟件分發的倉庫。 (6)Client 用於與服務器進行交互的接口。包括Admin Console和API。 (7)Admin Cosole 管理控制台,管理員使用該基於Web的界面管理集群和CM。 (6)API Cloudera 產品具有開發的特性,所有在Cloudera Manager界面上提供的功能,通過API都可以完成同樣的工作,這些API都是標准的REST API。開發人員使用API甚至可以創建自定義的Cloudera Manager應用程序。 Cloudera Management Server可作為一組角色實時各種管理功能: (1)Activity Monitor 收集有關服務運行活動的信息。 (2)Host Monitor 收集有關主機的運行狀況和指標信息。 (3)Service Monitor 收集有關服務的運行狀況和指標信息。 (4)Event Server 聚合組件的時間並將其用於警報和搜索。 (5)Alert Publisher 為特定類型的時間生成和提供警報。 (6)Reports Manager 生成圖表報告,提供用戶組的目錄的磁盤使用率,磁盤IO等歷史視圖。
3>.Cloudera Manager功能概述
一.狀態管理 (1)Cloudera Manager Server 維護了集群的各種狀態。狀態可分為兩類:模塊和運行時,兩者都存儲於CMS的數據庫中。 (2)模塊包含集群,主機,服務,角色,配置。運行時包含進程,命令。 二.配置管理(CM在多個層面定義了配置) (1)服務層面 可定義整個服務實例層面的配置,如HDFS服務的默認副本因子, (2)角色組層面 可定義某個角色組的配置,如DataNode的處理線程數量,可根據DataNodes的不同分組進行不同的配置。 (3)角色層面 可覆蓋從角色層面繼承的配置。這種配置需要謹慎使用,因為會造成角色組中的配置分歧。如因為拍錯需求臨時啟用某個角色實例的DEBUG日志。 (4)主機層面 根據監控,軟件管理,資源管理的不同有不同的配置。 (5)CM自身也有很多與管理操作相關的配置。 三.進程管理 (1)非CM管理的集群使用腳本進行角色進程的啟動,但在CM管理的集群中這類腳本不起作用。 (2)CM管理的集群中,只能使用CM進行角色進程的啟停,CM使用開源的進程管理名為supervisord,其會啟動進程,重定向日志,通知進程失敗,為進程設置正確的用戶ID等等。CM支持自動重啟一個崩潰的進程。如果一個進程在啟動會頻繁崩潰,還會被大聲非健康標記。 (3)停止CMS和CM代理不會使正在運行的進程被中止。 四.軟件包管理 CM支持兩種軟件分發格式:packages和parcels。 (1)package 是一種二進制分發格式,包含編譯的代碼和元數據如包描述,版本,依賴項。包管理系統評估此元數據以允許包搜索,執行升級,確保包的所有依賴關系得到滿足。CM使用本地操作系統支持的包管理程序。 (2)parcel 也是一種二進制分發格式,包含CM需要使用的附加元數據。其余package的卻別有:可安裝同一個parcel的多個版本,並激活其中一個;parcel可安裝到任何路徑;通過parcel安裝,CM會自動下載並激活和每個節點操作系統版本匹配的parcel包,解決某些操作系統版本不一致問題。 五.主機管理 (1)CM提供了多種功能以管理Hadoop集群的主機。第一次運行CM管理控制台時,可搜索主機並添加到集群,一旦選中了主機就可以為其分配CDH角色。CM會在主機上自動部署作為集群托管節點所有軟件:JDK,CM agent,CDH,Impala,Solr等等。 (2)服務部署並運行后,管理員控制台中的“Hosts”區域顯示集群中托管主機的總體狀態。提供的信息包括主機上的CDH版本,主機所屬的集群,運行在主機上的角色的數量。Cloudera管理服務中的主機監控角色執行監控檢查並收集主機的統計信息,以允許你監控主機的監控和性能。 六.資源管理 CM允許使用兩種資源管理方式: (1)靜態資源池 使用Linux cgroups在多個服務間靜態進行資源隔離,如HBase,Impala,Yarn分別使用一定百分比的資源。靜態資源池默認不啟用。 (2)動態資源池 用於某些服務內部的資源管理,如Yarn的各種資源調度器,Impala也可對不同池中的查詢動態分配資源。 七.用戶管理 (1)訪問CM通過用戶賬戶進行控制。用戶賬戶標識如何對用戶進行身份驗證,並確定授予用戶的權限。 (2)CM提供了多種用戶認證機制。可以配置CM使用CM數據庫認證用戶,或使用某種外部認證服務。外部認證服務可以是LADP服務器,或者指定的其他服務。CM還支持使用安全斷言標記語言(SAML)來實現單點登錄。 八.安全管理 (1)認證: 認證是指用戶或服務證明其有訪問某種系統資源的權限。Cloudera集群支持操作系統認證,LDAP,Kerberos等認證方式。LDAP和Kerberos並不是互斥的,很多時候可以一起使用。 (2)授權: 授權關注誰可以存取或控制指定的資源或服務。CDH目前支持以下幾種權限控制: 1>.傳統的POSIX形式的目錄和文件權限控制; 2>.HDFS擴展的ACL細粒度權限控制; 3>.HBase可對用戶和組設置各種操作的ACL; 4>.使用Apache Sentry進行基於角色的全下控制; (3)加密: 集群不同層面存儲和傳輸的數據支持不同的加密方式。 九.Cloudera管理服務 Cloudera Management Service 實現了多種管理特性,包括活動監視,主機監控,服務監控,時間服務,告警發布,報表管理等。
4>.Cloudera Manager基本核心功能
Cloudera Manager作為Hadoop大數據平台的管理工具,能夠有效地幫助用戶更容易地使用Hadoop。他的核心功能分為四大模塊:管理功能,監控功能,診斷功能和集成功能。 一.Cloudera Manager提供的管理功能 (1)批量自動化部署節點 CM提供強大的Hadoop集群部署能力,能夠批量的自動化部署節點。安裝一個Hadoop集群只需添加安裝的節點,安裝需要的組件和服務角色這三步,大大縮短了Hadoop的安裝時間,也簡化來Hadoop的安裝過程。 (2)可視化的參數配置功能 Hadoop包含許多組件,不同組件都包含各種各樣的XML配置文件。CM提供界面GUI可視化參數配置功能。 (3)智能參數驗證以及優化 當用戶配置部分參數值有問題時,CM會給出智能錯誤提示,幫助用戶更合理地修改配置參數。 (4)高可用配置 CM對關鍵的組件使用HA部署,如NameNode高可用可以通過CM的Web管理界面,根據向導啟用HDFS HA。 (5)權限管理 提供不同級別的管理權限,比如只度用戶訪問Cloudera Manager的界面時,所有服務對應的啟停等操作選項都不可用。 二.Cloudera Manager提供的監控功能 (1)服務監控 查看服務和實力級別健康檢查的結果,對設置的各種指標和系統運行情況進行全面監控。如果任何運行情況測試是不良(Bad),則服務或者角色的狀態就是不良(Bad)。如果結果運行狀況存在隱患(Concering,沒有任意一項目是不良(Bad)),則服務或者角色的狀況就是存在隱患(Concerning)。而且系統會對管理員應該采取得到行動提出建議。 (2)主機監控 監控集群內所有主機的有關信息,包括主機上目前消耗的內存,主機上運行的角色分配等,不但顯示所有集群主機的匯總視圖,而且能進一步顯示單個主機關鍵指標詳細視圖。 (3)行為監控 CM提供來列表和圖表來查看集群上進行的活動,不僅顯示當前正在執行的任務行為,還可以通過儀表盤查看歷史活動。 (4)事件活動 監控界面可以查看事件,系統管理員可以通過時間范圍,服務,主機,關鍵字等信息過濾事件。 (5)報警 通過配置CM可以對指定的時間產生警報,並通過電子郵件或者SNMP的事件得到制定的警報通知。 (6)日志和報告 可以輕松點擊一個鏈接查看相關的特定服務的日志條目,並且Cloudera Manager可以將收集的歷史日志監控數據統計生成報表。 三.Cloudera Manager提供的診斷功能 (1)周期性服務診斷 CM會對集群中運行的服務進行周期性的運行狀況測試,以檢測這些服務的狀態是否正常。如果有異常情況,就會進行告警,有利於更早地讓用戶感知集群服務存在的問題。 (2)日志采集及檢索 對於一個大規模的集群,CM提供了日志收集功能,能夠通過統一的界面查看集群中每台及其,各項服務的日志,並且能夠根據日志級別等不同的條件進行檢索。 (3)系統性能使用報告 CM能夠查看系統性能使用報告,包括集群的CPU使用率,單節點的CPU使用率,單個進程的CPU使用率等各項性能數據,這對於Hadoop集群的性能調試很重要。 四.Cloudera Manager提供的集成功能 (1)安全配置 為了方便Hadoop大數據平台與原有身份認證系統如AD,LDAP等的集成,CM只需在界面上配置即可完成。 (2)Cloudera Manager API 通過Cloudera Manager API,能夠方便地將CM集成到企業原有管理系統集成。 (3)SNMP集成 CM也提供了方便的SNMP集成能力,只要簡單的配置,就能夠將SNMP進行集成,並且將集群中的告警信息進行轉發。
5>.Cloudera Manager高級功能
Cloudera Manager的高級功能在免費的Express版本中是不提供的。 (1)軟件升級滾動 Hadoop版本升級和bug修復,通常會影響業務的連續性。CM提供了滾動升級的功能,支持Hadoop平台進行滾動升級時繼續對外提供服務以及應用。 (2)參數版本控制 任何時候進行配置修改並保存之后,Cloudera Manager會對該配置生成一個版本。Cloudera Manager支持查看歷史配置,並回滾到不同版本,從而為集群恢復,問題診斷等提供了一個可靠的一句和方便的工具。 (3)備份及容災系統BDR Cloudera為Hadoop平台提供一個集成的,易用的災備解決方案。BDR為災備方案提供了豐富的功能,CM和BDR提供了完整的用戶畫像,實現界面化的數據備份與災難恢復。 (4)數據審計 Cloudera Navigator的審計功能支持對數據的審計和訪問。 (5)安全集成向導 啟用Kerberos集成和外部安全認證集成,如支持通過內部數據庫和外部服務進行用戶認證。 更多關於CM Express和付費版本功能對比表如下所示:
6>.CM和CDH安裝方式
方法一: 使用使用一站式的二進制安裝包,適合短期的小項目,會使用內置的PostgreSQL作為元數據庫,如果你對該數據庫運維知識掌握不是很清楚的話,不推薦使用該方法。因為它是一種類似於鏡像文件的軟件。 方法二: 手動安裝數據庫(支持Oralce,MySQL/MariaDB,PostgreSQL),手動安裝CM,再通過CM安裝各個組件。這也是比較喜歡用的一種方式。(我們會演示這種安裝方式) 方法三: 使用tar包編譯安裝,適合需要定制開發的場景,或者使用puppet等自動化運維工具進行安裝。這種方式甚至可以不裝CM只裝CDH即可。感興趣的小伙伴可以研究一下喲~
7>.CM的下載地址
CM 6: 關於CM的bin下載地址 https://archive.cloudera.com/cm6/6.2.0/ 關於CM的rpm下載地址 https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/ 關於CM的tar包下載地址 https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/ CM 5: 關於CM的bin下載地址 https://archive.cloudera.com/cm5/installer/5.16.1.1/ 關於CM的rpm下載地址 https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/ 關於CM的yum源下載地址 https://archive.cloudera.com/cm5/repo-as-tarball/5.16.1/ 關於CM的tar包下載地址 http://archive.cloudera.com/cm5/cm/5/