• 沒有找到結果。

第二章 文獻探討

第三節 H ADOOP

Hadoop 最初由 Dong Cutting 等[20]開發,是一個能提供儲存並管理巨量數據 的雲端平台,由於它是Apache 軟體基金會底下的開源軟體框架,在免費及龐大 的社群基礎上,因應設計許多與Hadoop 配套支援的應用程式。此節主要針對 HAWQ 安裝部署時,會使用到 Hadoop 的應用程式,像是可以進行快速安裝部署 的Ambari,或是幫助系統做資源分配的 YARN,亦或是作為系統底層下的分散 式檔案系統HDFS 等,都將在本節提及。

一、 Hadoop Distributed File System (HDFS)

HDFS[21]為一個分散式檔案系統,當叢集底下有數以千計的機器,即可視 作一台超級電腦,儲存TB(Tera Bytes)或是 PB(Peta Bytes)以上的資料都不成問 題。而HDFS 架構裡有幾個重要的構成元件,介紹如下[22]:

Name Node

Name Node 為 HDFS 的核心元件,負責管理整個集群,每個集群裡就只有 一個Name Node。此外,Name Node 裡面包含 Metadata,負責記錄所有檔案系統 的資料,像是權限、檔案Block 位置等。

Data Node

Data Node 為資料儲存的節點,儲存方式以 Block 作為單位,Block 大小預設 為64MB,大量分散於各個 Data Node 底下,交由 Data Node 管理。每個 Name Node 都會定期與Data Node 溝通,以確保它運行順利。

Secondary Node

Secondary Node 主要是把 Name Node 每個階段的狀態紀錄成 log 檔,為 Name Node 建立系統還原點。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

Backup Name Node

Backup Name Node 即是 Name Node 的備援角色,當 Name Node 失效後,可 以馬上接替位置成為Name Node。

圖 二-6 HDFS 架構圖

(資料來源:[21])

二、 YARN

YARN 為 Hadoop 集群中的資源管理核心,舉例來說,當用戶向 YARN 提交 應用程式,便產生啟動Application Master 的命令,並經由中央 Resource Manager 教派任務給底下節點上的Node Manager,提供其 Container 資源讓 Application Master 得以啟動運行。同樣的,YARN 底下也由不少重要元件所組成,介紹如 下:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

Resource Manager

Resource Manager 為 YARN 的核心元件,負責整個系統的管理與分配,為一 個全局資源管理器,整個集群裡只會有一個Resource Manager。主要由 Resource Scheduler、Application Manager 所組成,Resource Scheduler 負責資源調度,將應 用程式放入隊列做排程管理;Application Master 則是負責應用程式的提交、啟 動、資源協商等程式管理。

Application Master

每一個應用程式會包裝成Application Master,透過 Application Master 與 Resource Manager 協商資源,再與 Node Manager 溝通以獲取 Container 資源,並 在Container 上運行該應用程式。

Node Manager

Node Manager 分佈在各個節點,負責管理節點上的任務及資源。Resource Manager 會定期與 Node Manager 溝通,以確保其運行順利。

圖 二-7 YARN 架構圖

(資料來源:[23])

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

三、 Ambari

大數據的盛行,促使Hadoop 發展迅速,底下開源軟體的成長速度更不在話 下,但管理眾多軟體及彼此版本相容性的問題,每每造成開發者在部署上的困 難,因此,Ambari 就誕生了,它將 Hadoop 上大部分的軟體整合起來,讓開發者 只需安裝Ambari,剩下版本相容性等問題都將由 Ambari 一手包辦。

Ambari 為 Hadoop 平台上的搭建利器,主要負責創建、管理及監控 Hadoop 集群,管理監控介面如圖2-7。發展至今,Ambari 已經可以支援大量 Hadoop 上 的開源軟體,如HDFS、YARN、Spark、Zookeeper、Hive 及 Kafka 等知名軟體。

Ambari 本身也是分散式架構的軟體,由 Ambari Server 及 Ambari Agent 所組成,

使用者透過Ambari Server 通知 Ambari Agent 上對應到的軟體,而 Ambari Agent 會定期與Ambari Server 回報自身節點的狀態,並將結果呈現在 Ambari 的圖形化 介面(GUI),以利開發者監控及管理。

圖 二-8 Ambari 圖形化介面

(資料來源:本研究整理)

在介紹此節之前,要先提到IPython,IPython(Interactive Python)為一互動式 的Python 解譯器,Fernando[24]研究表示 IPython 提供比原生 Python Shell 更強大 的編輯功能與互動性。而IPython Notebook 則是建立在 IPython 上的 Web App,

透過IPython 原有的互動功能,讓計算結果及資料都能即時呈現於瀏覽器上。

Jupyter[25]即是由 IPython Notebook 的構想而形成的,但它有更大的遠景,希望 Notebook 平台上面不單單只提供 Python,而是支援所有語言,像是 Ruby、PHP、

Scala、R 等語言。現在 Jupyter 已經累積為數不小的社群,因為它的前瞻性、開 發人數,再加上是免費開源軟體,所以本研究決定使用Jupyter 作為我們演算法 交易的開發平台

不過Jupyter Notebook 原則上只能提供給單一使用者,如果要讓多人使用,

就要選擇JupyterHub。 JupyterHub[26]主要由 Hub、Configurable HTTP Proxy 及 大量single-user Jupyter Notebook 所組成。當使用者透過瀏覽器使用 Jupyter Notebook 時,會先透過 Configurable HTTP Proxy 代理到 Hub 上,Hub 底下有 Authenticator 驗證使用者身份,一旦驗證成功後,會在 Hub 底下生成一個

Spawner,而 Spawner 會啟動該使用者的 Notebook server,以提供給使用者存取。

另外Spawner 也會定期向 Notebook server 做輪詢,已確認上面的程序是否有在 運行。架構圖如下: