1. 程式人生 > >Cloudera(CDH) 簡介和線上安裝

Cloudera(CDH) 簡介和線上安裝

Cloudera 簡介

CDH是Apache Hadoop和相關專案的最完整,經過測試的流行發行版。 CDH提供了Hadoop的核心元素 - 可擴充套件的儲存和分散式計算 - 以及基於Web的使用者介面和重要的企業功能。 CDH是Apache許可的開放原始碼,是唯一提供統一批處理,互動式SQL和互動式搜尋以及基於角色的訪問控制的Hadoop解決方案。

Cloudera作為一個強大的商業版資料中心管理工具,提供了各種能夠快速穩定執行的資料計算框架,如Apache Spark;使用Apache Impala做為對HDFS,HBase的高效能SQL查詢引擎;也帶了Hive資料倉庫工具幫助使用者分析資料; 使用者也能用Cloudera管理安裝HBase分散式列式NoSQL資料庫;Cloudera還包含了原生的Hadoop搜尋引擎以及Cloudera Navigator Optimizer去對Hadoop上的計算任務進行一個視覺化的協調優化,提高執行效率;同時Cloudera中提供的各種元件能讓使用者在一個視覺化的UI介面中方便地管理,配置和監控Hadoop以及其它所有相關元件,並有一定的容錯容災處理;Cloudera作為一個廣泛使用的商業版資料中心管理工具更是對資料的安全決不妥協!

CDH 提供:

  • 靈活性 - 儲存任何型別的資料,並使用各種不同的計算框架進行處理,包括批處理,互動式SQL,自由文字搜尋,機器學習和統計計算。
  • 整合 - 在一個可與廣泛的硬體和軟體解決方案配合使用的完整Hadoop平臺上快速啟動並執行。
  • 安全 - 過程和控制敏感資料。
  • 可擴充套件性 - 啟用廣泛的應用程式並進行擴充套件和擴充套件,以滿足您的需求。
  • 高可用性 - 充滿信心地執行關鍵業務任務。
  • 相容性 - 利用您現有的IT基礎設施和資源。

這裡寫圖片描述

1.CDH中的Apache Hive概述

Hive資料倉庫軟體支援在分散式儲存中讀取,編寫和管理大型資料集。使用與SQL非常相似的Hive查詢語言(HiveQL),查詢被轉換為一系列作業

通過MapReduce或Apache Spark在Hadoop叢集上執行。

使用者可以使用Hive執行批處理工作負載,同時還可以在單​​個平臺內使用Apache Impala或Apache Spark等工具分析互動式SQL或機器學習工作負載的相同資料。

作為CDH的一部分,Hive還受益於:

  • 統一資源管理由YARN提供
  • Cloudera Manager提供簡化的部署和管理
  • 共享安全和治理,以滿足Apache Sentry和Cloudera Navigator提供的合規要求

Hive的用例

由於Hive是一個基於Hadoop平臺構建的PB級資料倉庫系統,因此對於資料量急劇增長的環境而言,它是一個不錯的選擇。HDFS底層MapReduce介面很難直接程式設計,但Hive提供了一個SQL介面,可以使用現有的程式設計技巧來執行資料準備。

Hive MapReduce或Spark最適合批量資料準備或ETL:

  • 必須執行具有非常大的ETL排序並使用連線的計劃批處理作業來為Hadoop準備資料。向Impala中BI使用者提供的大部分資料由ETL開發人員使用Hive編寫。

  • 可以執行花費數小時的資料傳輸或轉換作業。通過Hive,如果通過這樣的工作發生問題,它會恢復並繼續。

  • 可以接收或提供不同格式的資料,其中Hive SerDes和各種UDF可以方便地獲取和轉換資料。通常,Hive的ETL過程的最後階段可能是高效能,廣泛支援的格式,例如Parquet。

Hive元件

Hive由以下元件組成:

Metastore資料庫

Metastore資料庫是Hive基礎架構的一個重要方面。它是一個獨立的資料庫,依賴於傳統的RDBMS,例如MySQL或PostgreSQL,它儲存有關Hive資料庫,表,列,分割槽和Hadoop特定資訊(例如底層資料檔案和HDFS塊位置)的元資料。

Metastore資料庫由其他元件共享。例如,Hive和Impala都可以插入,查詢,更改等相同的表。儘管您可能會看到對“Hive metastore”的引用,但請注意,即使在您未使用Hive本身的情況下,Metastore資料庫也會廣泛用於Hadoop生態系統。

Metastore資料庫相對緊湊,資料快速變化。備份,複製和其他型別的管理操作會影響此資料庫。

HiveServer2

