1. 程式人生 > >大資料技術背景介紹(開號篇)

大資料技術背景介紹(開號篇)

1、什麼是大資料?

大資料(Big Data),指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。

大資料的5V特點(IBM提出):

  • Volume(大量)——資料的大小決定所考慮的資料的價值和潛在的資訊;

  • Velocity(高速)——指獲得資料的速度;

  • Variety(多樣)——指資料型別的多樣性;

  • Value(價值)——合理運用大資料,以低成本創造高價值;

  • Veracity(真實性)——資料的質量;

2、大資料的意義

現在的社會是一個高速發展的社會,科技發達,資訊流通,人們之間的交流越來越密切,生活也越來越方便,大資料就是這個高科技時代的產物。阿里巴巴創辦人馬雲來臺演講中就提到,未來的時代將不是IT時代,而是DT的時代,DT就是Data Technology資料科技,顯示大資料對於阿里巴巴集團來說舉足輕重。

有人把資料比喻為蘊藏能量的煤礦。煤炭按照性質有焦煤、無煙煤、肥煤、貧煤等分類,而露天煤礦、深山煤礦的挖掘成本又不一樣。與此類似,大資料並不在“大”,而在於“有用”。價值含量、挖掘成本比數量更為重要。對於很多行業而言,如何利用這些大規模資料是贏得競爭的關鍵。大資料的價值體現在以下幾個方面:

  • 對大量消費者提供產品或服務的企業可以利用大資料進行精準營

  • 做小而美模式的中小微企業可以利用大資料做服務轉型

  • 面臨網際網路壓力之下必須轉型的傳統企業需要與時俱進充分利用大資料的價值

3、大資料的典型案例

A、啤酒與尿布

全球零售業巨頭沃爾瑪在對消費者購物行為分析時發現,男性顧客在購買嬰兒尿片時,常常會順便搭配幾瓶啤酒來犒勞自己,於是嘗試推出了將啤酒和尿布擺在一起的促銷手段。沒想到這個舉措居然使尿布和啤酒的銷量都大幅增加了。如今,“啤酒+尿布”的資料分析成果早已成了大資料技術應用的經典案例,被人津津樂道。

這裡寫圖片描述

B、大資料與喬布斯癌症治療

喬布斯是世界上第一個對自身所有DNA和腫瘤DNA進行排序的人。為此,他支付了高達幾十萬美元的費用。他得到的不是樣本,而是包括整個基因的資料文件。醫生按照所有基因按需下藥,最終這種方式幫助喬布斯延長了好幾年的生命。

這裡寫圖片描述

C、 QQ圈子把前女友推薦給未婚妻

2012年3月騰訊推出QQ圈子,按共同好友的連鎖反應攤開使用者的人際關係網,把使用者的前女友推薦給未婚妻,把同學同事朋友圈子分門別類,利用大資料處理能力給人帶來“震撼”。

D、意料之外:胸部最大的是新疆妹

淘寶資料平臺顯示,購買最多的文胸尺碼為B罩杯。B罩杯佔比達41.45%,其中又以75B的銷量最好。其次是A罩杯,購買佔比達25.26%,C罩杯只有8.96%。在文胸顏色中,黑色最為暢銷。以省市排名,胸部最大的是新疆妹子。

4、OLTP與OLAP

A、OLTP

OLTP,即On-Line Transaction Processing(聯機事務處理過程),也稱為面向交易的處理過程,其基本特徵死前臺接收的使用者資料可以立即傳送到計算中心進行處理,並在很短的時間內給出處理結果,是對使用者操作快速響應的方式之一。衡量聯機事務處理結果的一個重要指標是系統性能,具體體現為實時請求-響應時間(Response Time),即使用者在終端輸入資料之後,到計算機對這個請求給出答覆所需要的時間。OLTP是由前臺、應用、資料庫共同完成的,處理快慢以及處理程度取決於資料庫引擎、伺服器、應用引擎。OLTP是傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。

