課程介紹:
通過本課程的學習,學員將深入了解到通過大規模集群的模式處理海量數據的方式與編程方法。通過實踐相關的課程內容,使用開源的Apache Lucene Hadoop工具,學員將親身實踐Google文件系統以及Google所使用的分布式編程方式MapReduce。學員還需要完成特定的分布式應用程序設計來鞏固所學的編程知識,用于處理實際的海量數據問題。
適合對象:
對云計算或大規模數據處理感興趣的開發人員
架構師、項目經理等
課程目標:
熟悉和掌握云計算的架構與原理
了解大規模數據處理的核心技術
熟悉并理解企業大規模數據處理應用的注意事項
對開源系統的應用
預備知識:
對Lucene(開源的索引和檢索系統)和 Hadoop有所理解
掌握基本的Java語法
對數據結構、編譯原理、概率論有基本的了解
第一章
分布式系統概述
分布式系統基本概念
分布式系統設計遇到的問題
分布式系統的可靠性問題
分布式系統的可擴展性問題
實驗:
實驗環境的介紹:實驗環境中所涉及到的軟件,實驗中所需要的硬件配置,編程所需要的必要的Java知識等。
介紹如何在集群環境下進行Hadoop系統的安裝以及配置,使得每個參加的學員都能夠安裝完成Hadoop,并進行正確配置與運行。
第二章
分布式文件系統
傳統的分布式文件系統,例如NFS,AFS等,
新的分布式文件系統的介紹,如Ceph等。
介紹分布式文件系統GFS,以及相應的在Hadoop中的模塊HDFS。
實驗:
學員實驗所必須的相關的背景知識,例如多線程程序的編寫,程序的同步問題,網絡編程所需要的必要知識(實際是不用的,但是為了理解分布式程序的運行,必須要了解)。
熟悉使用Hadoop進行編程的基礎知識:Hadoop的構成,Hadoop中相關類庫的介紹,在Hadoop環境下,使用Java操作接口,對文件系統進行讀寫操作。
第三章
MapReduce編程技術
大綱
Google的MapReduce編程介紹
開源軟件Nutch的體系結構與構成
Hadoop的體系結構,構成以及MapReduce設計的編程要素
實驗:
Hadoop的MapReduce編程環境
使用Hadoop進行MapReduce編程,并進行個實驗,即做一次倒排表的實驗。
第四章
MapReduce算法
使用MapReduce進行圖算法PageRank
使用MapReduce進行聚類算法Canopy Clustering
實驗:
圖算法PageRank的實現
第五章
云計算技術分析
Amazon的云計算系統的介紹Elastic Computing Cloud
微軟所使用的大規模數據處理技術Dryad等
Google云計算平臺App Engine深入剖析
App Engine概述及其典型應用分析
App Engine架構和實現解析
App Engine應用開發接口和編程實踐
App Engine與其他云計算平臺的橫向比較及展望
實驗:
聚類算法Canopy Clustering的實現
第六章
在Google中所使用的其它技術
Google的集群的構建
Google的數據庫系統BigTable
Google的分布式鎖技術Chubby