1. 程式人生 > >大資料(1)初始hadoop

大資料(1)初始hadoop

1、hadoop模型如下:

(上圖為Hadoop1.x的佈局)

20130705_101518_910

(Hadoop2.x較Hadoop1.x,多了YARN)

Hadoop框架,是一個龐大的生態系統。

或者我們可以這樣理解:

可以把整個體系,看成一個作業系統XP,win7,win8,win10。

HDFS和MapReduce為作業系統的核心,Hive,Pig,Mathout,Zookeeper,Flume,Sqoop,HBase等,都是作業系統上的一些軟體,或應用。

 

2、HDFS:(Hadoop Distributed File System),Hadoop分散式檔案系統。

從名字上就看出了它的兩點功能。基本功能,存檔案,是一個檔案系統;另外這個檔案系統是分散式的;

01121148-56dd42e45beb442682593f863e3d4a93

從圖上來看,HDFS的簡單原理。

Rack1,Rack2,Rack3是三個機架;

1,2,3,4,5,6,7,8,9,10,11,12 是機架上的十二臺伺服器。

Block A, Block B, Block C為三個資訊塊,也就是要存的資料。

 

從整體佈局上來看,資訊塊被分配到機架上。看似很均勻。這樣分配的目的,就是備份,防止某一個機器宕機後,單點故障的發生。

 

3、MapReduce,(Map + Reduce),就看成是計算的功能。可以對資料進行處理。

它加快了計算。主要也是通過上圖的佈局。將資料分佈到多個伺服器上。當有任務了,比如查詢,或者比較大小,先讓每臺伺服器,都處理自己的儲存中檔案。然後再將所有伺服器的處理結果進行第二次處理。最後將結果返回。

另外,從別的資料看到一種解釋mapreduce的方式,很簡單

Goal: count the number of books in the?library.

Map: You count up shelf #1, I count up shelf?#2.

(The more people we get, the faster this part goes.?)

Reduce: We all get together and add up our individual?counts.

 

4、HADOOP的框架

HDFS

HDFS,(Hadoop Distributed File System) hadoop分散式檔案系統。在Google開源有關DFS的論文後,由一位大牛開發而成。HDFS的建立在叢集之上,適合PB級大量資料的儲存,擴充套件性強,容錯性高。它也是Hadoop叢集的基礎,大部分內容都存在了HDFS上。

 

MapReduce

MapReduce,是Hadoop中的計算框架,由兩部分構成。Map操作以及Reduce操作。MapReduce,會生成計算的任務,分配到各個節點上,執行計算。這樣就避免了移動叢集上面的資料。而且其內部,也有容錯的功能。在計算過程中,某個節點宕掉之後,會有策略進行應對。Hadoop叢集,上層的一些工具,比如Hive或者Pig等,都會轉換為基本的MapReduce任務來執行。

 

HBase

HBase源自谷歌的BigTable。HBase是面向列儲存的資料庫,效能高,擴充套件性強,可靠性高。HBase的內容,儲存在HDFS上,當然它也可以使用其他的檔案系統,如S3等。HBase作為一個頂級專案,使用頻率很高。如:我們可以用來儲存,爬蟲爬來的網頁的資訊等。具體的HBase的概念請見後續詳細說明。延遲較低。

 

Hive

Hive,是一個查詢的工具,在HBase中,對於SQL的支援不太好。而Hive解決了這一類的問題。以sql形式操作hbase,更爽一些。Hive編寫的一些sql語句,其實最後也還是會變成MapReduce程式。當然這種查詢,不能與關係型資料庫mysql等比較,hive查詢時,是秒級或分鐘級的,時間比較長。

 

Sqoop

Sqoop,也是一個很神奇的資料同步工具。在關係型資料庫中,我們會遇到一種情景,將Oracle資料匯入到Mysql,或者將Mysql資料,匯入到Oracle。那其實Sqoop也是類似的功能。sqoop可以將Oracle,Mysql等關係型資料庫中的資料,匯入到HBase,HDFS上,當然也可以從HDFS或HBase匯入到Mysql或Oracle上。

 