OLTP據有一些明顯的特徵:1)支援大量併發使用者定期新增和修改資料;2)提供用於支援單位日常運營的技術基礎結構;3)包含大量資料,其中包括用於驗證事務的大量資料;4)個別事務能夠很快完成,並且只需訪問相對較少的資料;5)交易一般是確定的,故OLTP是對確定性的資料進行存取;6)併發性要求高並且嚴格的要求事務完整和安全;7)實時性要求高;8)資料量不是特別大;9)系統結構複雜等。

典型案例:銀行轉賬

這裡寫圖片描述

B、OLAP

OLAP,即On-Line Analytical Processing(聯機分析處理過程),其是資料倉庫系統的主要應用,支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。OLAP具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多維資訊的快速分析的特徵。其中,F是快速性(Fast),指系統能在數秒內對使用者的多數分析要求做出反應;A是可分析性(Analysis),指使用者無需程式設計就可以定義新的專門計算,將其作為分析的一部分,並以使用者所希望的方式給出報告;M是多維性(Multi-dimensional),指提供對資料分析的多維書體和分析;I是資訊性(Information),指能及時獲得資訊,並且管理大量資訊。

OLAP的主要特點,是直接仿照使用者的多角度思考模式,預先為使用者組建多維的資料模型,在這裡,維指的是使用者的分析角度。例如對銷售資料的分析,時間週期是一個維度,產品型別、分銷渠道、地理分佈、客戶群類也分別是一個維度。一旦多維資料模型建立完成,使用者就可以快速地從各個分析角度獲取資料,也能動態地在各個角度之間切換或者進行多角度綜合分析,具有極大的分析靈活性。這也是聯機分析處理被廣泛關注的根本原因,它從設計理念和真正實現上都與傳統的管理資訊系統有著本質的區別。

典型案例:商品推薦

這裡寫圖片描述

C、OLTP與OLAP的比較:

| | OLTP | OLAP
|使用者 | 操作人員,底層管理人員 | 決策人員,高階管理人員 |
| 功能 | 日常操作處理 | 分析決策 |
| DB設計 面向應用 | 面向主題 |
| 資料 | 當前的,最新的,細節的,二維的、分立的 | 歷史的,聚集的,多維的,整合的,統一的 |
| 存取 | 讀/寫數十條記錄 | 讀取上百萬條記錄 |
| 工作單位 | 簡單的事務 | 複雜的查詢 |
| DB大小 | 100MB-GB | 100GB-TB |

5、資料倉庫

資料倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。資料倉庫的目的,是構建面向分析的整合化資料環境,為企業提供分析性報告和決策支援(Decision Support)。其實資料倉庫本身並不“生產”任何資料,同時也不需要“消費”任何資料,資料來源於外部,並且開放給外部應用,這也是為什麼它叫“倉庫”,而不叫“工廠”的原因。

這裡寫圖片描述

從上圖可以看出,資料倉庫的基本架構主要包含的是資料的流入和流程過程,可以分為三大部分——資料來源、資料倉庫(包括資料儲存及管理和資料集市)以及資料應用(前端展示)。資料倉庫的資料來自於不同的資料來源,並提供多樣的資料應用,資料自左向右流入資料倉庫後向上層應用程式開放應用,而資料倉庫只是中間整合化資料管理的一個平臺。資料倉庫從各資料來源獲取資料及在資料倉庫內的轉換和流動,都可以認為是ETL(抽取Extra,轉化Transfer,裝載Load)過程,ETL是資料倉庫的流水線,也可以認為是資料倉庫的血液,它維繫著資料倉庫中資料的新陳代謝,而資料倉庫日常管理和維護工作的大部分精力就是保持ETL的正常運作和穩定。

6、HADOOP思想的起源

首先簡單介紹下google,google旗下有非常多的產品,如Google搜尋引擎,Gmail郵件,安卓作業系統,Google地圖,Google地球,Google學術,Google翻譯,Google+等,下一步Google What?這些產品為我們的生活帶來了巨大的變革,可以說在這個世紀,如果你不會用Google,你的生活質量也不會怎麼高。

