官术网_书友最值得收藏!

1.4 大數據

進入21世紀,隨著互聯網行業的爆發,海量的用戶點擊帶來動輒幾十億甚至上百億次的頁面訪問,開啟了全球數據量急劇增長的新時代。2001年,Gartner分析員Doug Laney在3D Data ManagementControlling Data Volume, Velocity, and Variety一文中指出,數據增長有3個方向的挑戰和機遇,分別是數據規模、傳輸速度和多樣性。在此基礎上,IBM進一步總結了如下4個方面的特征,得到業界的廣泛認可。

(1)數量(Volume):數據量巨大,能夠到達數百TB甚至PB級。

(2)速度(Velocity):數據的處理速度快,時效性強,很多場景要求實時更新。

(3)價值(Value):追求高質量、有價值的數據。

(4)多樣性(Variety):數據類型繁多,不僅包括傳統的格式化數據,還包括半結構化數據(如CSV、日志、XML、JSON)、非結構化數據(如電子郵件、文檔、PDF、圖片、音頻和視頻等)。

處理滿足這些特征的數據的系統就是我們常說的大數據系統。處理大數據就像淘金和挖礦,不斷剔除無用的數據,挖掘有價值的信息。如果大數據系統不能給企業帶來價值,不能給用戶帶來更好的體驗,這個系統就是無用的。但大數據在21世紀初卻遇到很大的技術挑戰。

(1)傳統關系型數據庫技術很難處理TB級以上的數據,需要新型的調度方式以實現高效分析。

(2)傳統的關系型數據庫都是庫、表、字段結構,沒有考慮其他類型。而大數據具有數據多樣化的特征,不適合全部存儲在關系型數據庫內。

(3)數據產生的價值會隨著時間的推移而降低,傳統數據庫難以實現數據的實時分析和實時展示。

2003年、2004年、2006年,Google先后發表了3篇論文,即Google File SystemMapReduceSimplified Data Processing on Large ClustersBigtableA Distributed Storage System for Structured Data,分別提出GFS、MapReduce和BigTable,即分布式存儲、分布式調度及分布式計算模型。這3篇論文奠定了隨后大數據技術發展的基礎。在此基礎上,逐漸衍生出Hadoop開源大數據生態,成為應對以上諸多挑戰的方案。Hadoop的歷史最早要追溯到2004年,當時全球第一個全文文本搜索開源函數庫創始人Doug Cutting正在開發能夠處理數十億網頁搜索的分布式系統Nutch,他發現GFS和MapReduce正是自己所需要的理論基礎,于是使用Java在Nutch中進行了實現。2006年,Doug Cutting將Nutch中的分布式文件系統HDFS和MapReduce合并成一個新的項目——Hadoop,并貢獻給Apache開源基金會。作為Apache最重要的項目,Hadoop自推出以來就受到全球學術界和工業界的普遍關注,并得到廣泛的推廣和應用。隨著企業與個人開發者不斷做出貢獻,越來越多的工具進入Hadoop大數據技術棧,以不可阻攔的磅礴氣勢引領了大數據時代。如今,伴隨物聯網和新興互聯網應用的崛起,更多的研發資源投入其中,大數據技術進入蓬勃發展的階段,各類以SQL查詢為表達方式的計算引擎如雨后春筍般出現,整體開始從“能用”轉向“好用”。這些計算引擎針對不同的場景進行優化,采用用戶熟悉的SQL語言,大大降低了大數據技術的使用成本,各種數據庫時代的方法論開始回歸。圖1-2所示為當前Hadoop的主要技術生態。

圖1-2 當前Hadoop的主要技術生態

(1)HDFS。HDFS是基于Google DFS實現的具有高容錯、高吞吐量和高可用特性的分布式文件系統。HDFS非常適合存儲大規模數據集,提供高吞吐量的數據訪問,并且可以部署在廉價的機器上。它放寬了對POSIX的要求,允許以流的形式訪問文件系統中的數據。

(2)MapReduce。MapReduce是基于Google MapReduce實現的分布式計算框架,能夠對保存于HDFS上的數據進行分布式迭代處理和分析,適用于離線數據處理場景,內部處理流程主要劃分為map和reduce兩個階段。

(3)HBase。HBase是基于Google BigTable實現的具有高可靠性和高性能、面向列、可伸縮的NoSQL分布式數據庫,主要用于海量結構化和半結構化數據存儲。

(4)Spark。Spark是一個快速、通用、可擴展、可容錯的大數據計算引擎。目前其生態體系主要包括用于批數據處理的SparkRDD和SparkSQL、用于流數據處理的Spark Streaming和Structured Streaming、用于機器學習的Spark MLlib、用于圖計算的Graphx及用于統計分析的SparkR,支持Java、Scala、Python、R等多種編程語言。

(5)Hive。Hive是基于Hadoop的數據倉庫,可以將結構化的數據文件映射為數據庫表,提供類似于SQL的HQL語言查詢功能。Hive支持多種計算引擎,如Spark、MapReduce;支持多種存儲格式,如TextFile、SequenceFile、RCFile、ORC和Parquet;支持多種壓縮格式,如gzip、snappy和bzip2等。

(6)Pig。Pig是基于Hadoop的大規模數據分析平臺,使用Pig Latin腳本語言描述數據流。Pig Latin的編譯器會把類SQL的數據分析請求轉換為一系列經過優化處理的MapReduce運算,為復雜的海量數據并行計算提供簡單的操作和編程接口。

(7)Mahout。Mahout提供了可擴展的機器學習領域經典算法的實現,包括聚類、分類、推薦過濾等。

(8)Yarn。Yarn是一個通用資源調度平臺,負責為運算程序分配資源和調度,它為集群在利用率、資源統一管理和數據共享等方面帶來了巨大幫助。

(9)Oozie。Oozie是用于Hadoop平臺的工作流調度引擎,可以根據時間頻率或數據觸發條件重復執行Oozie任務。

(10)Ambari。Ambari是基于Web的安裝部署工具,支持多個Hadoop生態組件,包括對HDFS、MapReduce、Hive、Pig、HBase等的管理和監控。

(11)Zookeeper。Zookeeper為分布式應用程序提供協調服務,如主從協調、服務器節點動態上下線、統一配置管理和分布式共享鎖等。作為Hadoop家族的分布式協作服務,幾乎處處可以看到Zookeeper的身影。例如,Hadoop通過Zookeeper來克服單點故障,HBase通過Zookeeper選舉集群主節點及保存元數據等。

(12)Flume。Flume是一個高可用、高可靠、分布式的海量日志采集、聚合和傳輸系統,Flume支持在日志系統中定制各類數據發送方,用于收集數據;同時,Flume也提供對數據進行處理并將其傳輸至各類數據接收方的能力。

(13)Sqoop。Sqoop是一個分布式數據遷移工具,可以將關系型數據庫中的數據導入HDFS,也能將HDFS中的數據導入關系型數據庫。

主站蜘蛛池模板: 乌拉特中旗| 寻甸| 旬邑县| 旺苍县| 天津市| 海宁市| 青州市| 清新县| 金川县| 泸水县| 株洲市| 吉木萨尔县| 海城市| 榆中县| 翁牛特旗| 河间市| 姜堰市| 绥化市| 敖汉旗| 姚安县| 尚志市| 金昌市| 阿尔山市| 德昌县| 邯郸县| 临邑县| 连州市| 敦煌市| 连云港市| 广宁县| 财经| 北安市| 九江市| 普安县| 临夏县| 山丹县| 马边| 绥中县| 宁武县| 莱州市| 常德市|