歡迎光臨
每天分享高質量文章

什麼是大資料?你需要知道的…..

分析大量資料只是使大資料與以前的資料分析不同的部分原因之一。讓我們來從下麵三個方面看看。

我們每天都在吃飯,睡覺,工作,玩耍,與此同時產生大量的資料。根據IBM調研的說法,人類每天生成2.5億(250億)位元組的資料。 這相當於一堆DVD資料從地球到月球的距離,涵蓋我們傳送的文字、上傳的照片、各類感測器資料、裝置與裝置之間的通訊的所有資訊等。

這也就是為什麼“大資料”成為如此常見的流行詞的一個重要原因。簡單地說,當人們談論大資料時,他們指的是獲取大量資料的能力,分析它,並將其轉化為有用的東西。

01 確切的說,什麼是大資料?

當然,大資料還遠遠不止這些?

通常從多個來源獲取大量資料

不僅僅是大量的資料,而且是不同型別的資料,同時也有多種資料,以及隨時間變化的資料,這些資料不需要轉換成特定的格式或一致性。

以一種方式分析資料,允許對相同的資料池進行分析,從而實現不同的目的

儘快實現所有這一切。

在早些時候,這個行業提出了一個縮略詞來描述這四個方面中的三個:VVV,體積(數量巨大),多樣性(不同型別的資料和資料隨時間變化的事實)和周轉率(速度)。

02 大資料與資料倉庫

VVV的縮寫詞所忽略的是資料不需要永久更改(轉換)的關鍵概念——進行分析。這種非破壞性分析意味著,組織可以分析相同的資料連線池以不同的目的,並可以收集到不同目的的來源分析資料。

(備註:資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重覆使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效能。)

相比之下,資料倉庫是專門為特定目的分析特定資料,資料結構化並轉換為特定格式,原始資料在該過程中基本上被銷毀,用於特定目的,而不是其他被稱為提取,轉換和載入(ETL)。 資料倉庫的ETL方法有限分析具體資料進行具體分析。 當您的所有資料都存在於您的交易系統中時,這是非常好的,但在當今網際網路連線的世界中,資料來自無處不在。

備註:ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將資料從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在資料倉庫,但其物件並不限於資料倉庫。

ETL是構建資料倉庫的重要一環,使用者從資料源抽取出所需的資料,經過資料清洗,最終按照預先定義好的資料倉庫模型,將資料載入到資料倉庫中去。

資訊是現代企業的重要資源,是企業運用科學管理、決策分析的基礎。目前,大多數企業花費大量的資金和時間來構建聯機事務處理OLTP的業務系統和辦公自動化系統,用來記錄事務處理的各種相關資料。據統計,資料量每2~3年時間就會成倍增長,這些資料蘊含著巨大的商業價值,而企業所關註的通常只佔在總資料量的2%~4%左右。因此,企業仍然沒有最大化地利用已存在的資料資源,以至於浪費了更多的時間和資金,也失去制定關鍵商業決策的最佳契機。於是,企業如何透過各種技術手段,並把資料轉換為資訊、知識,已經成了提高其核心競爭力的主要瓶頸。而ETL則是主要的一個技術手段。

資料倉庫,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個資料儲存,出於分析性報告和決策支援目的而建立。 為需要業務智慧的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。資料倉庫是決策支援系統(dss)和聯機分析應用資料源的結構化資料環境。資料倉庫研究和解決從資料庫中獲取資訊的問題。資料倉庫的特徵在於面向主題、整合性、穩定性和時變性。

決策支援系統(Decision Support System,簡稱DSS),是以管理科學、運籌學、控制論、和行為科學為基礎,以計算機技術、模擬技術和資訊科技為手段,針對半結構化的決策問題,支援決策活動的具有智慧作用的人機系統。該系統能夠為決策者提供所需的資料、資訊和背景資料,幫助明確決策標的和進行問題的識別,建立或修改決策模型,提供各種備選方案,並且對各種方案進行評價和優選,透過人機互動功能進行分析、比較和判斷,為正確的決策提供必要的支援。它透過與決策者的一系列人機對話過程,為決策者提供各種可靠方案,檢驗決策者的要求和設想,從而達到支援決策的目的。

決策支援系統一般由互動語言系統、問題系統以及資料庫、模型庫、方法庫、知識庫管理系統組成。在某些具體的決策支援系統中,也可以沒有單獨的知識庫及其管理系統,但模型庫和方法庫通常則是必須的。由於應用領域和研究方法不同,導致決策支援系統的結構有多種形式。

決策支援系統強調的是對管理決策的支援,而不是決策的自動化,它所支援的決策可以是任何管理層次上的,如戰略級、戰術級或執行級的決策。

但是,不要認為大資料會使資料倉庫過時。大資料系統可以讓您在很大程度上處理非結構化資料,但是所得到的查詢結果與資料倉庫的複雜程度是不一樣的。畢竟,資料倉庫是為了深入資料而設計的,它之所以能夠做到這一點,是因為它已經將所有資料轉換成一種一致的格式,讓您可以像構建立方體一樣進行深入查詢。

