Hadoop產生背景

傳統的關係型數據庫中的表一般由一個或多個字段組成,每一個字段都預先定義了其可存儲數據的格式及約束等,這類的數據就是結構化數據(structured data)。一個設計良好的數據庫在其schema中定義這些格式或約束,並由相應的RDBMS爲這些提供實現保證。相應地,非結構化數據(unstructured Data)就是指那些沒有一個預約義的數據模型或不適於存儲在RDBMS中的數據,這些數據沒有額外的描述信息(元數據)所以沒法推斷這些信息的真實意義,好比文本文件。半結構化數據(semi-structured data)有着特定的結構,但每一個記錄的結構未必徹底相同,所以,沒法爲這些數據記錄提供預約義的schema,其元數據只有在數據建立時才能獲取,一般都與數據交相存儲從而實現自我描述(self-describing),如XML文件。web

 

現今,如搜索引擎類公司的網絡爬蟲爬行而來的web頁面或社交類站點產生的用戶訪問日誌都屬半結構化或非結構化數據,傳統的關係型數據庫管理系統對這類數據的存儲及處理能力有限,因而處理這類數據的需求就催生了一種新的數據庫系統,即大數據管理系統(Big Data System)或NoSQL。這場聲勢浩大的數據庫管理系統革新運動以Google、Amazon、Yahoo!、Facebook等先鋒爲主導展開的。這些組織或者由本身的業務生成海量數據,或從互聯網上自由獲取海量數據,但對這些海量數據進行存儲、分析和處理都無一例外地成爲支撐其業務的核心需求。初期,他們都採用了當時主流的數據管理技術來知足相似需求,但也都在各自的應用中遇到了規模擴展、存儲性能等各方面的限制。儘管數據管理並不是他們的核心業務,但數據處理卻成支撐其業務運做基本組成部分,所以他們各自注入大量的技術實力依據業務需求進行新技術研發。數據庫

 

儘管許多公司都對他們的研究成果採起了保密措施,Google卻選擇了將他們的成功經驗公之於衆。2003年,Google公開發表了論文「The Google File System」,系統闡述了採起商用硬件計算機集羣存儲海量數據的分佈式文件系統GFS的實現;GFS採起「數據塊」管理文件數據,並在集羣中多個節點上存儲同一個數據塊的副本以實現冗餘功能;GFS設計用來支持大規模、數據密集型、分佈式應用程序的運行;此外,它還爲流式數據讀取進行了優化,所以特別適用於存儲以後讀取數據並對之作出處理類的操做。這以後的第二年,Google又公開發表了另外一篇論文「MapReduce: Simplified編程

Data Processing on Large Clusters」,定義了一個編程模型及其運行框架,提供了於集羣中的多個節點上自動並行、容錯及可處理數百TB規模的數據集數據處理平臺;MapReduce是GFS集羣的組成部分,它是一個編程框架,可以讓用戶編寫的代碼分佈式運行於GFS集羣中的多個節點上儘量經過本地數據訪問完成數據的並行處理操做。MapReduce與GFS一同構成了大數據存儲及並行處理平臺,Google的搜索索引的創建也正是基於此平臺得以高效運行。與此同時,Amazon也公開其購物車實現的基礎組件Dynamo。網絡

 

Google的MapReduce及GFS提供了海量數據存儲及並行處理平臺,但GFS並不支持對數據進行隨機或實時訪問,且僅適用於存儲少許的、體積巨大大的文件,對海量小數據文件的管理有此力不從心。故此,Google開始尋找一種可以充分發揮GFS的高可用性及海量存儲能力,又能支持相似郵件或分析系統等交互式應用的數據管理解決方案。這種數據存儲要可以有效管理海量數據片段,又能夠透明地將這些小數據片合併成爲適合存儲於GFS的大文件,也要內生地支持排序索引以在數據檢索時最小程度地觸發磁盤IO操做,還要可以存儲網絡爬行而來的海量數據並將其提供給MapReduce及時、快速構建搜索索引。針對這些需求,傳統的RDBMS系統的管理能力已難覺得繼,所以Google的工程師發明了一種新的處理系統,這種系統移除了關係型數據庫系統的衆多特性而提供一種僅支持CRUD(Create、Read、Update和Delete)操做的簡單API,以及一個實現範圍或全表遍歷的scan功能。2006年,Google將這些研究成果經過「Bigtable: A Distributed Storage System for Structured Data」論文公之於衆。框架

 

任何對MapReduce、GFS及Bigtable技術感興的朋友都應該認真讀一讀Google貢獻給全人類的這三篇傳世之做。它們也是開源系統Hadoop、HBase等得以構建的理論基石,Hadoop的核心組件爲MapReduce和HDFS,其中Hadoop的MapReduce是Google的MapReduce技術的開源實現,HDFS是GFS的開源實現,HBase是Bigtable的開源實現。所以,這三篇論文也是深刻學習Hadoop、HBase等的基礎性材料。分佈式

相關文章
相關標籤/搜索