什麼是大數據?你所需要知道的一切

什么是大数据?你所需要知道的一切

人類每天都在吃飯、睡覺、工作和玩耍,這個過程就產生了數據——非常非常多的數據。據IBM公佈的消息顯示,人類每天產生2.5垓(一京是一億億,一萬京為一垓)字節的數據。該數量相當於從地球堆疊到月球又返回來的所有DVD碟片所能存儲的數據總量,其中包括了我們發送的文本、我們上傳的照片,以及工業傳感器的數據,還有機器間通信的所有數據。

什么是大数据?你所需要知道的一切

這就是為什麼“大數據”現如今如此流行的主要原因。簡單地說,當人們談論大數據時,他們指的是能夠獲得大量的數據、分析數據,並將其變成有用的東西。

大數據究竟是什麼?

大數據涉及到以下內容,但又遠不止於這些:

  • 大量的數據,通常來自多個來源。

  • 在大量數據的基礎上,數據類型也各不相同——通常要同時面對多種類型的數據,這些數據還隨著時間不斷變化,且這些數據不需要先轉換成特定的格式,也不需要保持一致。

  • 分析數據所採用的方式允許出於不同的目的對相同數據池進行持續分析。

  • 所有這一切都能夠迅速完成,甚至是實時的。

在早期,業界提出了一個縮寫詞來描述四個特徵中的三個:VVV,代表了體量(volume,體量巨大)、類型繁多(variety,不同類型的數據,數據隨時間變化)、速度(velocity)。

大數據和數據倉庫

VVV首字母縮寫遺漏了一個關鍵的概念,即不需要永久地改變(轉換)要分析的數據。這種非破壞性的分析意味著誰都可以出於不同的目的去分析相同的數據池,並可以分析從不同源收集的數據。

作為對比,數據倉庫是專門設計用於特定目的、分析特定數據,並對數據進行結構化處理,轉換為特定的格式。在整個過程中,為了特定的目的,原始數據基本上需要全部被打亂——這被稱之為提取、轉換和加載(ETL)。數據倉庫的ETL方法只針對特定的數據進行特定的分析。這適用於所有數據都要在您的工作系統中的情況,但是在今天互聯網連接的世界裡,數據來自四面八方,這就不太適用了。

什么是大数据?你所需要知道的一切

但是,不要認為大數據會使數據倉庫過時。大數據系統可以讓您非常方便地處理非結構化數據,但您得到的查詢結果類型遠沒有數據倉庫的那麼複雜。畢竟,數據倉庫的目的是深入分析數據,它之所以能很好地做到這一點,是因為它把所有數據都轉換為一致的格式,使您能夠去構建用於深度挖掘的數據集等類似的工作。數據倉庫供應商花了多年的時間來優化他們的查詢引擎,回答典型業務環境中的問題。

大數據支持您分析來自多個數據源的大量數據,但分辨率較低。因此,在未來一段時間內,我們將同時使用傳統的數據倉庫和新方法。

大數據背後的技術突破

為實現大數據四方面的特徵——體量巨大、類型繁多、非破壞式使用和速度,這需要技術上的突破,包括分佈式文件系統(Hadoop)的發展,這是一種方便快捷地瞭解不同數據的方法(最早是谷歌的MapReduce,還有最近的Apache Spark),以及根據需要訪問和移動數據的雲/互聯網基礎設施。

直到大約十年前,一次處理的數據量還相對較少。(嗯,當時,我們都認為數據倉庫是非常巨大的。自從互聯網產生數據並把各處的數據連接起來之後,情況發生了巨大的變化。)有限的數據存儲數量和位置,計算能力不足,處理來自多個源的不同數據格式的能力也有限,這些因素使得幾乎無法完成數據處理任務。

什么是大数据?你所需要知道的一切

隨後,大約2003年的時候,谷歌的研究人員開發了MapReduce。這種編程技術首先把數據映射到一系列鍵/值,對類似的鍵值進行計算,將它們縮減為單個值,然後在數百臺或者數千臺低成本機器上並行處理每一批數據,從而簡化了大規模數據集的處理。這種龐大的並行特性使谷歌能夠從越來越大量的數據中更快的得到搜索結果。