HiveServer2是一個伺服器介面,它使遠端客戶端能夠向Hive提交查詢並檢索結果。它取代了HiveServer1(它已被棄用,並將在未來的CDH版本中被刪除)。HiveServer2支援多客戶端併發,容量規劃控制,Sentry授權,Kerberos身份驗證,LDAP和SSL,併為JDBC和ODBC客戶端提供更好的支援。

HiveServer2是Hive執行引擎的容器。對於每個客戶端連線,它會建立一個新的執行上下文,用於向客戶端提供Hive SQL請求。它支援JDBC客戶端,例如Beeline CLI和ODBC客戶端。客戶端通過基於Thrift API的Hive服務連線到HiveServer2。

2.Apache Impala概述

Impala 能夠直接對Apache Hadoop平臺中儲存在HDFS,HBase 的資料提供快速的互動式SQL查詢除了使用相同的統一儲存平臺之外,Impala還使用與Apache Hive相同的元資料,SQL語法(Hive SQL),ODBC驅動程式和使用者介面(Hue中的Impala查詢UI)。這為實時或面向批處理的查詢提供了一個熟悉且統一的平臺。

Impala是對可用於查詢大資料的工具的補充。Impala不會取代基於MapReduce(如Hive)的批處理框架。基於MapReduce構建的Hive和其他框架最適合長時間執行的批處理作業,例如涉及批處理提取,轉換和載入(ETL)型別作業的批處理作業。

Impala的好處

Impala提供:
  • 資料科學家和分析師已經知道的熟悉的SQL介面。
  • 能夠在Apache Hadoop中查詢大量資料(“大資料”)。
  • 叢集環境中的分散式查詢,便於擴充套件並使用經濟高效的硬體。
  • 無需複製或匯出/匯入步驟即可在不同元件之間共享資料檔案; 例如,使用Pig編寫程式碼,使用Hive進行轉換並使用Impala進行查詢。Impala可以讀取和寫入Hive表格,使用Impala進行簡單的資料交換,以便對Hive生成的資料進行分析。
  • 用於大資料處理和分析的單一系統,因此客戶可以避免昂貴的建模和ETL僅用於分析。

Impala如何與CDH配合使用

下圖說明了Impala如何在更廣泛的Cloudera環境中定位:

顯示Impala如何與其他Hadoop元件(如HDFS,Hive Metastore資料庫以及客戶端程式(如JDBC和ODBC應用程式)以及Hue Web UI)相關聯的體系結構圖。Impala解決方案由以下元件組成:
  • 客戶端 - 包括Hue,ODBC客戶端,JDBC客戶端和Impala Shell在內的實體都可以與Impala進行互動。這些介面通常用於發出查詢或完成管理任務,例如連線到Impala。
  • Hive Metastore - 儲存有關Impala可用資料的資訊。例如,Metastore讓Impala知道哪些資料庫可用,以及這些資料庫的結構如何。在建立,刪除和更改模式物件,通過Impala SQL語句將資料載入到表等中時,相關的元資料更改將通過Impala 1.2中引入的專用目錄服務自動廣播到所有Impala節點。
  • Impala - 這個在DataNode上執行的程序,協調和執行查詢。Impala的每個例項都可以接收,計劃和協調來自Impala客戶端的查詢。查詢分佈在Impala節點中,然後這些節點充當工作人員,執行並行查詢片段。
  • HBase和HDFS - 儲存要查詢的資料。
使用Impala執行的查詢處理如下:
  1. 使用者應用程式通過ODBC或JDBC向Impala傳送SQL查詢,這些查詢提供標準化的查詢介面。使用者應用程式可能連線到任何impalad在叢集中。這個impalad 成為查詢的協調者。
  2. Impala解析查詢並分析它以確定需要執行的任務 impalad整個群集中的例項。計劃執行是為了獲得最佳效率。
  3. 諸如HDFS和HBase等服務可以通過本地訪問 impalad 例項提供資料。
  4. 每 impalad 將資料返回給協調 impalad,它將這些結果傳送給客戶端。

主要Impala功能

Impala為以下方面提供支援:
  • Hive Query Language(HiveQL)的大多數常見SQL功能
  • HDFS,HBase,其中包括:
    • HDFS檔案:分隔文字檔案,Parquet,Avro,SequenceFile和RCFile。
    • 壓縮編解碼器:Snappy,GZIP,Deflate,BZIP。
  • 常見的資料訪問介面包括:
    • JDBC驅動程式
    • ODBC驅動程式
    • Hue Beeswax和Impala查詢UI。
  • impla-shell命令列介面
  • Kerberos身份驗證
3. Cloudera Search概述

