天天看點

《Hadoop實戰第2版》——1.3節Hadoop體系結構

1.3 hadoop體系結構

如上文所說,hdfs和mapreduce是hadoop的兩大核心。而整個hadoop的體系結構主要是通過hdfs來實作分布式存儲的底層支援的,并且它會通過mapreduce來實作分布式并行任務處理的程式支援。

下面首先介紹hdfs的體系結構。hdfs采用了主從(master/slave)結構模型,一個hdfs叢集是由一個namenode和若幹個datanode組成的。其中namenode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案的通路操作;叢集中的datanode管理存儲的資料。hdfs允許使用者以檔案的形式存儲資料。從内部來看,檔案被分成若幹個資料塊,而且這若幹個資料塊存放在一組datanode上。namenode執行檔案系統的命名空間操作,比如打開、關閉、重命名檔案或目錄等,它也負責資料塊到具體datanode的映射。datanode負責處理檔案系統用戶端的檔案讀寫請求,并在namenode的統一排程下進行資料塊的建立、删除和複制工作。圖1-3所示為hdfs的體系結構。

《Hadoop實戰第2版》——1.3節Hadoop體系結構

namenode和datanode都可以在普通商用計算機上運作。這些計算機通常運作的是gnu/linux作業系統。hdfs采用java語言開發,是以任何支援java的機器都可以部署namenode和datanode。一個典型的部署場景是叢集中的一台機器運作一個namenode執行個體,其他機器分别運作一個datanode執行個體。當然,并不排除一台機器運作多個datanode執行個體的情況。叢集中單一namenode的設計大大簡化了系統的架構。namenode是所有hdfs中繼資料的管理者,使用者需要儲存的資料不會經過namenode,而是直接流向存儲資料的datanode。

接下來介紹mapreduce的體系結構。mapreduce是一種并行程式設計模式,利用這種模式軟體開發者可以輕松地編寫出分布式并行程式。在hadoop的體系結構中,mapreduce是一個簡單易用的軟體架構,基于它可以将任務分發到由上千台商用機器組成的叢集上,并以一種可靠容錯的方式并行處理大量的資料集,實作hadoop的并行任務處理功能。mapreduce架構是由一個單獨運作在主節點的jobtracker和運作在每個叢集從節點的tasktracker共同組成的。主節點負責排程構成一個作業的所有任務,這些任務分布在不同的從節點上。主節點監控它們的執行情況,并且重新執行之前失敗的任務;從節點僅負責由主節點指派的任務。當一個job被送出時,jobtracker接收到送出作業和其配置資訊之後,就會将配置資訊等分發給從節點,同時排程任務并監控tasktracker的執行。

從上面的介紹可以看出,hdfs和mapreduce共同組成了hadoop分布式系統體系結構的核心。hdfs在叢集上實作了分布式檔案系統,mapreduce在叢集上實作了分布式計算和任務處理。hdfs在mapreduce任務處理過程中提供了對檔案操作和存儲等的支援,mapreduce在hdfs的基礎上實作了任務的分發、跟蹤、執行等工作,并收集結果,二者互相作用,完成了hadoop分布式叢集的主要任務。

繼續閱讀