Hadoop家族的技術,網上資料多如牛毛,可是仍是那句老話——好腦瓜不如爛筆頭,看的再多也不如本身動手寫一寫。html
Hadoop是一個分佈式系統,有兩個關鍵組件——HDFS和MapReduce,HDFS負責分佈式文件存儲,MapReduce是執行分佈式任務的算法。算法
MapReduce只是一個分佈式數據處理算法,簡單來講就是,把針對大數據的一個任務分解成若干個小任務,交給若干個計算節點去執行,而後把全部小任務的執行結果彙總起來,獲得最終的輸出結果。「拆分」叫作Map,「彙總」叫作Reduce。其中還涉及Shuffle等處理過程,暫不細究。數據庫
HDFS是一個分佈式文件系統,高可靠、可擴展,理論上能夠存儲任何文件(通常不適合存儲大量的微小文件)。HDFS是Hadoop家族最基礎最核心的技術。yii
HDFS是一個通用的文件系統,通用的東西每每未必好用,尤爲在特定的使用場景下。因此以HDFS爲基礎,衍生出了Hive、HBase,這兩個技術都是爲了處理HDFS中存儲的數據。分佈式
Hive相似MySQL,是一個結構化數據庫,支持常見的SQL操做,這裏稱做HQL,不一樣於通常的結構化數據庫,Hive在HDFS上存儲數據庫文件,同時利用MapReduce處理全部SQL操做,充分利用了Hadoop的兩項核心技術,可是代價是實時性不好,由於其中涉及到大量的磁盤讀寫操做。oop
HBase和Hive很不同,它採用key-value的方式存儲數據,以列族的方式存儲(半)結構化數據,這極大的提高了查詢效率,尤爲適合那些只須要查詢個別幾列數據的場合。因此HBase適合實時處理,Hive適合作離線統計。大數據
參考資料:htm
https://www.cnblogs.com/justinzhang/p/4273470.htmlblog
https://www.yiibai.com/hbase/效率