Flume

Flume,是日誌收集工具,是分散式的,可靠的,容錯的,可以定製的。應用場景如:100臺伺服器,需要監測各個伺服器的執行情況,這時可以用flume將各個伺服器的日誌,收集過來。Flume也有兩個版本。Flume OG 和Flume NG。現在基本都用NG了。

 

Impala

Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢儲存在Hadoop的HDFS和HBase中的PB級大資料。已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的互動性。相比之下,Impala的最大特點也是最大賣點就是它的快速。Imapa可以和Phoenix,Spark Sql聯絡起來了解一下。

 

Spark

Spark是一個記憶體計算的框架。目前一個大的趨勢。MapReduce會有很大的IO操作,而Spark是在記憶體中計算。速度是Hadoop的10倍(官網上這樣說的)。Spark是目前一個趨勢,是需要了解的。

 

Zookeeper

Zookeeper,動物管理員。Zookeeper叫分散式協作服務。作用主要是,統一命名,狀態同步,叢集管理,配置同步。Zookeeper在HBase,以及Hadoop2.x中,都有用到。

 

Mahout

資料探勘演算法庫,裡面內建了大量的演算法。可以用來做預測、分類、聚類等。工具很強大,但是技術要求能力較高。

 

Pig

和Hive類似。具體區別自己搜搜。Pig可以構建資料倉庫。可用來對資料倉庫中資料,進行查詢分析。Pig也有自己的查詢語法,很不幸,不是sql形式,Pig Latin。

 

Ambari

Ambari是一個管理平臺。可以對叢集進行統一的部署。也是很方便的。

 

5、 HADOOP 的版本

Apache社群版本:

完全開源,免費,非商業。apache社群的hadoop版本分枝較多,而且部分hadoop存在bug。在選擇hadoop,hbase,hive等時,需要考慮相容性。

Cloudera版本:

開源,免費,有商業和非商業版本。是在apache社群版本的hadoop基礎上,選擇相對穩定版本的hadoop,並在此基礎上,進行bug修改和維護。使用者不必考慮hadoop,hbase,hive等在使用過程中,版本相容性。

Hortonworks版本:

開源,免費,有商業和非商業版本。是在Apache基礎上修改,具有apache的特色。

6、大資料和雲端計算有什麼區別

雲端計算(cloudcomputing)是基於網際網路的相關服務的增加、使用和交付模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。

雲端計算可以認為包括以下幾個層次的服務:基礎設施即服務(IaaS),平臺即服務(PaaS)和軟體即服務(SaaS)。

IaaS(Infrastructure-as-a- Service):基礎設施即服務。消費者通過Internet可以從完善的計算機基礎設施獲得服務。例如:硬體伺服器租用。
PaaS:平臺即服務

PaaS(Platform-as-a- Service):平臺即服務。PaaS實際上是指將軟體研發的平臺作為一種服務,以SaaS的模式提交給使用者。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。例如:軟體的個性化定製開發。
SaaS:軟體即服務

SaaS(Software-as-a- Service):軟體即服務。它是一種通過Internet提供軟體的模式,使用者無需購買軟體,而是向提供商租用基於Web的軟體,來管理企業經營活動。例如:陽光雲伺服器。

現在用的hadoop是位於雲端計算中PaaS一層。

大資料(big data),或稱巨量資料,大的資料需要特殊的技術,以有效地處理大量的容忍經過時間內的資料。 

7、公有云和私有云有什麼區別

①、公有云是放在Internet上的,只要是註冊使用者、付費使用者都可以用;

②、私有云是放在私有環境中的,比如企業、政府、組織等等自己在機房中建立的,或者是運營商建設好,但是整體租給某一組織的。企業、組織、政府等之外的使用者無法訪問或無法使用;

③、混合雲是公有云和私有云的混合,大多數是指私有云建設好了,但是很多資源(計算能力或儲存空間)不夠用,所以還得動態的在公網上申請公有云作為自己私有云的補充。