摘要:大數據概念是年由首席科學家在大會上提出的。但大數據真正得到業界關注,則是其后多年的事情了。其中大數據最重要的發酵素則是年發布的和三篇論文。揭示大數據未來發展的趨勢就是人工智能。
大數據(Big Data)概念是1998年由SGI首席科學家John Masey在USENIX大會上提出的。他當時發表了一篇名為Big Data and the Next Wave of Infrastress的論文,使用了大數據來描述數據爆炸的現象。但大數據真正得到業界關注,則是其后多年的事情了。其中大數據最重要的發酵素則是2003-2006年Google發布的GFS、MapReduce和BigTable三篇論文。
大數據是指海量數據或巨量數據,其規模巨大到無法通過目前主流的計算機系統在合理時間內獲取、存儲、管理、處理并提煉以幫助使用者決策。
大數據的4V特征,即Variety(多樣化)、Volume(大量化)、Velocity(快速化)、Value(價值密度低)。如下圖所示。其中,Variety表示來源多和格式多,數據可以來源于搜索引擎、社交網絡、通話記錄、傳感器等等,這些數據要么以結構化形式存儲,要么以非結構化數據存儲;Volume表示數據量比較大,從TB級別,躍升到PB級別。尤其是在移動互聯時代,視頻、語言等非結構化數據快速增長;Velocity表示數據存在時效性,需要快速處理,并得到結果出來,這一點也是和傳統的數據挖掘技術有著本質的區別;Value表示大量不相關信息,不經過處理則價值較低,屬于價值密度低的數據。
大數據處理流程一般的大數據處理流程都有以下幾個過程:數據采集、數據存儲、數據處理、數據展現。如下圖所示。
在大數據時代,由于數據種類多,數據大,從結構化的數據到非結構化的數據,數據采集的形式也變得更加復雜而多樣。
當存儲技術的發展變得步履蹣跚,趕不上數據發展的速度時,分布式存儲成為了必然選擇,非結構型數據也對存儲格式提出了新的要求。層出不窮的數據源也使得數據量產生了井噴似的迅猛增長。此時分布式存儲與NoSQL的誕生回應了這樣的需求,解決了大數據存儲的根本難題。
數據處理包括數據計算、分析,這部分是大數據技術的核心,本文剩余部分將詳細介紹這部分。數據展示指的是通過提供報表等可視化界面反應目前平臺或業務運行的各項指標。
大數據的演進提到大數據技術,最基礎和核心的仍是大數據的分析和計算。在2017年,大數據分析和計算技術仍舊在飛速的發展,無論老勢力Hadoop還是當紅小生Spark,亦或是人工智能,都在繼續自己的發展和迭代。
目前絕大部分傳統數據計算和數據分析服務均是基于批量數據處理模型:使用ETL系統或OLTP系統進行構造數據存儲,在線的數據服務通過構造SQL語言訪問上述數據存儲并取得分析結果。這套數據處理的方法伴隨著關系型數據庫在工業界的演進而被廣泛采用。但在大數據時代下,伴隨著越來越多的人類活動被信息化、進而數據化,越來越多的數據處理要求被實時化、流式化。Andrew NG揭示大數據未來發展的趨勢就是人工智能。下面將對批量計算、流式計算以及人工智能進行詳細介紹,其中人工智能部分將在下一期中介紹。
批量計算傳統的批量數據處理模型通常基于如下處理模型:
1. 使用ETL系統或者OLTP系統構造原始的數據存儲,以提供后續的數據服務進行數據分析和數據計算。如下圖所示,用戶裝載數據,系統根據自己的存儲和計算情況,對于裝載的數據進行索引構建等一些列查詢優化工作。因此,對于批量計算,數據一定需要加載到計算機系統,后續計算系統才在數據加載完成后方能進行計算。
2. 用戶或系統主動發起一個計算作用并向上述數據系統進行請求。此時計算系統開始調度(啟動)計算節點進行大量數據計算,該過程的計算量可能巨大,耗時長達數分鐘乃至數小時。同時,由于數據累計的不可及時性,上述計算過程的數據一定是歷史數據,無法保證數據的實時性。
3. 計算結果返回,計算作業完成后將數據以結果集形式返回用戶,或者可能由于計算結果數量巨大保存著數據計算系統中,用戶進行再次數據集成到其他系統。一旦數據結果巨大,整體的數據集成過程漫長,耗時可能長達數分鐘乃至數小時。
典型代表:Hadoop
Hadoop是Apache的一個開源項目,是可以提供開源、可靠、可擴展的分布式計算工具。它主要包括HDFS和MapReduce兩個組件,分別用于解決大數據的存儲和計算。
HDFS是獨立的分布式文件系統,為MapReduce計算框架提供存儲服務,具有較高的容錯性和高可用性,基于塊存儲以流數據模式進行訪問,數據節點之間項目備份。默認存儲塊大小為64M,用戶也可以自定義大小。
HDFS是基于主從結構的分布式文件系統,結構上包括NameNode目錄管理、DataNode的數據存儲和Client的訪問客戶端3部分。NameNode主要負責系統的命名空間、集群的配置管理以及存儲塊的復制;DataNode是分布式文件系統存儲的基本單元;Client為分布式文件系統的應用程序。體系結構如下圖所示。
如上圖所示,NameNode通過主從模式實現高可用性,但是在以前的版本,Standby只能是一個主機。為了實現更高的可靠性,在Hadoop3.0中可以配置超過一個的Standby的NameNode,從而保證更高的可靠型。對于數據存儲,HDFS采用的是多副本的方式來存儲數據,即Client將數據首先通過NameNode獲取數據將要存儲在哪些DataNode上,之后這些存儲到最新數據的DataNode將變更數據以同步或異步方式同步到其他DataNode上。但是這幾年數據規模的增加遠遠大于人的想象,而這些產生的數據,必然會存在冷熱數據的區分。無論冷熱,數據對于一個公司都是核心資產,誰都不想數據丟失。可是對于冷數據,如果采用多副本方式,會浪費大量的存儲空間。在Hadoop3.0之后,采用Erasure Coding可以大大的降低數據存儲空間的占用。對于冷數據,可以采用EC來保存,這樣才能降低存儲數據的花銷,而需要時,還可以通過CPU計算來讀取這些數。
MapReduce是一種分布式計算框架,適用于離線大數據計算。采用函數式編程模式,利用Map和Reduce函數來實現復雜的并行計算,主要功能是對一個任務進行分解,以及對結果進行綜合匯總。其中,Map的主要功能是把一個作業任務分解成多個子任務,然后發送到對應的節點服務器中,接著進行并行計算。Reduce的主要功能把并行計算得到的結果進行歸并后得到的結果返回到中央服務器。
具體來說,MapReduce是將那些沒有經過處理的海量數據進行數據分片,即分解成多個小數據集;每個Map并行地處理每一個數據集中的數據,然后將結果存儲為
不同于批量計算模型,流式計算更加強調計算數據流和低時延,流式計算數據處理模型如下:
1. 使用實時集成工具,將數據實時變化傳輸到流式數據存儲(即消息隊列,如RabbitMQ);此時數據的傳輸編程實時化,將長時間累積大量的數據平攤到每個時間點不停地小批量實時傳輸,因此數據集成的時延得以保證。
2. 數據計算環節在流式和批量處理模型差距更大,由于數據集成從累計變成實時,不同于批量計算等待數據集成全部就緒后才啟動計算作業,流式計算作業是一種常駐計算服務,一旦啟動將一直處于等待事件觸發的狀態,一旦小批量數據進入流式數據存儲,流計算立刻計算并迅速得到結果。
3. 不同于批量計算結果數據需要等待數據計算結果完成后,批量將數據傳輸到在線系統;流式計算作業在每次小批量數據計算后可以立刻將數據寫入在線系統,無需等待整個數據的計算結果,可以立刻將數據結果投遞到在線系統,進一步做到實時計算結果的實時化展現。
典型代表:Spark
Spark是一個快速且通用的集群計算平臺。它包含Spark Core、Spark SQL、Spark Streaming、MLlib以及Graphx組件。如下圖所示。Spark Core
Spark SQL是處理結構化數據的庫,它支持通過SQL查詢數據。Spark Streming是實時數據流處理組件。MLlib是一個包含通用機器學習的包。GraphX是處理圖的庫,并進行圖的并行計算一樣。
Spark提出了彈性分布式數據集的概念(Resilient Distributed Dataset),簡稱RDD,每個RDD都被分為多個分區,這些分區運行在集群的不同節點上。一般數據操作分為3個步驟:創建RDD、轉換已有的RDD以及調用RDD操作進行求值。
在Spark中,計算建模為有向無環圖(DAG),其中每個頂點表示彈性分布式數據集(RDD),每個邊表示RDD的操作。RDD是劃分為各(內存中或者交換到磁盤上)分區的對象集合。在DAG上,從頂點A到頂點B的邊緣E意味著RDD B是RDD A上執行操作E的結果。有兩種操作:轉換和動作。轉換(例如;映射、過濾器、連接)對RDD執行操作并產生新的RDD。
下面介紹下Spark與Hadoop的區別:
相較于Hadoop,Spark更快,平均處理速度是Hadoop的10倍到100倍。因為Spark的數據處理工作在內存中進行,只在一開始將數據讀入內存,以及將最終結果持久存儲時需要與存儲層交互。所有中間態的數據結果均存儲在內存中。雖然內存中處理方式可大幅改善性能,Spark在處理與磁盤有關的任務時速度也有很大提升,因為通過提前對整個任務集進行分析可以實現更完善的整體式優化。特別是在頻繁迭代的場景下,Hadoop需要對每個迭代之間的數據寫回磁盤,這樣就引入了大量的磁盤I/O,那么整個系統性能就比較低下。
Spark并沒有像Hadoop的HDFS的分布式文件系統,但是具有更強的適應能力,即可以通過HDFS獲取數據,也可以通過Cassandra獲取數據。
Hadoop在設計之初更強調批處理;而Spark支持流處理、機器學習,因此它能解決的問題更多。
針對方向不同。Hadoop本質是一個分布式數據的基礎;Spark是一個數據處理工具。
總結本文主要介紹了大數據的定義、特征、大數據的一般流程,并且著重介紹了大數據技術演進過程中的前兩步(批量計算和流計算)。對于批量計算,介紹了Hadoop的HDFS和MapReduce的重要思想。同時,針對頻繁迭代計算場景下,由于Hadoop需要頻繁的進行I/O操作降低了系統性能。人們發明了Spark,它在一般情況下將數據存儲在內存中,此外,提出了RDD和DAG思想,有效的管理數據。下一期我們將詳細介紹大數據技術演進過程中的第3步:人工智能。
歡迎關注微信公眾號:木可大大,所有文章都將同步在公眾號上。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19748.html
摘要:云計算是什么大數據是什么云計算和大數據有什么區別云計算和大數據關聯又是什么估計很多人都不是很清楚這兩者到底代表什么。云計算和大數據的關系云計算是基礎,沒有云計算,無法實現大數據存儲與計算。云計算是什么?大數據是什么?云計算和大數據有什么區別?云計算和大數據關聯又是什么?估計很多人都不是很清楚這兩者到底代表什么。如果要了解云計算和大數據的意思和關系,那我們就要先對這兩個詞進行了解,分別了解兩者...
摘要:昨日,發布調查報告稱大量的大中型公司希望在未來的兩年內能夠用上機器學習。在這些組織中,認為大數據分析是保持競爭的必需品,期望在未來的兩年內在大數據分析中用上機器學習。對使用大數據的人來說,大數據能成為大商業。 昨日,SoftServe 發布調查報告稱大量的大中型公司希望在未來的兩年內能夠用上機器學習。SoftServe 是全球領先的技術解決方案提供商,昨日發布了自己的 Big Data Sn...
摘要:大數據的應用開發過于偏向底層,具有學習難度大,涉及技術面廣的問題,這制約了大數據的普及。傳統公司通過使用,可以輕松的跨越大數據的技術鴻溝,實現搜索引擎級的大數據平臺性能。 大數據的應用開發過于偏向底層,具有學習難度大,涉及技術面廣的問題,這制約了大數據的普及。現在需要一種技術,把大數據開發中一些通用的,重復使用的基礎代碼、算法封裝為類庫,降低大數據的學習門檻,降低開發難度,提高大數據項...
摘要:金融行業的云計算及大數據安全規則如何確立未來金融行業開放策略。醫療行業云平臺和大數據催生互聯網健康產業。房地產行業大數據人才缺乏。房地產行業對大數據應用比較晚,但是空間廣闊。 看起來很美很熱鬧的云計算大數據,在具體落地時卻不得不面對一系列這樣的現實問題。正如中國電子學會副秘書長林潤華所言:產業界確實認為這是大的發展方向,也是非常好的轉型機會,但是用戶還抱著非常審慎的態度。金模網CEO羅百輝認...
閱讀 1572·2021-11-25 09:43
閱讀 2476·2019-08-30 15:54
閱讀 2938·2019-08-30 15:53
閱讀 1087·2019-08-30 15:53
閱讀 747·2019-08-30 15:52
閱讀 2538·2019-08-26 13:36
閱讀 806·2019-08-26 12:16
閱讀 1210·2019-08-26 12:13