雲端運算讀書筆記(五)

來源:互聯網
上載者:User

Hadoop:Google雲端運算的開源實現

Hadoop是Apache開源組織的一個分散式運算機架構,可以在大量廉價的硬體裝置群組成的叢集上運行應用程式,為應用程式提供一組穩定可靠的介面,旨在構建一個具有高可靠性和良好擴充性的分布式系統。

Hadoop的核心是HDFS,MapReduce和HBase,它們分別對應Google的雲端運算GFS,MapReduce和Bigtable。

Hadoop主要由以下幾個子項目組成:

1)Hadoop Common:原來的Hadoop Core,這是整個Hadoop項目的核心

2)Avro:Hadoop的RPC方案

3)Vhukwa:一個用來管理大型分布式系統的資料擷取系統

4)HBase:支援結構化資料存放區的分散式資料庫,是Bigtable的開源實現

5)HDFS:提供高呑吐量的Distributed File System,是GFS的開源實現

6)Hive:提供資料摘要和查詢功能鍵的資料倉儲

7)MapReduce:大型資料的分散式處理模型

8)Pig:是在MapReduce上構建的一種進階的資料流語言

9)ZooKeeper:用於解決分布式系統中的一致性問題,是Chubby的開源實現

除了開源以外,hadoop還有很多優點:

1)可擴充

2)經濟

3)可靠

4)高效

Distributed File SystemHDFS

設計前提和目標:

1)處理硬體錯誤並快速自動回復

2)流式的資料訪問,應用程式以流式讀為主,做批量處理,更注重資料訪問的高輸送量

3)超大規模資料集,支援大檔案儲存體,一個單一的HDFS執行個體能夠支撐數以千萬計的檔案,並且能在一個叢集裡擴充到數百個節點

4)簡單一致性模型,應用程式一般對檔案實行一次性寫,多次讀的訪問模式

5)移動計算比移動資料更簡單

6)異構軟硬體平台間的可移植性

體繫結構:

HDFS是一個主從結構的體系,HDFS叢集有一個NameNode和很多個DataNode組成的。

NameNode管理檔案系統的中繼資料,DataNode儲存實際的資料。用戶端聯絡NameNode以擷取檔案的中繼資料,而真正的檔案I/O操作是直接和DataNode進行互動的。

HDFS的資料都是一次寫入多次讀取,典型的塊大小是64MB

用戶端從NameNode獲得組成檔案的資料區塊的位置列表,也就是知道資料區塊被儲存在哪些DataNode上,然後用戶端直接從DataNode上讀取檔案,NameNode不參與檔案的傳輸

NameNode使用事件記錄記錄HDFS中繼資料的變化,使用映像檔案儲存體檔案系統的命名空間

保障可靠性措施:

1)冗餘備份

2)副本存放

3)心跳檢測,每個DataNode定期接受心跳包和塊報告,收到心跳包說明該DataNode工作正常

4)安全模式,在系統啟動時會進入一個安全模式,此時不會出現資料區塊的寫操作

5)資料完整性檢測,在HDFS檔案建立時,計算每個資料區塊和校正和,並將校正和作為一個單獨的隱藏檔案儲存在命名空間下。用戶端擷取檔案時會做對應的校正檢查,如果不同則用戶端認為資料區塊有損壞,將從其它的DataNode擷取資料區塊的副本

6)空間回收,當檔案被刪除時,會先被移到/trash目錄裡,只要還在這個目錄裡就可以很快恢複,目錄的清空時間是可配置的

7)中繼資料磁碟失效,映像檔案和交易記錄是HDFS的核心資料結構

8)快照,快照支援某個時間的資料複製,當HDFS資料損毀時,可以復原到過去一個已知正確的時間點。

提升效能的措施:

1)副本選擇

2)負載平衡

3)用戶端緩衝

4)流水線複製

提供者:

可以通過Java API,也可以使用C語言封裝的API

1)org.apache.hadoop.conf:定義了系統參數的設定檔處理API

2)org.apache.hadoop.dfs:HadoopDistributed File System(HDFS)模組的實現

3)org.apache.hadoop.fs:定義了抽象的檔案系統API

4)org.apache.hadoop.io:定義了通用的I/O API,用於針對網路,資料庫,檔案等資料對象做讀/寫操作

5)org.apache.hadoop.ipc:用於網路服務端和用戶端的工具,封裝了網路非同步I/O的基礎模組

6)org.apache.hadoop.mapred:Hadoop分散式運算系統(MapReduce)模組的實現

7)org.apache.hadoop.metrics:定義了用於效能統計資訊的API,主要用於mapred和dfs模組

8)org.apache.hadoop.record:定義了針對記錄的I/O API類及一個記錄描述語言的翻譯器

9)org.apache.hadoop.tools:定義了一些通用的工具

10)org.apache.hadoop.util:定義了一些公用的API

分布式資料處理MapReduce

MapReduce是一種分布式的電腦模型,也是Hadoop的核心

邏輯模型:

將運行在大規模叢集上的並行計算過程抽象為兩個函數:Map和Reduce,也就是映射和化簡

簡單說MapReduce就是任務的分解與結果的匯總,Map把任務分解為多個任務,Reduce把分解後的結果匯總起來,得到最終結果

實現機制:

1,分布式並行計算,MapReduce架構由JobTracker和TaskTracker這兩類服務調度的。JobTracker是主控服務,只有一個,負責調度和管理TaskTracker

2,本地計算

3,任務粒度,有利於資料的本地性,一個小資料集啟動一個Map服務,M個Map任務可以在N台電腦上並行運行,使用者可以指定Reduce任務的數量

4,Combine

5,分區,經過串連後可以把產生的中間結果按key的範圍劃分為R份

6,讀取中間結果

7,任務管道

分布式資料化資料表HBase

HBase資料庫是基於hadoop的項目,是針對Google的Bigtable的開源實現,它與Google的Bigtable相似

邏輯模型:

使用者在表格裡儲存一系列的資料行,每行包含一個可排序的關鍵字,一個可選的時間戳記及一些可能有資料的列

Hadoop的安裝

可以使用虛擬機器進行類比,如果機器上沒有安裝SSH,安裝SSH

配置安裝JDK,詳細步驟網上很多不一一操作了

到apache的hadoop網站上下載hadoop-0.20.2.tar.gz

使用ftp傳到相應的伺服器上,如果是虛擬機器可以到共用資料夾下選擇

複製到linux下的usr目錄

tar -zxvf hadoop-0.20.2.tar.gz

解壓後使用vi找到conf/hadoop-env.sh檔案

開啟

# The java implementation to use.  Required.# export JAVA_HOME=/usr/lib/j2sdk1.5-sunexport JAVA_HOME=/opt/jdk1.6.0_27# Extra Java CLASSPATH elements.  Optional.# export HADOOP_CLASSPATH=

安裝步驟:

hadoop有三種運行模式:單機模式,偽分布式模式和完全分布式模式。

在調試階段使用單機模式

查看並且運行樣本

bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input outputcat output/*

查看到的結果如下:

[root@LinuxServer hadoop-0.20.2]# cat output/*hadoop  1hello   2world   1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.