下面來看看google的低成本之道,這四個方面決定了google的成本很低,利潤自然就高:

  • 不使用超級計算機,不使用儲存(淘寶的去i,去e,去o之路);

  • 大量使用普通的pc伺服器(去掉機箱,外設,硬碟),提供有冗餘的叢集服務;

  • 全世界多個數據中心,有些甚至還附帶發電廠;

  • 運營商向google倒付費。

這裡寫圖片描述

然後講講任何搜尋引擎都會面臨的幾個難題,google自然也會遇到,但正是google的解決方案才成就了今天的Hadoop。

a. 大量的網頁如何儲存?

b. 海量的網頁如何搜尋?(搜尋演算法)

c. 海量的網頁如何排名?(Page-Rank計算問題)

針對如上三個問題,google是怎麼解決的呢?google發表了三篇論文(這也就是Hadoop的思想來源)。

A、《The Google File System》

GFS(Google File System:Google檔案系統)是一個可擴充套件的分散式檔案系統,用於大型的、分散式的、對大量資料進行訪問的應用。它運行於廉價的普通硬體之上,並提供容錯功能,同時它還可以給大量的使用者提供總體效能較高的服務。

這裡寫圖片描述

B、《MapReduce:Simplified Data Processing OnLarge Clusters》

MapReduce最早是由google公司研究提出的一種面向大規模資料處理的平行計算模型和方法,google公司設計MapReduce的初衷主要是為了解決其搜尋引擎中大規模網頁資料的並行化處理。概念“Map(對映)”和“Reduce(規約)”,是MapReduce的主要思想,它們都是從函數語言程式設計語言裡借鑑來的,也有從向量程式語言裡借鑑來的特性。MapReduce極大地方便了程式設計人員在不會分散式並行程式設計的情況下,將自己的程式運行於分散式系統之上。當前的軟體實現是指定一個Map函式,用來把一組鍵值對對映成一組新的鍵值對,指定併發的Reduce函式,用來保證所有對映的鍵值對中的每一個共享相同的鍵組。

這裡寫圖片描述

C、《Bigtable:A Distributed Storage Systemfor Structured Data》

BigTable是Google設計的分散式資料儲存系統,用來處理海量資料的一種非關係型的資料庫.BigTable是一個用於管理結構型資料的分散式儲存系統,被設計為可擴充套件到很大規模:通過數以千臺的機器儲存PB級資料。BigTable實現了幾個目標:廣泛適用、可擴充套件、高效能和高可用。

這裡寫圖片描述

7、HADOOP的產生

Hadoop是什麼?Hadoop不是指具體的一個框架或者元件,它是Apache軟體基金會下用Java語言開發的一個開源分散式計算平臺,實現在大量計算機組成的叢集中對海量資料進行分散式計算,適合大資料的分散式儲存和計算。

Hadoop名字不是一個縮寫,而是一個生造出來的詞,是以Hadoop之父Doug Cutting兒子的毛絨玩具象命名的。2003-2004年,Google公佈了部分GFS和MapReduce思想的細節,受此啟發的Doug Cutting等人用2年的業餘時間實現了DFS和MapReduce機制,使Nutch效能飆升,隨後Yahoo招安Doug Gutting及其專案。2005年,Hadoop作為Lucene的子專案Nutch的一部分正式引入Apache基金會,2006年2月被分離出來,成為一套完整獨立的軟體,起名為Hadoop。

這裡寫圖片描述

8、HADOOP框架

Apache Hadoop是一款支援資料密集型分散式應用並以Apache 2.0許可協議釋出的開源軟體框架,它支援在以商品硬體構建的大型叢集上執行應用程式。Hadoop框架透明地為應用程式提供可靠性和資料移動,它實現了名為MapReduce的程式設計正規化:應用程式被分割成許多小部分,而每個部分都能在叢集中的任意節點上執行或重新執行。它主要擁有以下幾個優點:

a. 高可靠性:Hadoop按位儲存和處理資料的能力值得人們信賴;