Cloudera Search提供簡單,自然的語言訪問儲存或存入Hadoop,HBase或雲端儲存的資料。終端使用者和其他Web服務可以使用全文查詢和下鑽來分析文字,半結構化和結構化資料,以及快速篩選和聚合它,以獲取業務洞察力,而無需SQL或程式設計技能。

Cloudera Search是Apache Solr完全整合在Cloudera平臺中的產品,充分利用了CDH中包含的靈活,可擴充套件且強大的儲存系統和資料處理框架。這消除了跨基礎架構移動大型資料集以執行業務任務的需要。它進一步實現了簡化的資料管道,其中搜索和文字匹配是較大工作流程的一部分。

Cloudera Search合併了Apache Solr,其中包括Apache Lucene,SolrCloud,Apache Tika和Solr Cell。Cloudera Search包含在CDH 5及更高版本中。

在CDH基礎架構中使用Cloudera Search提供:

  • 簡化基礎設施
  • 更好的生產可視性和控制
  • 對各種資料型別有更快速的見解
  • 更快的問題解決方案
  • 為更多使用者和SQL以外的用例簡化互動和平臺訪問
  • 用於在相同資料上執行其他型別工作負載的同一平臺上的搜尋服務的可伸縮性,靈活性和可靠性
  • 跨所有程序訪問資料的統一安全模型
  • 攝取和預處理選項的靈活性和規模
下表介紹了Cloudera搜尋功能。
Cloudera搜尋功能
特徵描述
使用Cloudera Manager進行統一管理和監控Cloudera Manager為CDH和Cloudera Search提供統一和集中的管理和監控。Cloudera Manager簡化了搜尋服務的部署,配置和監控。許多現有的搜尋解決方案缺乏管理和監控能力,並且無法深入瞭解利用率,系統健康狀況,趨勢和其他可支援性方面。
索引儲存在HDFS中

Cloudera Search與HDFS整合在一起,實現了健壯,可擴充套件且自我修復的索引儲存。由Solr / Lucene建立的索引直接使用資料寫入HDFS,而不是本地磁碟,從而提供容錯和冗餘。

Cloudera Search經過優化,可在HDFS中快速讀取和寫入索引,同時通過標準Solr機制提供索引並進行查詢。由於資料和索引位於同一位置,因此資料處理不需要傳輸或單獨管理的儲存。

通過MapReduce建立批索引為了便於大資料集的索引建立,Cloudera Search內建了MapReduce作業,用於索引儲存在HDFS或HBase中的資料。因此,MapReduce的線性可伸縮性應用於索引管道,從而減輕Solr索引服務資源的負擔。
資料攝取的實時和可伸縮索引

Cloudera Search提供與Flume的整合以支援接近實時的索引。當新事件通過Flume層次結構並寫入HDFS時,可以將這些事件直接寫入Cloudera Search索引器。

此外,Flume還支援路由事件,過濾和傳遞給CDH的資料註釋。這些功能可與Cloudera Search一起使用,以改進索引分片,索引分隔和文件級訪問控制。

通過Hue輕鬆進行互動和資料探索Cloudera搜尋GUI作為Hue外掛提供,使使用者能夠互動式查詢資料,檢視結果檔案並進行分面探索。Hue還可以安排常規查詢和探索索引檔案。此GUI使用基於標準Solr API的Cloudera Search API。拖放儀表板介面使任何人都可以輕鬆建立搜尋儀表板。
簡化了搜尋工作負載的資料處理Cloudera Search可以使用Apache Tika解析和準備許多用於索引的標準檔案格式。此外,Cloudera Search支援Avro,Hadoop Sequence和Snappy檔案格式對映,以及日誌檔案格式,JSON,XML和HTML。

Cloudera Search還提供Morphlines,這是一個易於使用的預建庫,包含常用資料預處理功能。Morphlines簡化了多種檔案格式索引的資料準備工作。使用者可以輕鬆實現Flume,Kafka和HBase的Morphlines,或者將其他應用程式(如MapReduce或Spark作業)重複使用相同的Morphlines。

HBase搜尋Cloudera Search與HBase整合,支援全文搜尋HBase資料,而不會影響HBase效能或複製資料儲存。監聽器監控來自HBase RegionServers的複製事件流,並捕獲每個寫入或更新複製的事件,從而啟用抽取和對映(例如,使用Morphlines)。然後將事件直接傳送到Solr以便在HDFS中進行索引和儲存,使用與Cloudera Search的其他索引工作負載相同的過程。這些索引可以立即提供,從而實現HBase資料的自由文字搜尋。

Cloudera搜尋的工作原理

