技術分享 使用Linux和ApacheHadoop實現云計算
本節和大家學習一下如何使用Linux和ApacheHadoop進行云計算,主要介紹一下什么是云計算,以及云計算的層和現有的服務,相信通過本節的介紹大家對Hadoop云計算有一定的認識。
用Linux和ApacheHadoop進行云計算
IBM?、Google、VMWare和Amazon等公司已經開始提供云計算產品和戰略。本文講解如何使用ApacheHadoop構建一個MapReduce框架以建立Hadoop集群,以及如何創建在Hadoop上運行的示例MapReduce應用程序。還將討論如何在云上設置耗費時間/磁盤的任務。
云計算簡介
近來云計算越來越熱門了,云計算已經被看作IT業的新趨勢。云計算可以粗略地定義為使用自己環境之外的某一服務提供的可伸縮計算資源,并按使用量付費。可以通過Internet訪問“云”中的任何資源,而不需要擔心計算能力、帶寬、存儲、安全性和可靠性等問題。
本文簡要介紹AmazonEC2這樣的云計算平臺,可以租借這種平臺上的虛擬Linux?服務器;然后介紹開放源碼MapReduce框架ApacheHadoop,這個框架將構建在虛擬Linux服務器中以建立云計算框架。但是,Hadoop不僅可以部署在任何廠商提供的VM上,還可以部署在物理機器上的一般LinuxOS中。
在討論ApacheHadoop之前,我們先簡要介紹一下云計算系統的結構。圖1顯示云計算的各個層以及現有的一些服務。關于云計算的各個層的詳細信息,請參見參考資料。
基礎設施即服務(Infrastructure-as-a-Service,IaaS)是指以服務的形式租借基礎設施(計算資源和存儲)。IaaS讓用戶可以租借計算機(即虛擬主機)或數據中心,可以指定特定的服務質量約束,比如能夠運行某些操作系統和軟件。AmazonEC2在這些層中作為IaaS,向用戶提供虛擬的主機。平臺即服務(Platform-as-a-Service,PaaS)主要關注軟件框架或服務,提供在基礎設施中進行“云”計算所用的API。ApacheHadoop作為PaaS,它構建在虛擬主機上,作為云計算平臺。
云計算的層和現有服務
AmazonEC2
AmazonEC2是一個Web服務,它允許用戶請求具有各種資源(CPU、磁盤、內存等)的虛擬機器。用戶只需按使用的計算時間付費,其他事情全交給Amazon處理。
這些實例(AmazonMachineImage,AMI)基于Linux,可以運行您需要的任何應用程序或軟件。在從Amazon租借服務器之后,可以像對待物理服務器一樣使用一般的SSH工具設置連接和維護服務器。
對EC2的詳細介紹超出了本文的范圍。更多信息請參見參考資料。
部署Hadoop云計算框架的最好方法是把它部署在AMI上,這樣可以利用云資源,不需要考慮計算能力、帶寬、存儲等問題。但是,在本文的下一部分中,我們將在本地的Linux服務器VMWare映像中構建Hadoop,因為Hadoop不僅適用于云解決方案。在此之前,我們先介紹一下ApacheHadoop。
ApacheHadoop
ApacheHadoop是一個軟件框架(平臺),它可以分布式地操縱大量數據。它于2006年出現,由Google、Yahoo!和IBM等公司支持。可以認為它是一種PaaS模型。
它的設計核心是MapReduce實現和HDFS(HadoopDistributedFileSystem),它們源自MapReduce(由一份Google文件引入)和GoogleFileSystem。
MapReduce
MapReduce是Google引入的一個軟件框架,它支持在計算機(即節點)集群上對大型數據集進行分布式計算。它由兩個過程組成,映射(Map)和縮減(Reduce)。
在映射過程中,主節點接收輸入,把輸入分割為更小的子任務,然后把這些子任務分布到工作者節點。
工作者節點處理這些小任務,把結果返回給主節點。
然后,在縮減過程中,主節點把所有子任務的結果組合成輸出,這就是原任務的結果。
MapReduce流程
MapReduce的優點是它允許對映射和縮減操作進行分布式處理。因為每個映射操作都是獨立的,所有映射都可以并行執行,這會減少總計算時間。
HDFS
對HDFS及其使用方法的完整介紹超出了本文的范圍。更多信息請參見參考資料。
從最終用戶的角度來看,HDFS就像傳統的文件系統一樣。可以使用目錄路徑對文件執行CRUD操作。但是,由于分布式存儲的性質,有“NameNode”和“DataNode”的概念,它們承擔各自的責任。
NameNode是DataNode的主節點。它在HDFS中提供元數據服務。元數據說明DataNode的文件映射。它還接收操作命令并決定哪些DataNode應該執行操作和復制。
DataNode作為HDFS的存儲塊。它們還響應從NameNode接收的塊創建、刪除和復制命令。
JobTracker和TaskTracker
在提交應用程序時,應該提供包含在HDFS中的輸入和輸出目錄。JobTracker作為啟動MapReduce應用程序的單一控制點,它決定應該創建多少個TaskTracker和子任務,然后把每個子任務分配給TaskTracker。每個TaskTracker向JobTracker報告狀態和完成后的任務。
通常,一個主節點作為NameNode和JobTracker,從節點作為DataNode和TaskTracker。Hadoop集群的概念視圖和MapReduce的流程見圖2。請期待下節有關Linux和ApacheHadoop進行云計算的介紹。