多年來,資料倉庫供應商一直在最佳化他們的查詢引擎,以回答典型的業務環境問題。大資料可以讓你從更多的資料源中獲取更多的資料,但解析度要低一些。因此,在未來一段時間內,我們將與傳統的資料倉庫一起並存。

03 技術突破大資料背後

為了完成大資料量,品種,非破壞性使用和速度的四個方面,包括分散式檔案系統(hadoop)的開發,一種意識到不同資料的方法(Google的Map、Reduce以及最近的Apache Spark),以及雲/網際網路基礎設施,用於根據需要訪問和行動資料。

直到大約十幾年前,在任何一個時間都不可能操縱比較少的資料。(嗯,我們都認為資料倉庫當時是巨大的,隨著網際網路的產生和連線的資料到處都是這樣的背景)。對資料儲存的數量和位置的限制、計算能力以及處理來自多個資料源的不同資料格式的能力使得這項任務幾乎不可能完成。

然後,在2003年左右的時間裡,Google的研究人員開發了Map、Reduce。 這種程式設計技術透過首先將資料對映到一系列鍵/值對來簡化處理大資料集,然後對類似的鍵執行計算以將它們減少到單個值,以數百或數千個低位並行處理每個資料塊 成型機。 這種巨大的並行性允許Google從越來越大量的資料中產生更快的搜尋結果。

在2003年,Google創造了兩個突破,使得大資料成為可能:一個是Hadoop,它由兩個關鍵服務組成:

使用Hadoop分散式檔案系統(HDFS)可靠的資料儲存

使用稱為Map、Reduce的技術進行高效能並行資料處理。

Hadoop執行在商品,無共享伺服器的集合上。 您可以隨意新增或刪除Hadoop叢集中的伺服器; 系統檢測並補償任何伺服器上的硬體或系統問題。 換句話說,Hadoop是自我修複的。 儘管發生系統更改或故障,它可以提供資料並執行大規模,高效能的處理作業。

Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。

Hadoop的框架最核心的設計就是:HDFS和Map、Reduce。HDFS為海量的資料提供了儲存,則Map、Reduce為海量的資料提供了計算。

儘管Hadoop為資料儲存和並行處理提供了一個平臺,但實際價值來自於該技術的附加元件,交叉整合和自定義實現。 為此,Hadoop提供的子專案為平臺增加了功能和新功能:

Hadoop Common:支援其他Hadoop子專案的常用工具。

Chukwa:用於管理大型分散式系統的資料收集系統。

HBase:可擴充套件的分散式資料庫,支援大型表格的結構化資料儲存。

HDFS:分散式系統,可提供對應用程式資料的高吞吐量訪問。

蜂巢:提供資料彙總和即席查詢的資料倉庫基礎設施。

Map/Reduce:用於在計算叢集上分散式處理大型資料集的軟體框架。

pig:平行計算的高階資料語言和執行框架。

ZooKeeper:分散式應用程式的高效能協調服務。

Hadoop平臺的大多數實施方案至少包括這些子專案中的一些,因為它們通常是開發大資料所必需的。 例如,大多陣列織選擇使用HDFS作為主分散式檔案系統,將HBase用作資料庫,可以儲存數十億行的資料。 並且使用Map/Reduce或更新近的Spark幾乎是給定的,因為它們為Hadoop平臺帶來了速度和靈活性。

透過Map、Reduce,開發人員可以建立可以並行處理大量非結構化資料的程式,這些資料可以在分散式的處理器或獨立計算機上並行處理。MapReduce框架被劃分為兩個功能區域:

Map(對映),一個將工作分發到分散式叢集中的不同節點的功能。

Reduce函式:整理工作並將結果解析成單個值的功能。

Map、Reduce的主要優點之一是它是容錯的,它透過監視叢集中的每個節點來實現;每個節點都需要定期報告,完成的工作和狀態更新。如果一個節點保持比預期的時間,間隔更長的時間,那麼主節點將會記錄並將工作分配給其他節點。

Apache Hadoop是一種使用Map、Reduce核心的開源框架,兩年後開發出來了。Hadoop最初是用來索引現在不知名的Nutch搜尋引擎的,現在幾乎所有主要行業都使用Hadoop來進行大範圍的大資料工作。得益於Hadoop的分散式檔案系統和紗線(另一個資源協商者),該軟體讓使用者可以在數千臺裝置上處理大規模資料集,就好像它們都在一臺巨大的機器上一樣。

Nutch 是一個開源Java 實現的搜尋引擎。它提供了我們執行自己的搜尋引擎所需的全部工具。包括全文搜尋和Web爬蟲。

Nutch組成:

爬蟲crawler和查詢searcher。

Crawler主要用於從網路上抓取網頁併為這些網頁建立索引。

Searcher主要利用這些索引檢索使用者的查詢關鍵詞來產生查詢結果。

兩者之間的介面是索引,所以除去索引部分,兩者之間的耦合度很低。

