第四章 以雲端運算為基礎之增強型同時定位與建圖
4.1 雲端平台
雖然增強型同時定位與建圖演算法(ESLAM)有著較高的精確度,相較於 FastSLAM2.0 也有較良好的運算效率,但相較於 CESLAM 演算法,卻需要花費 更多時間來運算,因為此類演算法由於虛擬粒子群內的地標數目,會隨著環境特 徵增加而增加,特別是探索大型以及複雜環境時,複雜的計算與大量的資料使得 問題更加嚴重。為了解決上述的問題,本論文提出一以雲端運算為基礎之增強型 同時定位與建圖架構,藉由雲端運算系統的平行化運算,使 ESLAM 演算法能夠 更快速地進行定位與建圖,提高執行效率。
Hadoop 是 Apache 軟體基金會所提出的開放原始碼計畫(Open Source Project) [39],原先是做為原始碼搜尋引擎的一部分,架構上主要是由 Google 提出的 Google File System[45]及 MapReduce [40]實作而成,近年來由於 Yahoo!、Google、
IBM 等公司的投入與開發,使得 Hadoop 日漸成熟,代表一個雲端生態系如圖 4.1 所示,各種不同架構像是分散式檔案系統(Hadoop Distributed File System, HDFS) 及資源管理系統(Yet Another Resource Negotiator, YARN)均能有效儲存資料和分 配資源,使得 MapReduce 更穩定,提升雲端叢集的擴展性與容錯性,HBase [46]
則是建立在 HDFS 上的分散式 NoSQL 資料庫,可以說是 Google Bigtable 的實現 [47]。Hadoop 雲端運算主要透過資料分佈儲存,包含 HDFS 與 HBase,將檔案或 資料表分散至多個節點儲存,並利用分散式平行運算,包含 MapReduce 以及 HBase 的協同處理器(Coprocessor)所提供的平行運算功能。ZooKeeper [46]可說是資料管 理系統用來管理 HBase 的叢集狀態。
Data Management
(Cluster & Resource Management)
Data Storage HDFS
(Distributed File System)
HBase
(Column DB Storage)
圖 4.1、Hadoop 生態系
DataNode DataNode DataNode DataNode DataNode Client ZooKeeper HMaster
HRegion HRegion
38
HBase 專案起源於 2006 年底,由 Powerset 公司的 Chod 等人創立且開發, 參 考由 Google 的 Chang 等人所撰寫的「Bigtable: A Distributed Storage System for Structured Data」[47],圖 4.2 為 HBase 的簡易架構圖,如圖 4.2 所示 HBase 由一 個 Master 節點與多個 RegionServer 節點組成,簡單來說 Master 節點負責控管 RegionServer 節點,而它們的資料存放於 HDFS,ZooKeeper 叢集可說是它們間的 協調者,避免指派任務時產生錯誤。客戶端(Client)所下達的指令通過遠端程序呼 叫(RPC)通訊協定傳送至 HBase 伺服器端(RegionServer),並且在 RegionServer 執 行。
4.1.1 端點協同處理器(Endpoint)
HBase 作為一個線上資料庫系統,給人們的印象停留在資料存取上,想要在 HBase 裡執行資料上的計算,必須依靠 Client 端的程式或是 Hadoop MapReduce,
圖 4.3 為運用 MapReduce 模型來處理 HBase 的資料,因此有了 HBase 協同處理 器 (Coprocessors) , 加 入 了 協 同 處 理 器 , 我 們 可 以 將 任 意 計 算 邏 輯 (Arbitrary Computation)佈署在 HBase 的 RegionServers 上,使得 HBase 從資料儲存系統轉變 為高效率且分散式的資料儲存與資料處理系統。
HBase 的 Coprocessors 有兩種:觀察者(Observer)以及端點(Endpoint),Observer 可以想像成是一種介於 Client 端與 HBase 之間的觸發器(trigger),Endpoint 比較像 是 HBase 的一種儲存過程,擴展了 HBase RPC 協定,將客戶端的一個要求同時 傳送到所有 Region 上,Endpoint 能夠平行地呼叫和執行,如圖 4.4 所示。
Input
圖 4.3、MapReduce on HBase
Region Server 1
table, , 123456789 Endpoint coprocessor
table, row-6, 123456789 Endpoint coprocessor
Region Server 2
table, row-4, 123456789 Endpoint coprocessor
table, row-7, 123456789 Endpoint coprocessor
HTable Thread Pool
Batch.Call back Batch.Call
Parallel RPC Calls
圖 4.4、Endpoint 平行呼叫和執行
40