b. 高擴充套件性:Hadoop是在可用的計算機叢集間分配資料並完成計算任務,這些叢集可以方便地擴充套件到數以千計的節點中;

c. 高效性:Hadoop能夠在節點之間動態地移動資料,並保持各個節點的動態平衡,因此處理速度非常快;

d. 高容錯性:Hadoop能夠自動儲存資料的多個副本,並且能夠自動將失敗的任務重新分配;

e. 低成本:Hadoop是開源的,專案的軟體成本因而得以大大降低。

這裡寫圖片描述

9、HADOOP家族部分成員介紹

HDFS——Hadoop分散式檔案系統,被設計成適合部署於通用、低廉的硬體之上,有著高容錯性、高吞吐量、高可靠性等特點;

MapReduce——一種程式設計模型,用於大規模資料集的並行運算,用Map和Reduce兩個函式程式設計實現基本的平行計算任務,而且還提供了抽象的操作和並行程式設計介面,以簡單方便地完成大規模資料的程式設計和計算處理;

YARN——一種新的Hadoop資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,它的引入為叢集在利用率、資源統一管理和資料共享等方面帶來了巨大好處;

HBase——HBase是一個分散式的、面向列的開源資料庫,與一般的關係型資料庫不同,它適合於非結構化資料儲存與查詢,具有高可靠性、高效能、面向列和可伸縮等特點;

Hive——基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行;

Pig——一種資料流語言和執行環境,用於檢索非常大的資料集,為大型資料集的處理提供了一個更高層次的抽象。Pig包括兩部分:一是用於描述資料流的語言,稱為Pig Latin;二是用於執行Pig Latin程式的執行環境;

Flume——Cloudera提供的一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸的系統。Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,還提供對資料進行簡單處理,並寫到各種資料接收方;

Sqoop——一款開源工具,主要用於在Hadoop(Hive)與傳統的資料庫(MySql、Oracle等)之間進行資料傳遞,可以將一個關係型資料庫中的資料匯入到Hadoop的HDFS中,也可以將HDFS中的資料導進到關係型資料庫中;

Zookeeper——一個分散式的、開放原始碼的分散式應用程式協調服務,是Hadoop和HBase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等;

HUE——一個開源的Apache Hadoop UI系統,由Cloudera Desktop演化而來,最後由Cloudera公司將其貢獻給Apache基金會的Hadoop社群,它是基於Python Web框架Django實現。通過使用HUE可以在瀏覽器端的Web控制檯上與Hadoop叢集進行互動來分析處理資料,例如操作HDFS上的資料、執行MapReduce Job、執行Hive的SQL語句、瀏覽HBase資料庫等;

Storm——一個開源、分散式、高容錯的實時大資料處理架構,它使得持續不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求,Storm經常用於實時分析、線上機器學習、持續計算、分散式遠端呼叫和ETL等領域;

Spark——專為大規模資料處理而設計的快速通用的計算引擎,它擁有Hadoop MapReduce所具有的優點,但不同於MapReduce的是——Job中間的輸出結果可以儲存在內容中,從而不再需要讀寫HDFS,提高了執行效率。Spark是在Scala語言中實現的,它將Scala用作其應用程式框架,具有易用性、通用性、速度快等眾多特點,現已形成一個高速發展、應用廣泛的生態系統;

Redis——一個開源(BSD許可)的、使用ANSI C語言編寫的、支援網路、基於記憶體亦可持久化的日誌型、Key—Value資料庫,可以用作資料庫、快取和訊息中介軟體。為了實現其卓越的效能, Redis 採用執行在記憶體中的資料集的工作方式。根據實際使用情況,可以每隔一定時間將資料集匯出到磁碟,或者追加到命令日誌中,也可以關閉持久化功能,將Redis作為一個高效的網路快取資料功能來使用。

更多大資料技術內容, 歡迎關注

g更多大資料內容,歡迎關注

參考文獻:
——《百度百科》
——《CSDN其他博文》
——《潭州大資料課程課件》