2003年左右,谷歌實現了兩個突破,這使得大數據的發展更進一步。一是Hadoop,它是由兩項關鍵服務組成的:

  • 使用Hadoop分佈式文件系統(HDFS),可靠的存儲數據。

  • 使用稱為MapReduce的技術進行高性能並行數據處理。

Hadoop運行在商用無共享服務器集群上。您可以隨意添加或者刪除Hadoop集群中的服務器;系統會檢測並修復任何服務器上的硬件或者系統問題。換句話說,Hadoop是自我修復的。不管系統進行了修改還是出現了故障,它都能提供數據,運行大規模、高性能處理工作。

雖然Hadoop為數據存儲和並行處理提供了一個平臺,但真正的價值來自於附加組件、交叉集成和技術的定製實現。為此,Hadoop提供了子項目,這些子項目為平臺增加了功能和新特性:

  • Hadoop Common:支持其他Hadoop子項目的公共實用程序。

  • Chukwa:一個用於管理大型分佈式系統的數據採集系統。

  • Hbase:一個可擴展的分佈式數據庫,為大型表提供結構化數據存儲支持。

  • HDFS:一種分佈式文件系統,支持對應用數據的大吞吐量訪問。

  • Hive:提供數據摘要和即席查詢的數據倉庫基礎設施。

  • MapReduce:計算集群上大數據集分佈式處理的軟件框架。

  • Pig:並行計算的高級數據流語言和執行框架。

  • ZooKeeper:分佈式應用的高性能協調服務。

大部分Hadoop平臺的實現應至少包括其中的一些子項目,因為它們通常是開發大數據所必需的。例如,大多數企業選擇使用HDFS作為主要的分佈式文件系統,把HBase作為數據庫,它可以存儲數十億條數據。使用MapReduce或者最近的Spark幾乎是必須的,因為它們提高了Hadoop平臺的速度和敏捷性。

什么是大数据?你所需要知道的一切

採用MapReduce,開發人員可以在分佈式處理器集群或者單機上開發並行處理大量非結構化數據的程序。MapReduce框架分為兩個功能區:

  • Map,這一功能把工作分發到分佈式集群中的不同節點上。

  • Reduce,這一功能將工作排序並把結果解析為單個數值。

MapReduce的主要優點之一是它是容錯的,這通過監視集群中的每個節點來實現;每個節點都需要定期報告完成的工作和狀態更新。如果一個節點保持沉默的時間比預期的間隔長,那麼主節點會發出通知並將工作重新分配給其他節點。

Apache Hadoop是以MapReduce為核心的一種開源框架,兩年後才開發出來。Hadoop最初是用來索引現在不太常用的Nutch搜索引擎的,現在幾乎所有的主要行業都使用Hadoop來進行多種大數據工作。在Hadoop的分佈式文件系統和YARN(Yet Another Resource Negotiator,另一種資源調度器)的支持下,該軟件使用戶能夠處理分佈在數千臺設備上大量的數據集,就好像它們都在一臺巨大的機器上一樣。

2009年,加州大學伯克利分校的研究人員開發了Apache Spark來替代MapReduce。Spark使用內存存儲進行並行計算,因此,它比MapReduce快100倍。Spark可以作為一個獨立的框架或者在Hadoop內部運行。

即使使用Hadoop,您仍然需要一種方法來存儲和訪問數據。這通常是通過MongoDB、CouchDB或者Cassandra等NoSQL數據庫來實現的,它們專門處理分佈在多臺機器上的非結構化或者半結構化數據。對於數據倉庫,大量不同類型的數據融合成統一的格式,並存放在一個數據存儲中,與數據倉庫不同,這些工具不會改變數據的根本性質或者位置——電子郵件仍然是電子郵件,傳感器的數據仍然是傳感器的數據,而且可以存儲在任何地方。

然而,把體量巨大的數據存儲在機器集群上的NoSQL數據庫中,如果您不使用這些數據,那就體現不出這種方式的優勢所在。而這才是大數據分析的用武之地。Tableau、Splunk和Jasper BI等工具支持您解析數據,以識別模式、提取含義,並揭示出新的深度分析結果。您由此要開展的工作會因您的需求而有所不同。

(InfoWorld的執行編輯Galen Gruman、InfoWorld的特約編輯Steve Nunez、自由撰稿人Frank Ohlhorst和Dan Tynan均為本文做出了貢獻。)

編譯: Charles


分享到:


相關文章: