雲端技術這個詞在這幾年越來越紅,到底什麼是雲端設計?

簡單說就是把所有需要計算的東西丟到伺服器,讓伺服器去分配更多的電腦、空間去計算

而眼前的電腦只是扮演一個螢幕的角色而已

負責傳送、接收並顯示資訊,就像你口袋中的手機而已。

而雲端技術看似簡單,而後卻有著了不起的演算法,

其中最有名的大概就是Google所提出的兩大概念:Map Reduce & Big Table。

 

Map Reduce 簡單的說就是把一堆東西分成有規律的一個由keyvalue搭配的pair: (key, value),

接著在將具有相同key的pair聚集在一起,再對他們的value做處理。

最簡單的例子就是做WordCount了

 

問題:

假設有一堆文件 ( 量大到無法想像,假設有1 TB的純文字文件好了 )

要計算出再這堆文件中某個字到底出現了多少次?

 

Map Reduce的想法:

對於每一個檔案,將所有的字output成 (字, 出現次數),

然後再透過Reducer去將擁有相同的字的pair拿回來,然後再將出現次數做加總即可。

 

作法:

Map 就是去讀一堆這些檔案,然後將每個字output出(key, value)的樣式

像是"Hi, I am Austin. How are you? I am fine"這樣的一串字,

經過Map以後就會output出(Hi, 1), (I, 1), (am, 1), (Austin, 1), ...

Reducer就會拿到一個具有相同key的array(iterator),

只要將這個array的每個次數相加起來以後,就是最後的答案了

詳細的Map Reduce可以參考Google的文件或是網路上其他資源

 

回到Hadoop和Hbase

Hadoop即是一套實現Google Map Reduce的工具,

Hbase則是實現了Big Table設計概念的工具,

這兩套目前都是Apache的專案之一,

皆使用Java為主要語言

而最有名的使用者大概就是yahoo了XD

 

Hadoop 簡單的說就是建立一個cluster平台

利用MapReduce的概念將一個工作分到很多個cluster去平行運算

Map就是將一個工作分到多個運算節點(Node)

Reduce就是將各個節點的結果再重新結合成最後的結果

而Hadoop就是提供這樣的環境的平台

 

Hbase則是一個可以快速存取大量資料的一個資料庫設計  

利用Row Oriented以及Column Family的概念

方便存入具有不同column屬性的data以及根據row key 快速拿出想要的data

 

這兩套系統都是基於一個分散式的檔案系統 HDFS 建立而成

HDFS: Hadoop Distributed File System

在設立Hadoop和Hbase的時候都要設定聯繫HDFS的server和port

而這個系統也是分散式的到每一個node上

達到分散運算以及Fault Tolerance

( 因為同一份檔案可以複製到不同的node上面,如果其中有個node掛了就還有另外的node可以補回來)

 

接下來的幾篇會分別紀錄:

1. 安裝Hadoop環境(Fully Distributed)

2. 安裝Hbase環境

3. 透過thrift讓php、python、c++等其他語言可以與Hbase溝通

arrow
arrow
    全站熱搜

    austintodo 發表在 痞客邦 留言(0) 人氣()