在接近實時的索引用例中,例如日誌或事件流分析,Cloudera Search索引通過Apache Flume,Apache Kafka,Spark Streaming或HBase流式傳輸的事件。欄位和事件對映到標準Solr可索引架構。Lucene索引傳入事件,並將索引寫入並存儲在HDFS中的標準Lucene索引檔案中。在HDFS分割槽中的常規流量事件路由和資料儲存也可以應用。事件可以通過多個Flume代理進行路由和流式傳輸,並寫入單獨的Lucene索引器中,這些索引器可以寫入單獨的索引碎片,以便在索引時實現更好的擴充套件並在搜尋時更快地響應。

索引從HDFS載入到Solr核心,就像Solr從本地磁碟讀取一樣。Cloudera Search設計的不同之處在於HDFS的健壯,分散式和可擴充套件的儲存層,它有助於消除代價高昂的停機時間,並且在不移動資料的情況下實現跨工作負載的靈活性。搜尋查詢然後可以通過標準Solr API或通過包含在Cloudera Search中的簡單搜尋GUI應用程式(可以在Hue中部署)提交給Solr。

Cloudera Search面向批處理的索引功能可以滿足在批量上傳檔案或大資料集中進行搜尋的需求,這些資料集的更新頻率較低,而且不需要近實時索引。它還可以方便地用於重新索引(獨立Solr中常見的難題)或用於按需資料探索的臨時索引。通常,批量索引定期完成(小時,每日,每週等),作為較大工作流程的一部分。

對於這種情況,Cloudera Search包含基於MapReduce或Spark的高度可擴充套件的索引工作流程。針對HDFS中的指定檔案或資料夾或HBase中的表啟動MapReduce或Spark工作流,並在對映階段執行欄位提取和Solr模式對映。Reducers使用嵌入式Lucene將資料作為單個索引或索引碎片寫入,具體取決於您的配置和首選項。索引儲存在HDFS中之後,可以使用標準的Solr機制來查詢它們,如前面關於近實時索引用例所描述的那樣。您還可以配置這些批量索引選項,以將新索引資料直接釋出到由Solr提供的實時活動索引中。GoLive 選項啟用簡化的資料管道,而不會中斷服務以定期處理傳入的批次更新。

Lily HBase Indexer Service是一個靈活的,可擴充套件的,容錯的,事務性的,接近實時的系統,用於處理連續的HBase單元更新到實時搜尋索引。Lily HBase Indexer使用Solr來索引儲存在HBase中的資料。隨著HBase向HBase表格單元應用插入,更新和刪除操作,索引器使用標準HBase複製功能使Solr與HBase表格內容保持一致。索引器支援靈活的自定義應用程式特定規則來提取,轉換和載入HBase資料到Solr。Solr搜尋結果可以包含的ColumnFamily:預選賽連結回儲存在HBase中的資料。這樣應用程式可以使用搜索結果集來直接訪問匹配的原始HBase單元。索引和搜尋不會影響HBase的操作穩定性或寫入吞吐量,因為索引和搜尋過程與HBase是分開的和非同步的。

瞭解Cloudera搜尋

Cloudera Search適合用於分析大型資料集中資訊的更廣泛的解決方案。CDH提供了儲存資料和執行查詢的手段和工具。你可以通過以下方式探索數
  • MapReduce或Spark作業
  • Impala查詢
  • Cloudera搜尋查詢

CDH通過使用MapReduce作業為大資料集提供儲存和訪問,但建立這些作業需要技術知識,每個作業可能需要幾分鐘或更長時間才能執行。與MapReduce作業相關的較長執行時間會中斷探索資料的過程。

為了提供更直接的查詢和響應,並消除編寫MapReduce應用程式的需要,可以使用Apache Impala。Impala以秒為單位返回結果,而不是分鐘。

雖然Impala是一個快速,功能強大的應用程式,但它使用基於SQL的查詢語法。使用Impala對於不熟悉SQL的使用者可能會遇到挑戰。如果您不知道SQL,則可以使用Cloudera Search。儘管Impala,Apache Hive和Apache Pig都需要在查詢時應用的結構,但搜尋支援對已編制索引的任何資料或欄位進行自由文字搜尋。

Cloudera搜尋和其他Cloudera元件

Cloudera搜尋與其他Cloudera元件互動以解決不同的問題。下表列出了對搜尋過程有貢獻的Cloudera元件,並描述了它們如何與Cloudera Search進行互動:

