Hadoop 教學

Hadoop 基本概念 (3)

基本介紹

教學目標

初步了解 Hadoop 生態經濟和商業版本的基本概念。

重點概念

首先 Apache Hadoop 核心技術除了 HDFS、YARN 和 MapReduce 之外,還有其它相關的專案,像是 Pig、Hive、Sqoop、ZooKeeper、Mahout,這些專案在 Hadoop 專案中互相溝通協調形成 Hadoop 生態經濟。

接著在 Hadoop 生態經濟中不同專案皆負責不同的任務,請參考下表。

專案 說明
Pig 主要提供針對資料分析逐步執行程式的平台。
Hive 主要能夠讓我們在 Hadoop 中查詢和管理大量資料集。
HBase 主要屬於以欄位為主的資料庫管理系統。
Sqoop 主要使用於從關聯式資料庫中透過 JDBC 連線匯入資料至 Hadoop 平台。
ZooKeeper 主要是與 HDFS 進行互動的工具。
Mahout 主要是針對 Hadoop 平台執行推薦引擎的資料探勘函式庫。

再來雖然 Apache Hadoop 是開源碼的技術,但還是有商業廠商提供商業版本,最常見的廠商主要有 Cloudera、Hortonworks、…,但是在業界則主要是以 Cloudera 商業版的 Hadoop 平台為主。

最後若我們需要建立一個以資料為驅動的業務情境,則我們將會需要一個強大的管理工具統一且安全的管理業務資料,所以建議導入 Cloudera 商業版的 Hadoop 平台,也就是 Cloudera Hadoop Distribution,簡稱 CDH。此外我們能夠透過 CDH 中的 Cloudera Manager 部署和管理 Cloudera 的 Hadoop 環境,以及透過 HUE 的應用程式介面與 Hadoop 系統進行互動。

相關資源

Hadoop 基本概念 (2)

基本介紹

教學目標

初步了解 HDFS、MapReduce、Pig 和 Hive 的基本概念。

重點概念

首先 Hadoop 分散式檔案系統,簡稱 HDFS,其很像在使用 Linux 作業系統,就像是我們在 Linux 作業系統中儲存檔案一樣,我們能夠將文件儲存在 HDFS 分散式檔案系統中。HDFS 主要是以 Linux 風格的路徑和權限為基礎,HDFS 命令通常是以 hadoop fs 為開頭,像是 hadoop fs -ls 指令就是獲取目錄內容列表。此外 HDFS 指令雖然類似 LINUX 命並,但卻不是建立在作業系統中,並且檔案在寫入之後只能夠進行新增。

接著 Hadoop 叢集平台中主要有 NameNode 和 DataNode ,本機系統中的檔案主要會被先傳送至 Hadoop 叢集平台中的 NameNode 機器,下一步才會分散檔案至 DataNode 機器中,請注意使用者和應用程式主要是和 Hadoop NameNode 進行互動,以利以單一檔案的方式存取和處理分散式檔案。

再來 MapReduce 框架主要是由 Java 所撰寫建立至 Hadoop 中,它主要是自動分散處理資料檔案。在 MapReduce 框架中主要協調在電腦叢集中平行執行 Map、Shuffle/Sort 和 Reduce 等多項任務,像是我們輸入不同地區的收益資料,就能夠透過 MapReduce 框架進行總計和平均的摘要計算。

最後 Pig 和 Hive 則是提供更淺顯易懂的高層次程式語言平行處理 Hadoop 資料檔案。所謂 Pig 主要是提供針對資料分析逐步執行程式的平台。至於所謂 Hive 則主要是資料倉儲框架,透過 Hive 能夠讓我們在 Hadoop 中查詢和管理大量資料集,同時提供結構化資料的機制,以及透過 HiveQL 類似 SQL 語言查詢資料。此外不論是 Pig 或 Hive 皆會轉換為 MapReduce 的程式之後再存取 Hadoop 平台。

相關資源

Hadoop 基本概念 (1)

基本介紹

教學目標

初步了解 Hadoop 的基本概念。

重點概念

首先 Hadoop 主要是 Apache 開放源始碼軟體專案之一,其主要是應用於分散式儲存和處理大型資料集的軟體專案。因此若我們要獲取任何給定的資料檔案,並且發佈至大量機器上時,這些機器皆會一起採取行動,此時將會像是單一且一致的系統。此外我們能夠在不同的機器上分散式處理資料,更重要的是對於 Hadoop 平台的使用者來說,他們不須要了解資料在多台機器上複雜的處理機制。

接著組織只要在不同的機器上安裝 Hadoop 軟體,此時組織就能夠透過相對便宜的硬體與軟體的搭配進行分散式處理。其中在 Hadoop 中主要有三個核心的模組,皆是透過 Java 程式語言所開發。

模組名稱 說明
HDFS 主要是一個分散大量檔案至 Hadoop 叢集電腦的檔案系統。
Hadoop YARN 主要是一個工作排程和叢集資源管理的框架。
Hadoop MapReduce 主要是一個以 YARN 系統為基礎平行處理大量資料集。

再來 HDFS 或稱 Hadoop 分散式檔案系統主要是處理叢集中所有不同機器上的資料分散式儲存至 Hadoop MapReduce 系統中,而 Hadoop MapReduce 系統主要是一個處理分散式檔案的分散式處理系統,因此我們可以同時在所有的機器上處理資料的不同部分,並且進行協調。但是若我們需要查詢資料集,則需要在所有不同的機器上完成部分工作之後,再次生成一致的結果,導致 Hadoop MapReduce 系統處理將會非常複雜性。

最後我們會透過 Hadoop YARN 系統進行資源的管理。當我們來自不同用戶的大量請求來進行不同類型的程序時, Hadoop YARN 系統就必須​​啟動程序,並且針對程序進行資源的分配,以利當系統忙於執行其它程序時,安排其它程序進行等待。當你擁有多個使用者和多台機器,就會必須協調所有正在使用的資源時,處理所涉及的所有管理,以利降低複雜性。

相關資源