標籤:http ar io os 使用 sp java strong on
原文地址:http://os.51cto.com/art/201305/396145.htm
大資料是個鋪天蓋地的詞,而談論大資料又不可避免地要提到Hadoop,遺憾的是今天大多數大資料鼓吹者,甚至專業人士其實並不能說清楚Hadoop到底是什麼玩意,以及有何功用,而他們的管理層小白聽眾更是一頭霧水。
AD:2014WOT全球軟體技術峰會北京站 課程視頻發布
文章的標題看上去很幼齒很科普,但實際上那些天天觀賞大資料演講的管理層技術小白來說,他們永遠不會公開問出這個問題。
大資料是個鋪天蓋地的詞,而談論大資料又不可避免地要提到Hadoop,遺憾的是今天大多數大資料鼓吹者,甚至專業人士其實並不能說清楚Hadoop到底是什麼玩意,以及有何功用,而他們的管理層小白聽眾更是一頭霧水。
眾所周知,Hadoop是Apache軟體基金會管理的開源軟體平台,但Hadoop到底是什麼呢?簡單來說,Hadoop是在分布式伺服器叢集上儲存海量資料並運行分布式分析應用的一種方法。
Hadoop被設計成一種非常“魯棒”的系統,即使某台伺服器甚至叢集宕機了,運行其上的大資料分析應用也不會中斷。此外Hadoop的效率也很高,因為它並不需要你在網路間來回搗騰資料。
以下是Apache的正式定義:
Apache Hadoop軟體庫是一個架構,允許在叢集伺服器上使用簡單的編程模型對大資料集進行分散式處理。Hadoop被設計成能夠從單台伺服器擴充到數以千計的伺服器,每台伺服器都有本地的計算和儲存資源。Hadoop的高可用性並不依賴硬體,其程式碼程式庫自身就能在應用程式層偵測並處理硬體故障,因此能基於伺服器叢集提供高可用性的服務。
如果更深入地分析,我們發現Hadoop還有更加精彩的特性。首先,Hadoop幾乎完全是模組化的,這意味著你們能用其他軟體工具抽換掉Hadoop的模組。這使得Hadoop的架構異常靈活,同時又不犧牲其可靠性和高效率。
HadoopDistributed File System(HDFS)
如果提起Hadoop你的大腦一片空白,那麼請牢記住這一點:Hadoop有兩個主要部分:一個資料處理架構和一個分布式資料存放區檔案系統(HDFS)。
HDFS就像Hadoop系統的籃子,你把資料整整齊齊碼放在裡面等待資料分析大廚出手變成性感的大餐端到CEO的案頭上。當然,你可以在Hadoop進行資料分析,也可以見gHadoop中的資料“抽取轉換載入”到其他的工具中進行分析。
資料處理架構和MapReduce
顧名思義,資料處理架構是處理資料的工具。具體來說Hadoop的資料處理架構是基於Jave的系統——MapReduce,你聽到MapReduce的次數會比HDFS還要多,這是因為:
1.MapReduce是真正完成資料處理任務的工具
2.MapReduce往往會把它的使用者逼瘋
在常規意義上的關係型資料庫中,資料通過SQL(結構化查詢語言 (SQL))被找到並分析,非關係型資料庫也使用查詢語句,只是不局限於SQL而已,於是有了一個新名詞NoSQL。
有一點容易搞混的是,Hadoop並不是一個真正意義上的資料庫:它能儲存和抽取資料,但並沒有查詢語言介入。Hadoop更多是一個資料倉儲系統,所以需要MapReduce這樣的系統來進行真正的資料處理。
MapRduce運行一系列任務,其中每項任務都是單獨的Java應用,能夠訪問資料並抽取有用資訊。使用MapReduce而不是查詢語言讓Hadoop資料分析的功能更加強大和靈活,但同時也導致技術複雜性大幅增加。
目前有很多工具能夠讓Hadoop更容易使用,例如Hive,可以將查詢語句轉換成MapReduce任務。但是MapReduce的複雜性和局限性(單任務批處理)使得Hadoop在更多情況下都被作為資料倉儲使用而非資料分析工具。
Hadoop的另外一個獨特之處是:所有的功能都是分布式的,而不是傳統資料庫的集中式系統。
技術小白:Hadoop 到底是啥?