零件貢獻適用於
HDFS儲存原始檔。搜尋索引源文件以使其可搜尋。支援Cloudera Search的檔案(例如Lucene索引檔案和預寫日誌)也儲存在HDFS中。使用HDFS可在更大的基礎上提供更簡單的配置,冗餘和容錯功能。藉助HDFS,Cloudera Search伺服器本質上是無狀態的,因此主機故障的後果極小。HDFS還提供快照,群集間複製和災難恢復。所有情況
MapReduce搜尋包括一個預建的基於MapReduce的作業。此作業可用於HDFS中儲存的任何受支援資料集的按需索引或計劃索引。此作業使用群集資源進行可伸縮批量索引。很多情況下
TlumeSearch包含一個Flume接收器,可以將事件直接寫入群集中部署的索引器,從而允許在攝取期間進行資料索引。很多情況下
HueHue包含一個基於GUI的搜尋應用程式,該應用程式使用標準Solr API並可與HDFS中索引的資料進行互動。該應用程式為Solr標準查詢語言和分面搜尋功能的視覺化提供支援。很多情況下
Morphlinesmorphline是一個定義ETL轉換鏈的豐富配置檔案。Morphlines可以使用來自任何資料來源的任何型別的資料,處理資料並將結果載入到Cloudera Search。Morphlines執行在一個小型的,可嵌入的Java執行時系統中,可用於近實時應用程式,如flume代理以及批處理應用程式,如Spark作業。很多情況下
Zookeeper協調資料和元資料的分佈,也稱為碎片。它提供自動故障轉移功能以提高服務彈性。很多情況下
SparkCrunchIndexerTool可以使用Spark將HDFS檔案中的資料移動到Apache Solr中,並通過morphline執行資料以進行提取和轉換。一些案例
HBase支援索引儲存的資料,提取列,列族和關鍵資訊作為欄位。儘管HBase不使用二級索引,但Cloudera Search可以促進HBase中行和表內容的全文搜尋。一些案例
Cloudera Manager部署,配置,管理和監控Cloudera Search程序和資源利用率,以跨群集服務。Cloudera Manager有助於簡化Cloudera Search管理,但這不是必需的。一些案例
Cloudera NavigatorCloudera Navigator為Hadoop系統提供治理,包括支援審計搜尋操作。一些案例
SentrySentry支援基於角色的Cloudera Search的精細授權。Sentry可以對各種操作應用一系列限制,例如訪問資料,通過配置物件管理配置或建立集合。無論使用者嘗試完成操作的方式如何,都會始終應用限制。例如,限制對集合中資料的訪問會限制訪問許可權,無論查詢來自命令列,瀏覽器,Hue還是通過管理控制檯。一些案例
Oozie自動化索引作業的排程和管理。Oozie可以檢查新資料並根據需要開始索引工作。一些案例
Impala進一步分析搜尋結果。一些案例
Hive進一步分析搜尋結果。一些案例
Parque提供列式儲存格式,為結構化工作負載(如Impala或Hive)提供特別快速的結果返回。Morphlines為從Parquet提取資料提供了一條高效的流水線。一些案例
Avro包含Cloudera Search可用於建立索引的元資料。一些案例
Kafka搜尋使用此訊息代理專案來增加吞吐量並減少處理實時資料的延遲。一些案例
Sqoop批量採集資料併為批量索引啟用資料可用性。一些案例

Cloudera搜尋架構

Cloudera Search作為一組伺服器上的分散式服務執行,並且每個伺服器負責一部分可搜尋資料。資料被分割成小塊,副本由這些塊組成,並且這些塊分佈在伺服器中。這提供了兩個主要優點:

  • 分割內容成小塊分配索引伺服器之間的內容的任務。
  • 複製整個部分可以使查詢更有效地縮放,並使系統能夠提供更高級別的可用性。


每個Cloudera Search伺服器都可以獨立處理請求。客戶端可以傳送請求索引文件或對任何搜尋伺服器執行搜尋,並且該伺服器將請求路由到正確的伺服器。

每個搜尋部署都需要:

  • ZooKeeper至少在一臺主機上執行。您可以在同一臺主機上安裝ZooKeeper,Search和HDFS。
  • 至少有一臺HDFS,但與所有主機一樣多。HDFS通常安裝在所有群集主機上。
  • Solr至少有一臺,但與所有主機一樣多。Solr通常安裝在所有群集主機上。

使用Solr和HDFS的更多主機具有以下優點:

  • 更多搜尋伺服器處理請求。
  • 更多搜尋和HDFS搭配增加了資料區域性性的程度。更多的本地資料提供更快的效能並減少網路流量。

下圖顯示了典型部署中的一些關鍵元素。



該圖形說明:

  1. 客戶端通過HTTP提交查詢。
  2. 該響應由NameNode接收,然後傳遞給DataN