【概念】Hadoop、MapReduce、HBase

Hadoop 和 MapReduce       

        Hadoop 生態系統就是爲了處理大數據集而產生的一個合乎成本效益的解決方案。Hadoop 實現了一個特別的計算模型,也就是MapReduce,其可以將計算任務分割成多個處理單元然後分散到一羣家用的或服務器級別的硬件機器上,從而降低成本並提供水平伸縮性。這個計算模型的下面是一個被稱爲Hadoop分佈式文件系統。

        MapReduce 是一種計算模型,該模型可將大型數據處理任務分解成很多單個的、可以在服務器集羣中並行執行的任務。這些任務的計算結果可以合併在一起來計算最終的結果。MapReduce這個術語來自兩個基本的數據轉換操作:map過程和reduce過程。一個map操作會將集合中的元素從一種形式轉換成另一種形式。在這種情況下,輸入的鍵-值對會被轉換成零到多個鍵-值對輸出。其中輸入和數據的鍵必須完全不同,而輸入和輸出的值則可能完全不同。

        在MapReduce計算框架中,某個鍵的所有鍵-值對都會被分發到同一個reduce操作中,這個鍵和這個鍵對應的所有值都會被傳遞給同一個Reducer。reduce過程的目的是將值得集合轉換成一個值,或者轉換成另一個集合,這個Reducer最終會產生一個鍵-值對。

        Hadoop分佈式文件系統(HDFS)中的每一個數據塊(block)都會被冗餘多份(通常默認會冗餘3份),這樣可以保證不會因爲單個硬盤或服務器的損壞導致數據丟失。同時,因爲其目標是優化處理非常大的數據集,所以HDFS以及類似的文件系統所使用的數據塊都非常大,通常是64M或者是這個值的若干倍。這麼大的數據塊可以在硬盤上連續存儲,以保證以最少的磁盤尋址次數來進行寫入和讀取,從而最大化提高讀寫性能。

        Hadoop神奇的地方在於後面要進行的Sort(排序)和Shuffle(重新分發)過程。Hadoop按照鍵來對鍵值對進行排序,然後重新洗牌,將所有具有相同鍵的鍵值對分發到一個Reducer中。這裏有很多種方式決定哪個Reducer獲取哪個範圍內的鍵對應的數據。

HBase

        HBase是一個分佈式的、可伸縮的數據存儲,其支持行級別的數據更新、快速查詢和行級事物。設計靈感來源於谷歌的BigTable,不過HBase並沒有實現BigTable的所有特性。HBase支持的一個重要特性就是列存儲,其中的列可以組織成列族。列族在分佈式集羣中物理上是存儲在一起的。這就使得當查詢場景涉及的列只是所有列的一個子集時,不需要奪取所有列然後丟棄大部分列,而只需讀取需要的列,從而提升讀寫速度。

        可以像鍵值存儲一樣來使用HBase,其每一行都使用了一個唯一鍵來提供非常快的速度讀寫這一行的列或者列族,HBase還會對每個列保留多個版本的值(按照時間戳進行標記),版本數量是可以配置的,所以如果需要,可以‘時光倒流’回退到之前的版本。

        HBase和Hadoop的關係:HBase使用HDFS來持久化存儲數據。爲了可以提供行級別的數據更新和快速查詢,HBase也使用內存緩存技術來對數據和本地文件進行追加數據更新操作日誌。持久化文件將定期地使用附件日誌更新進行更新等操作.

Spark

        一個基於Scala API的分佈式數據集的分佈式計算框架。其可以使用HDFS文件,而且對於MapReduce中多種計算可以提供顯著的性能改進。同時還有一個將Hive指向Spark的項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章