什麼是大數據?你需要知道的…..

大數據 數據庫 技術 IBM 管理 電腦 人機交互 微笑數據工程師 2019-07-10



什麼是大數據?你需要知道的…..

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

我們每天都在吃飯,睡覺,工作,玩耍,與此同時產生大量的數據。根據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這樣的工具可以讓您解析這些數據,以識別模式,提取意義並揭示新的見解。 你所做的事情會因你的需要而有所不同。

大數據開發高薪必備全套資源【免費獲取】

Oracle高級技術總監多年精心創作一套完整課程體系【大數據、人工智能開發必看】,全面助力大數據開發零基礎+入門+提升+項目=高薪

領取方法:

還是那個萬年不變的老規矩

1.評論文章,沒字數限制,一個字都行!

2.成為小編成為的粉絲!

3.私信小編:“大數據開發教程”即可!

謝謝大家,祝大家學習愉快!(拿到教程後一定要好好學習,多練習哦!)

相關推薦

推薦中...