- 數字化轉型實踐:構建云原生大數據平臺
- 金鑫等編著
- 2137字
- 2024-03-22 19:17:17
1.4 大數據
進入21世紀,隨著互聯網行業的爆發,海量的用戶點擊帶來動輒幾十億甚至上百億次的頁面訪問,開啟了全球數據量急劇增長的新時代。2001年,Gartner分析員Doug Laney在3D Data Management:Controlling 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 System、MapReduce:Simplified Data Processing on Large Clusters和Bigtable:A 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中的數據導入關系型數據庫。
- 公有云容器化指南:騰訊云TKE實戰與應用
- LibGDX Game Development Essentials
- Mastering Ninject for Dependency Injection
- Python金融大數據分析(第2版)
- 計算機信息技術基礎實驗與習題
- 數據要素五論:信息、權屬、價值、安全、交易
- 數據驅動設計:A/B測試提升用戶體驗
- PostgreSQL指南:內幕探索
- Visual Studio 2013 and .NET 4.5 Expert Cookbook
- 貫通SQL Server 2008數據庫系統開發
- 活用數據:驅動業務的數據分析實戰
- 數據挖掘算法實踐與案例詳解
- 數據庫技術與應用:SQL Server 2008
- 工業大數據分析實踐
- Hadoop大數據技術開發實戰