Crawler和Searcher兩部分儘量分開的目的主要是為了使兩部分可以分散式配置在硬體平臺上,例如將Crawler和Searcher分別放在兩個主機上,這樣可以提升效能。

Crawler 的重點在兩個方面,Crawler的工作流程和涉及的資料檔案的格式和含義。資料檔案主要包括三類,分別是web database(WebDB),一系列的segment加上index,三者的物理檔案分別儲存在爬行結果目錄下的db目錄下webdb子檔案夾內,segments 檔案夾和index檔案夾。那麼三者分別儲存的資訊是什麼呢?

一次爬行會產生很多個segment,每個segment記憶體儲的是爬蟲Crawler在單獨一次抓取迴圈中抓到的網頁以及這些網頁的索引。Crawler爬行時會根據WebDB中的link關係按照一定的爬行策略生成每次抓取迴圈所需的fetchlist(Crawler根據WebDB生成一個待抓取網頁的URL集合),然後 Fetcher(下載執行緒)透過fetchlist中的URLs抓取這些網頁並索引,然後將其存入segment。Segment是有時限的,當這些網頁被 Crawler重新抓取後,先前抓取產生的segment就作廢了。在儲存中。Segment檔案夾是以產生時間命名的,方便我們刪除作廢的 segments以節省儲存空間。

Index是Crawler抓取的所有網頁的索引,它是透過對所有單個segment中的索引進行合併處理所得的。Nutch利用Lucene技術進行索引,所以Lucene中對索引進行操作的介面對Nutch中的index同樣有效。但是需要註意的是,Lucene 中的segment和Nutch中的不同,Lucene中的segment是索引index的一部分,但是Nutch中的segment只是WebDB中各個部分網頁的內容和索引,最後透過其生成的index跟這些segment已經毫無關係了。

Web database,也叫WebDB,其中儲存的是爬蟲所抓取網頁之間的連結結構資訊,它只在爬蟲Crawler工作中使用而和Searcher的工作沒有 任何關係。WebDB記憶體儲了兩種物體的資訊:page和link。Page物體透過描述網路上一個網頁的特徵資訊來表徵一個實際的網頁,因為網頁有很多個需要描述,WebDB中透過網頁的URL和網頁內容的MD5兩種索引方法對這些網頁物體進行了索引。Page物體描述的網頁特徵主要包括網頁內的link數目,抓取此網頁的時間等相關抓取資訊,對此網頁的重要度評分等。同樣的,Link物體描述的是兩個page物體之間的連結關係。

工作步驟 :

在Nutch中,Crawler操作的實現是透過一系列子操作的實現來完成的。這些子操作Nutch都提供了子命令列可以單獨進行呼叫。下麵就是這些子操作的功能描述以及命令列,命令列在括號中。

1. 建立一個新的WebDb(admin db -create).

2. 將抓取起始URLs寫入WebDB中 (inject).

3. 根據WebDB生成fetchlist並寫入相應的segment(generate).

4. 根據fetchlist中的URL抓取網頁 (fetch).

5. 根據抓取網頁更新WebDb(updatedb).

6. 迴圈進行3-5步直至預先設定的抓取深度。

7. 根據WebDB得到的網頁評分和links更新segments (updatesegs).

8. 對所抓取的網頁進行索引(index).

9. 在索引中丟棄有重覆內容的網頁和重覆的URLs (dedup).

10. 將segments中的索引進行合併生成用於檢索的最終index(merge).

2009年,加州大學伯克利分校的研究人員開發了Apache Spark作為MapReduce的替代品。 由於Spark使用記憶體儲存並行執行計算,因此可以比MapReduce快100倍。 Spark可以作為獨立框架或Hadoop內部工作。

使用Hadoop,仍然需要一種儲存和訪問資料的方法。 這通常透過諸如MongoDB之類的NoSQL資料庫(如CouchDB或Cassandra)完成,該資料庫專門處理分佈在多臺計算機上的非結構化或半結構化資料。與在資料倉庫中不同的是,大量資料和型別的資料融合成統一格式並儲存在單個資料儲存中,這些工具不會改變資料的底層性質或位置 – 電子郵件仍然是電子郵件,感測器資料仍然是 感測器資料 – 可以幾乎儲存在任何地方。

儘管如此,在使用多臺機器的資料庫中儲存大量的資料並不是很好,直到你做了一些事情。 這就是大資料分析的原理。像Tableau,Splunk和Jasper BI這樣的工具可以讓您解析這些資料,以識別樣式,提取意義並揭示新的見解。 你所做的事情會因你的需要而有所不同。

來源:數盟

精彩活動

福利 · 閱讀 | 免費申請讀大資料新書 第23期

推薦閱讀

2017年資料視覺化的七大趨勢! 

全球100款大資料工具彙總(前50款) 

論大資料的十大侷限

大資料時代的10個重大變革

大資料七大趨勢 第一個趨勢是物聯網

Q: 你理解的大資料是什麼?

歡迎留言與大家分享

請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:hzzy@hzbook.com

更多精彩文章,請在公眾號後臺點選“歷史文章”檢視

贊(0)

分享創造快樂