Hadoop--初识Hadoop
什么是Hadoop?
搞什么東西之前,第一步是要知道What(是什么),然后是Why(為什么),最后才是How(怎么做)。但很多開發的朋友在做了多年項目以后,都習慣是先How,然后What,最后才是Why,這樣只會讓自己變得浮躁,同時往往會將技術誤用于不適合的場景。
Hadoop框架中最核心的設計就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapReduce就是“任務的分解與結果的匯總”。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
MapReduce從它名字上來看就大致可以看出個緣由,兩個動詞Map和Reduce,“Map(展開)”就是將一個任務分解成為多個任務,“Reduce”就是將分解后多任務處理的結果匯總起來,得出最后的分析結果。這不是什么新思想,其實在前面提到的多線程,多任務的設計就可以找到這種思想的影子。不論是現實社會,還是在程序設計中,一項工作往往可以被拆分成為多個任務,任務之間的關系可以分為兩種:一種是不相關的任務,可以并行執行;另一種是任務之間有相互的依賴,先后順序不能夠顛倒,這類任務是無法并行處理的。回到大學時期,教授上課時讓大家去分析關鍵路徑,無非就是找最省時的任務分解執行方式。在分布式系統中,機器集群就可以看作硬件資源池,將并行的任務拆分,然后交由每一個空閑機器資源去處理,能夠極大地提高計算效率,同時這種資源無關性,對于計算集群的擴展無疑提供了最好的設計保證。(其實我一直認為Hadoop的卡通圖標不應該是一個小象,應該是螞蟻,分布式計算就好比螞蟻吃大象,廉價的機器群可以匹敵任何高性能的計算機,縱向擴展的曲線始終敵不過橫向擴展的斜線)。任務分解處理以后,那就需要將處理以后的結果再匯總起來,這就是Reduce要做的工作。
?
Hadoop解決兩個問題海量數據存儲、海量數據分析
提供了一個可靠的共享存儲和分析系統,HDFS(Hadoop Distributed File System)實現存儲,MapReduce實現分析處理。這兩塊是Hadoop的核心。
?
Hadoop具有最大化利用內存、最大化利用磁盤、最大化利用CPU的特點。
Hbase:nosql數據庫,最大化利用內存。
HDFS:架構設計原則(最大化利用磁盤):
??? Block(文件塊):一個文件分塊默認64M。
? ??NameNode:保存文件系統的目錄信息,讀取信息。數據節點很多時,容易成為系統的瓶頸,避免這個問題,實現NameNode一般都保存到內存中,同事持久化一部分信息在磁盤上,以備數據丟失。
? ??DataNode:用于存儲Block。
? ??HDFS的HA策略:2.x開始hadoop支持namenode的active-standy模式,宕機時standy切換成active模式為整個應用提供服務。
?
MapReduce:
最大化利用CPU,分析處理大規模的數據集
通過圖片可以簡單了解,將同一操作,放在相當于多臺處理器上并行執行,每個處理器執行1部分執行后,在將結果匯總在一起,這樣減少了很多的時間。
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Hadoop--初识Hadoop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转】未指定 INSTANCESHARED
- 下一篇: 一个很好的机器学习普及网站