實現雲端運算 Hadoop HDFS 磁碟及記憶體之即時分級服務 輔仁大學 資訊工程研究所 指導老師:葉佐任 博士 研究生:孫逸峰
Outline Introduction Background Design and Implementation Experiment Future Work Conclusion
Introduction (1) CPU與硬碟效能上的差距。 雲端系統中執行程式的效能瓶頸。 提升雲端系統中程式的執行I/O優先權,縮短I/O優先權程式執行時間。 結合作業系統核心(kernel)與Hadoop,發展具有I/O優先權機制的雲端環境。
Linux Operating System Introduction (2) Hadoop Linux Operating System Hardware User Interface MapReduce Hadoop Distributed File System (HDFS)
Background (1) 讀取HDFS檔案流程 Hadoop Hadoop客戶端 Namenode Datanode1 Namenode,我要讀取123.txt 請至Datanode2中第5~10的區塊讀取 Hadoop客戶端 Namenode 5 6 7 8 9 10 Datanode1 Datanode2 Datanode3
Background (2) 寫入檔案至HDFS流程 Hadoop Hadoop客戶端 Namenode Datanode1 Namenode,我要寫入456.txt Datanode1,我要寫入456.txt 請寫入至Datanode1中 456.txt 1 2 3 4 Hadoop客戶端 Namenode 1 2 3 4 1 2 3 4 Datanode1 Datanode2 Datanode3
Background (3) JobTracker分配MapReduce工作流程 Datanode1 (Tasktracker1) Namenode (JobTracker) Datanode2 (TaskTracker2) job1 1 2 3 4 5 6 Datanode3 (TaskTracker3) job2 7 8 9 6 10 11 12
Background (4) Completely Fair Queuing (CFQ)為Linux預設使用的磁碟排程器。 PCFQ為在CFQ磁碟排程器中加入優先權的研究。
Design and Implementation (1) 研究設計重點部分: - 修改Hadoop中HDFS運作機制。 - 於kernel中使用PCFQ磁碟排程器,並將 記憶體置換機制加入優先權概念。 - 提供使用者執行I/O優先權的介面。
Design and Implementation (2) Namenode建立優先權名單,並管控使用者能否執行I/O優先權指令的權力。
Design and Implementation (3) 客戶端成功申請I/O優先權後,可使用sethigh指令提升程式的I/O優先權。 sethigh指令提高程式I/O優先權範例: 客戶端修改socket封包內容並送往給Datanode sethigh hadoop fs –get source-file destination-file
Design and Implementation (4) 客戶端發送讀取HDFS檔案的socket封包內容 - passpriority為1代表具有I/O優先權,為0則沒有。
Design and Implementation (5) 客戶端發送寫入HDFS檔案的socket封包內容 - passpriority為1代表具有I/O優先權,為0則沒有。
Design and Implementation (6) Datanode接收工作要求封包,將檢查封包中passpriority欄位值。 詢問Namenode此封包的發送者是否為合法的I/O優先權使用者。 Namenode若回傳True,Datanode則告知PCFQ磁碟排程器此封包要求為具有I/O優先權。
Experiment (1) 實驗環境 Hadoop環境中有一台Namenode與三台Datanode Software Hardware Ubuntu 12.04 LTS with kernel 2.6.33.3 Hadoop 1.2.1 Hardware Namenode: CPU: Intel Core i5-2400S 2.50GHz RAM: 4GB DDR3 Hard Disk: SATA3 500GB 7200rpm
Experiment (2) 實驗環境 Hardware Datanode: CPU: Intel Core 2 Duo E8400 3.00GHz RAM: 2GB DDR2 Hard Disk: SATA3 500GB 7200rpm 網路設備: Gigabit switch with Cat5e network wire
Experiment (3) 實驗設計 - 模擬一個忙碌的Hadoop環境,同時執行 多個程式,並分別執行以下實驗。 - TestDFSIO - TeraSort - HDFS讀寫檔案程式
Experiment (4) 實驗設計 - 在以下三種情形中進行實驗數據比較
Experiment (5) 設定TestDFSIO(w)為I/O優先權程式
Experiment (6) 設定TestDFSIO(r)為I/O優先權程式
Experiment (7) 設定Terasort為I/O優先權程式(1)
Experiment (8) 討論Terasort提升效率不明顯之原因: - Terasort為CPU-bound的工作
Experiment (9) 設定Terasort為I/O優先權程式(2)
Experiment (10) 設定Terasort為I/O優先權程式(3)
Experiment (11) 權程式執行效率之原因: 全為執行MapReduce程式可提升具有I/O優先 MapReduce程式須經由JobTracker排班分配工作 具有I/O優先權的程式能提早將MapReduce程式所需要的檔案資料傳至HDFS中 比其它無I/O優先權程式更早被JobTracker分配工作給TaskTracker執行。
Experiment (12) 設定讀取檔案程式READ10G_1為I/O優先權程式
Experiment (13) 設定讀取檔案程式WRITE10G_1為I/O優先權程式
Experiment (14) 設定READ10G_1、 READ10G_2、 READ10G_3為I/O優先權程式
Experiment (15) 設定READ10G_1、 READ10G_2、 WRITE10G_1為I/O優先權程式
Experiment (16) 設定READ10G_1、 WRITE10G_1、 WRITE10G_2為I/O優先權程式
Experiment (17) 設定WRITE10G_1、 WRITE10G_2、 WRITE10G_3為I/O優先權程式
Experiment (18) 設定READ10G_1為I/O優先權程式(加入MapReduce工作一起執行)
Experiment (19) 設定WRITE10G_1為I/O優先權程式(加入MapReduce工作一起執行)
Future Work Hadoop部分: - 結合JobTracker的工作排班機制 作業系統部分: - 結合CPU優先權機制 - 結合磁碟NCQ指令加入優先權的概念
Conclusion Hadoop HDFS中加入I/O優先權機制,能有效提升具有I/O優先權程式的執行效能。 Hadoop中新增處理I/O優先權的機制後,在只執行一般程式下,幾乎不會影響執行效率。
Thank you
補充資料 (1) HDFS讀取檔案流程:
補充資料 (2) HDFS寫入檔案流程:
補充資料 (3) Linux kernel 原始記憶體置換機制:
補充資料 (4) Linux kernel 優先權頁面記憶體置換機制:
補充資料 (5) I/O優先權傳遞流程: