《大數據導論(第2版)》全套教學課件_第1頁
《大數據導論(第2版)》全套教學課件_第2頁
《大數據導論(第2版)》全套教學課件_第3頁
《大數據導論(第2版)》全套教學課件_第4頁
《大數據導論(第2版)》全套教學課件_第5頁
已閱讀5頁,還剩343頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

大數據導論全套可編輯PPT課件章節名稱16學時方案32學時方案48學時方案1大數據與數據科學1242數據采集與預處理2463數據存儲2464大數據處理2465數據分析2466數據可視化2447數據安全與隱私2468大數據應用2469數據思維124第一章

大數據與數據科學全套可編輯PPT課件

2011年麥肯錫就報告稱,到2018年,僅美國就可能面臨14萬至19萬人的深度分析人才短缺,以及150萬懂得如何利用大數據分析做出有效決策的經理和分析師的短缺。為了有效地解決當今的許多大數據問題,一門叫做數據科學(datascience)的學科應運而生。用數據的方法研究科學、用科學的方法研究數據,數據科學是一門培養有能力應對大數據時代挑戰的人才的學科。摘要1.1什么是大數據1.2大數據的發展1.4數據科學的概念1.3大數據時代的挑戰目錄CONTENT1.5數據科學的由來1.6數據科學的應用場景1.1什么是大數據PART12019年4月10日9時(北京時間10日2時),天文學家們宣布,首次捕捉到黑洞真容。視界望遠鏡一個晚上所產生的數據量高達2PB(1PB=1000TB=1000000

GB)幫助天文學家分析出來黑洞的周圍有什么,這些東西以什么樣的狀態存在,還可以拼接出黑洞的動態影像。1.1什么是大數據天文學大數據M87中心超大質量黑洞1.1.1大數據的概念規模龐大,結構復雜,難以通過現有商業工具和技術在可容忍的時間內獲取、管理和處理的數據集。維

科大數據是具有大規模、分布式、多樣性和/或時效性的數據,這些特點決定了必須采用新的技術架構和分析方法才能有效地挖掘這些新資源的商業價值。麥

錫“大數據”是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。高

納McKinsey&Company麥肯錫公司是世界級領先的全球管理咨詢公司,是由美國芝加哥大學商學院教授詹姆斯·麥肯錫(JamesO’McKinsey)于1926年在美國創建。Gartner高德納全球最具權威的IT研究與顧問咨詢公司,成立于1979年,總部設在美國康涅狄克州斯坦福。1.1.1大數據的概念SAS軟

所SAS是數據分析領域的佼佼者。SAS軟

所大數據描述了非常大量的數據——包括結構化和非結構化數據。但重要的不是數據量。重要的是組織如何處理數據。大數據可以被分析,以獲得有助于做出更好決策和商業戰略行為。美國國家標準技術研究院由具有規模巨大、種類繁多、增長速度快和變化多樣化,且需要一個可擴展體系結構來有效存儲、處理和分析的廣泛的數據集組成。NIST美國國家標準與技術、生物和工程方面的基礎和應用研究,以及測量技術和測試方法方面的研究,提供標準、標準參考數據及有關服務,在國際上享有很高的聲譽。隨著傳感器、智能設備、社交媒體、物聯網、移動計算等新的數據媒介不斷涌現,產生的數據類型無以計數。一個規模中等的城市視頻監控信息一天就能產生幾百TB的數據量。1.1.2大數據的特征數

Volume種

類Variety在一小時的視頻中,有用的數據可能僅僅只有一兩秒,但是卻會非常重要?,F在許多專家已經將大數據等同于黃金和石油,這表示大數據當中蘊含了無限的商業價值。大數據的數據產生、處理和分析的速度快。大數據的快速處理能力充分體現出它與傳統的數據處理技術的本質區別。1.1.2大數據的特征速度

Velocity價值

Value1.1.3大數據的結構類型結構化數據款號上市年份顏色材質0012019黑棉0022018白桑蠶絲0032019紅滌綸1.1.3大數據的結構類型半結構化數據、準結構化數據、非結構化數據半結構化數據,例如有模式定義的和自描述的可擴展標記語言[XML]數據文件。準結構化數據,帶有不規則的數據格式,但是可以通過工具規則化,例如,可能包含不一致的數據值和格式的網頁點擊流數據。非結構化數據,數據沒有固定的結構,例如文本文件,PDF文件、圖像和視頻。1.2大數據的發展PART21.2大數據的發展計算機性價比的提高,磁盤價格的下降,利用通用服務器對大量數據進行高速處理的軟件技術Hadoop的誕生,亞馬遜的云計算服務EC2和S3

現在的大數據已經不僅產生于傳統特定領域中,例如Facebook、推特、微博、微信等社交媒體上的文本數據。大數據的產生硬件性價比提高與軟件技術進步云計算的普及1.3大數據時代的挑戰PART3分治法、選用制定特殊方法數據安全和個人數據泄露的風險隱私保護21數據的存儲和計算能力1

1.3大數據時代的挑戰

1.4數據科學的概念PART4數據科學定義數據科學就是一門通過系統性研究來獲取與數據相關的知識體系的科學。研究數據本身,研究數據的各種類型、結構、狀態、屬性及變化形式和變化規律;通過對數據的研究,為自然科學和社會科學的研究提供一種新的方法——稱為科學研究的數據方法,其目的在于揭示自然界和人類行為的現象和規律。兩層含義兩層含義1.4數據科學的概念數據模型、數據過濾、數據統計和分析、數據結構優化等。數據與統計學相關知識12計算機科學的相關知識數據的獲取技術、數據的處理方法、數據的存儲和安全性保障等。數據的可視化、數據的協同仿真、虛擬環境的實現,機器學習算法的應用、神經網絡的運用等。圖形學、人工智能相關知識3領域相關知識處理特定領域的數據分析和解讀時需要用到的理論和方法等。41.4數據科學的概念數據科學具體研究內容數據的觀察方法和數據推理的理論,包括數據的存在性、數據測度、數據代數、數據相似性與簇論、數據分類與數據百科全書等。研究數據挖掘、清洗、存儲、處理、分析、建模、可視化展現等一系列過程中所遇到的各種技術難題和挑戰。認識數據的各種類型、狀態、屬性及其變化形式和變化規律,揭示自然界和人類行為的現象和規律。腦數據科學、行為數據科學、生物數據科學、氣象數據科學、金融數據科學、地理數據科學等基礎理論研究數據資源的開發利用方法和技術研究領域數據科學研究實驗和邏輯推理方法研究1.5數據科學的由來PART51.5數據科學的由來1.6數據科學的應用場景PART6六個核心領域:數據/分析設計,數據/分析內容,數據/分析軟件,數據/分析基礎設施,數據/分析服務和數據/分析教育。行業數據數據服務是整個數據和分析領域的一部分,正改變著我們生活的方方面面,通過分析為核心業務和新經濟。數據服務1.6數據科學的應用場景大數據的現實需求:感知現在28感知現在:歷史數據與當前數據的融合,潛在線索與模式的挖掘,

事件、群體與社會發展狀態的感知中國發展指數(物價、環境、健康)需求:掌握現狀,如淘寶CPI、環境指數難點:PB級社會媒體數據,百億級日志數據,結構與非結構數據關聯,歷史與流式數據并存犯罪線索挖掘需求:發現線索,如罪犯行為軌跡難點:PB級日志數據、EB級監控數據中發現嫌疑人及其行為模式猶如大海撈針問題與挑戰:數據規模巨大、模態多樣、關聯復雜、真偽難辨

現有數據處理方法感知度量難、特征融合難、模式挖掘難大數據的價值科研價值1998年圖靈獎得主、數據庫技術奠基人JimGray認為數據驅動的研究將是第四種科學研究范式”TheFourthParadigm:Data-IntensiveScientificDiscovery”大數據已為多個不同學科的研究工作提供了寶貴機遇經濟價值麥肯錫全球研究院:大數據可為世界經濟創造巨大價值,提高企業和公共部門的生產率和競爭力,并為消費者創造巨大的經濟利益著名Gartner公司:到2015年,采用大數據和海量信息管理的公司將在各項財務指標上,超過未做準備的競爭對手20%工業價值分析使用:揭示隱藏其中的信息,例如零售業中對門店銷售、地理和社會信息的分析能提升對客戶的理解二次開發:創造出新產品和服務。例如Facebook通過結合大量用戶信息,定制出高度個性化的用戶體驗,并創造出一種新的廣告模式社會價值例如:2009年淘寶網推出淘寶CPI來反映網絡購物的消費趨勢和價格動態其他價值…DataisthenextIntelInside.Thefuturebelongstothecompaniesandpeoplethatturndataintoproducts.----著名出版公司O‘Reilly的創始人TimO‘Reilly深網挖掘深空探索2012年我國神州九號進入太空深海探測2012年我國蛟龍號探測水下7000米實現大數據價值的

深度挖據和高度利用!大數據的戰略意義大數據的深度資源挖掘與價值利用是國家戰略從深空

+

深海

深網大數據的現實需求:預測未來聯合國“全球脈動”(GlobalPulse):利用網絡大數據預測失業率與疾病爆發等現象,利用數字化的早期預警信號來提前指導援助項目。問題與挑戰:數據交互性強、實時性強、動態演變,導致傳統數據計算方法:

數據生命周期的割裂、時效性與準確性難以兼顧、演變趨勢難以預測基于Twitter數據的選舉結果預測:通過對Twitter等網上公開數據的實時感知、動態獲取與綜合分析,結合仿真調控,預測大選結果。預測未來:全量數據、流式數據、離線數據的關聯分析,態勢與效應的判定與調控,揭示事物發展的演變規律,進而對事物發展趨勢進行預測第二章

數據采集與數據預處理數據采集是大數據分析的前導過程,無法獲取到有效的數據是無法進行大數據分析的。如果說數據源是大數據平臺蓄水池的上游,數據采集就是獲取水源的管道。通過數據采集獲取的是原始數據,原始數據是不能直接進行分析和處理。原始數據通常存在的缺失值、數據格式不統一、數據格式標準不相同等問題。數據預處理就是對原始數據進行初步處理,解決缺失值、格式不統一等問題,為后續的數據分析提供一個相對完成的數據集。摘要2.1概述2.4小結2.2數據采集技術2.3數據預處理技術目錄CONTENT2.1概述PART1(1)企業系統:銷售系統、庫存系統、企業客戶管理系統等。(2)機器系統:智能儀表、工業傳感器、視頻監控系統等。(3)互聯網系統:各類電商平臺、政府監管系統、服務行業業務系統等。(4)社交網絡系統:微信、QQ、微博、朋友圈等。2.1概述大數據的主要來源數據庫采集數據庫采集就是采集這些SQL和NoSQL數據庫中的內容,并在這些數據庫之間進行負載均衡和分片,完成采集工作。2系統日志采集收集企業業務平臺上日常產生的大量日志數據,提供離線和在線的大數據分析系統使用。3網絡數據采集網絡采集是指通過網絡爬蟲抓取網站上的數據信息的過程。(1)傳統數據采集數據源單一,大多是從企業的客戶管理系統、企業業務系統中獲取數據;而大數據采集不僅包含傳統的數據采集來源,還需要從社交系統、互聯網系統以及各類傳感器設備中采集信息。(2)從數據量方面來看,大數據時代所采集到的數據量要遠遠大于傳統的數據采集數據量。(3)從數據結構方面看,傳統的數據采集一般采集的是結構化數據(主要來源于關系數據庫),大數據時代采集的數據包括視頻、音頻、圖片等非結構化數據,以及網頁、日志等半結構化數據。2.1概述大數據時代數據來源的特點大數據采集方法數據清洗數據集成

數據變換數據規約隨著企業信息化的發展,企業積累了前所未有的海量數據,使用大數據挖掘和分析技術能夠從這些數據中獲取隱含而又十分有用的信息,使得這些數據成為企業寶貴的財富。然而,數據中通常存在各種錯誤,如屬性值的缺失、錯誤的分類、記錄的重復等。因此,數據預處理是工作在數據挖掘之前2.1概述為什么要數據預處理數據預處理方法2.2數據采集技術PART22.2數據采集技術2.2.1網絡數據采集圖2.1網絡爬蟲工作原理2.2數據采集技術2.2.1網絡數據采集網絡爬蟲的工作原理是:(1)啟動網絡爬蟲工作前,首先初始化URL隊列,即在URL隊列中放入一個或若干個初始URL,這個(些)初始的URL稱為種子URL。然后,啟動網絡爬蟲開始工作。(2)從URL隊列中取出一個鏈接,從該鏈接所對應的目標網址下載整個網頁中的內容。(3)解析所下載網頁,找到所需要的內容,如文本、音頻、視頻等。(4)分析下載網頁中是否存在指向其它網頁的鏈接。如果該網頁中沒有指向其它網頁的鏈接,則轉(5)。否則將新鏈接加入到URL隊列中,轉(4)繼續分析該網頁所包含的下一個鏈接。(5)將該網頁的URL鏈接移入到已完成隊列中,表示該網頁已經被抓取,且該網頁中不存在指向其它網頁的鏈接。(6)判斷URL隊列是否為空,為空則停止網絡爬蟲的工作,否則從URL中取出下一個鏈接,轉(2)。2.2數據采集技術2.2.1網絡數據采集1.通用網絡爬蟲通用網絡爬蟲又稱為全網爬蟲,其抓取對象是從種子URL擴充到整個互聯網資源。由于通用網絡爬蟲的抓取目標是整個互聯網中的各類數據,因此主要被各大門戶搜索引擎和大型的web服務供應商所采用。出于商業目的,通用網絡爬蟲的技術細節很少被公布出來。通用網絡爬蟲的爬行范圍和數量非常巨大,對爬行速度和存儲空間的要求較高,同時互聯網中網頁刷新的速度很快,因此通用網絡爬蟲一般采用分布式架構、并行的工作方式。2.主題網絡爬蟲相對于通用網絡爬蟲,主題網絡爬蟲有選擇性的抓取那些與預先定義好的主題相關的頁面。因此,主題網絡爬蟲極大的節省了硬件和網絡資源,保存的頁面數量較少,更新速度更快,同時可以滿足某些特定人群對特定領域信息的需求。2.2數據采集技術2.2.1網絡數據采集3.增量式網絡爬蟲互聯網中網頁的內容隨時會產生更新,有的是整個網頁的更新,有的是網頁部分內容的更新。那么,對于網頁部分內容的更新,如果對整個網頁進行抓取將會浪費大量的時間和帶寬資源。這時,增量式網絡爬蟲可以解決這個問題。增量式網絡爬蟲是指對已下載網頁采取增量式更新,只抓取新產生的或者已經發生變化的網頁內容的網絡爬蟲,能夠在一定程度上保證所抓取的頁面時盡可能新的頁面。4.深層網絡爬蟲互聯網中的頁面按照存在方式可分為表層頁面(SurfaceWeb)和深層頁面(DeepWeb)。表層頁面是指傳統搜索引擎可以索引的頁面,以超鏈接的形式可以達到的靜態頁面為主所構成的頁面。深層頁面是指那些大部分內容不能通過靜態超鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的頁面,例如那些用戶注冊后才可見的頁面就屬于深層頁面。目前,互聯網中深層頁面所蘊含的信息量是表層頁面的幾百倍,深層頁面時互聯網上最大、發展最快的新型信息資源的載體。2.2數據采集技術2.2.1網絡數據采集5.頁面搜索策略在網絡爬蟲中,頁面的抓取策略可以分為深度優先和廣度優先兩種策略。(1)廣度優先搜索廣度優先搜索策略是指在抓取過程中,在完成當前層次的搜索之后,才能進入下一層次的搜索。其目的是為了覆蓋盡可能多的頁面。主題網絡爬蟲一般會使用廣度優先搜索策略,其基本思想是認為與初始URL在一定鏈接距離內的頁面具有與主題相關性的概率很大。但是在實際情況中,存在于同一頁面中的URL也有可能是與主題時不相關的。因此,隨著抓取頁面的增多,大量無關的頁面將被下載,產生“主題漂移”的現象。(2)深度優先搜索深度優先搜索策略是從初始頁面開始,選擇一個URL進入,分析這個頁面中的URL,再選擇一個進入。如此一個鏈接一個鏈接的抓取下去,直到處理完一條線路之后再處理下一條線路。伸出優先搜索策略設計較為簡單,但這種策略抓取深度直接影響抓取命中率及抓取效率,因此抓取深度是這種策略的關鍵。2.2數據采集技術2.2.1網絡數據采集6.八爪魚網絡信息采集1啟動軟件2使用簡易模式2.2數據采集技術2.2.1網絡數據采集6.八爪魚網絡信息采集3設置參數4配置任務2.2數據采集技術2.2.1網絡數據采集6.八爪魚網絡信息采集5開始抓取數據6保存數據2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(1)Scrapy引擎(ScrapyEngine):引擎負責控制數據流在Scrapy框架中的流動方向和順序,并在適當的時機觸發相應的事件。(2)調度器(Scheduler):調度器負責從Scrapy引擎接收Request請求,并將其加入爬蟲的URL隊列,以便爬蟲從URL隊列中獲取將要抓取的網頁地址。(3)下載器(Downloader):下載器負責網頁數據的抓取,將其結果提供給Spider。(4)Spiders:Spider是Scrapy用戶自己編寫的內容用于分析網頁Response的內容,提取其中的item,每一個Spider負責處理一個特定的URL。(5)Item管道(ItemPipeline):Item管道負責具體處理由Spiders提取出來的Item。2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(6)下載器中間件(Downloadermiddlewares):下載器中間件是引擎與下載器之間的特定鉤子(hook),主要用于處理下載器傳遞給引擎的Response,其提供了一個簡單的機制,可以插入自定義的代碼來擴展Scrapy的功能。(7)Spider中間件(Spidermiddlewares):Spider中間件是引擎與Spider之間的鉤子(hook),負責處理Spider的輸入(Response)和輸出(Items和Requests),它同樣提供了一個簡單的機制,來實現插入自定義代碼擴展Scrapy的功能。2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(1)環境要求:裝好Python編譯環境和Scrapy框架(2)創建工程項目:使用命令“scrapystartprojectjd_spider”,在當前目錄下面創建名稱為“jd_spider”的工程項目文件夾。2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(3)編輯item.py文件,其內容是:importscrapyclassTutorialItem(scrapy.Item):title=scrapy.Field()link.=scrapy.Field()dese=scrapy.Field()price=scrapy.Filed()2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(4)在工程目錄中的spiders目錄中創建jdspider.py文件,并編輯其內容:importscrapyclassjdspider(scrapy.Spider):name='jd'allowed_domains=['']start_urls=["/12451724.html"]defparse(self,response):filename=response.url.split("/")[-2]withopen(filename,'wb')asf:f.write(response.body)2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy5)啟動爬蟲運行,打開命令行進入工程目錄,使用命令“scrapycrawljd”啟動爬蟲。2.2數據采集技術2.2.1網絡數據采集7.Python爬蟲框架—Scrapy(6)在工程目錄下面可以看到一個“”的文件,用文本編輯器打開即可看到爬蟲抓取到的網頁內容。2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeApacheFlume是一個可以收集日志、事件等數據資源,并將這些數量龐大的數據從各項數據資源中集中起來的工具或服務,是一種數據集中機制。Flume具有高可用性、分布式的特性,其設計原理也是基于數據流模型例如將日志文件從各種網站服務器上匯集起來存儲到HDFS、HBase等集中存儲器中。2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeFlume的運行核心是Agent,即Agent是Flume中最小的獨立運行單位。一個Agent就是一個JVM,它是一個完整的數據收集工具,含有三個核心組件,分別是source、channel、sink2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeSource是數據的收集端,負責將數據捕獲后進行特殊的格式化,將數據封裝到事件(event)里,然后將事件推入Channel中2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeFlume中內置了很多source可以讓程序員同已有的source打交道。如果內置的source無法滿足需要,Flume還支持自定義source。source類型說明Avrosource支持Avro協議,內置支持Thriftsource支持Thrift協議,支持內置Execsource支持Unix的command在標準輸出上產生的數據JMSsource從JMS系統(消息、主題)中讀取數據SpoolingDirectorysource監控指定目錄內的數據變更Netcatsource監控某個端口,將流經端口的每一行文本數據作為Event的輸入SequenceGeneratorsource序列生成器數據源,生產序列數據Syslogsource讀取syslog數據,產生Event,支持UDP和TCP兩種協議HTTPsource基于HTTPPOST過GET方式的數據源,支持JSON,BLOB2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeChannel是連接source和sink的組件,可以將其視作一個數據緩沖區(數據隊列),它可以將事件暫存到內存也可以持久化到本地磁盤上,直到sink處理完該事件。Channel的類型如表所示。Channel類型說明MemorychannelEvent數據存儲在內存中JDBCchannelEvent數據存儲在持久化數據庫中FilechannelEvent數據存儲在磁盤文件中SpillableMemorychannelEvent數據存儲在內存和磁盤上Customchannel自定義channel實現2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeSink從channel中取出事件,然后將數據發到別處,如文件系統、數據庫、Hadoop等發送你數據,2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeFlume內置了很多sink類型,在使用時可以直接調用sink類型說明HDFSsink數據寫入HDFSLoggersink數據寫入日志文件Avrosink數據轉換為AvroEvent,然后發送到RPC端口Thriftsink數據轉換為ThriftEvent,然后發送到RPC端口IRCsink數據在IRC上進行回收FileRollsink數據存儲在本地文件系統HBasesink數據寫入到HBase數據庫MorphlineSolrsink數據發送到Solr搜索服務器(集群)ElasticSearchsink數據發送到ElasticSearch搜索服務器(集群)Customsink自定義sink實現2.2數據采集技術2.2.2日志數據采集技術1.ApacheFlumeFlume還支持用戶建立多級數據流,也就是說,多個Agent可以協同工作。這就使得Flume可以同時處理多種日志混雜在一起的情況。例如,當syslog、Java、nginx、tomcat等混合在一起的日志流開始流入一個Agent后,Agent可以根據不同的日志類型建立不同的數據傳輸通道。2.2數據采集技術2.2.2日志數據采集技術2.ApacheKafkaKafka是由Apache軟件基金會的一個開源流處理平臺,它是一種高吞吐量的分布式發布訂閱消息系統,可以處理網站中的所有動作流數據。動作流數據是指用戶的行為動作,如網頁瀏覽、搜索、以及其它用戶的動作行為,這些數據通常是通過處理日子和聚合日志來解決。Kafka是一個分布式消息隊列,具有高性能、持久化、多副本備份、橫向擴展能力。2.2數據采集技術2.2.2日志數據采集技術2.ApacheKafkaKafka數據流圖2.2數據采集技術2.2.2日志數據采集技術2.ApacheKafkaKafka與Flume有很多功能是重復的,二者的主要不同點有:(1)Kafka是一個通用型系統,可以有多個生產者和消費者分享多個主題。Flume被設計為面向特定用途的工作,向特定的HDFS和HBase發送數據。Flume為了更好的為HDFS和HBase服務而進行了特定的優化,并且與Hadoop的安全體系整合在了一起。(2)Flume內置了很多數據類型,如source和sink類型等,Kafka是面向生產者和消費者體系環境的。如果數據來源已經確定,不需要額外的編碼,可以使用Flume提供的source和sink,反之,如果還需要準備自己的生產者和消費者,則需要使用Kafka。(3)無論是Flume或是Kafka,都可以保證不丟失數據。但是,Flume不會存儲事件的副本,如果Flumeagent節點宕機,會失去所有事件的訪問能力,直到受損的節點修復。Kafka的管道特性則不會有這樣的問題。(4)Flume和Kafka可以一起工作,如果需要把流式數據從Kafka轉移到Hadoop,可以把Kafka作為Flume的一個來源(source),這樣可以從Kafka讀取數據到Hadoop。2.3數據預處理技術PART32.3數據預處理技術在獲取到的數據中,可能存在大量的異常數據,如數據不完整(有缺失值)、數據類型不一致等。這些異常數據有可能對數據分析算法產生不良影響,造成分析結果產生偏差,因此數據預處理過程就顯得尤為重要。數據預處理一方面是要提高數據質量,另一方面是要使數據能夠更好的適應后續的數據分析或數據挖掘算法。根據有關統計,數據預處理工作要占整個數據分析過程的60%。數據預處理包括數據清洗、數據集成、數據變換和數據規約2.3數據預處理技術2.3.1數據清洗數據清洗(DataCleaning)是對數據進行重新審核和校驗的過程,其目的是刪除重復信息、糾正存在的錯誤,并提供數據一致性。一般情況下,數據是從多個業務系統抽取而來的,如通過爬蟲獲得的數據、從用戶的日志文件中獲取的數據等,這樣就避免不了有的數據時錯誤的、有的數據直接存在相互沖突,這些錯誤的或者有沖突的數據顯然不是想要的,稱為“臟數據”。數據清洗的任務就是“清洗”掉這些“臟數據”,將符合規則的數據保留下來。2.3數據預處理技術2.3.1數據清洗1.刪除記錄刪除記錄的方法是通過刪除包含缺失值的記錄來完成,這種方法實現簡單。然而,這種方法有較大的局限性,它是以減少歷史數據來換取數據的完備性,丟棄了大量隱藏在這些記錄中的信息。尤其是在數據本來就包含很少記錄的情況下,刪除記錄可能會嚴重影響后續算法的客觀性和正確性。因此,刪除記錄的方法通常應用在數據量大,且缺失值記錄占比較少的情況,通過簡單刪除小部分記錄達到既定的目標。2.3數據預處理技術2.3.1數據清洗2.數據插補拉格朗日插值法是以十八世紀數學家約瑟夫·路易斯·拉格朗日命名的一種多項式插值方法,其基本思路是給出一個恰好穿過二維平面上若干個已知點的多項式。利用最小次數的多項式來構建一條光滑曲線,使曲線通過所有的已知點。在數學上,對于平面上已知的n個點(無兩點在一條直線上),可以找到一個n-1次多項式:使得此多項式對應的曲線通過這n個點。2.3數據預處理技術2.3.1數據清洗2.數據插補將n個點的坐標代入到多項式中:可以解出拉格朗日插值多項式為:2.3數據預處理技術2.3.1數據清洗2.數據插補例如:平面上有4個點,,試用拉格朗日插值法計算缺失值。將以上各點的坐標代入拉格朗日插值公式中,得出插值多項式為:將x=18代入插值多項式:因此,缺失的值是:-11。2.3數據預處理技術2.3.1數據清洗3.不處理在數據預處理時,異常值是否剔除,取決于具體情況,有些異常值可能蘊含著有用的信息。在這種情況下,對異常值不做處理,直接在具有異常值的數據集上進行挖掘建模。2.3數據預處理技術2.3.2數據集成在數據分析時,所需要的數據往往分布在不同的數據源中,數據集成就是把不同來源、格式、特點性質的數據在邏輯上或物理上有機的集中并存放在一個一致的數據存儲(如數據倉庫)中的過程。在數據集成的過程中,來自多個數據源的數據在現實世界現實世界中的表達形式是不一樣的或不匹配的,要考慮到實體識別問題和屬性冗余問題,從而將數據源在最底層進行轉換、提煉和集成。2.3數據預處理技術2.3.2數據集成1.實體識別現實世界中的實體在不同的數據源中有不同的表述方式,實體識別的任務就是統一不同數據的矛盾之處,有以下幾種常見形式:同名異義:例如數據源A中的ID屬性表示課程號,數據源B中的ID屬性表示學生的學號。兩個數據源的屬性名稱相同,但表示的是不同的實體。異名同義:異名同義是指不同的數據源中,相同名稱的屬性表示的是不同的實體。單位不統一:指在不同的數據源中所采用的單位不相同,如數據源A中采用的是國際單位,而數據源B中采用的是中國傳統的計量單位。2.3數據預處理技術2.3.2數據集成2.冗余屬性識別數據集成往往會導致數據冗余,常發生的情況為:同一屬性多次出現和同一屬性命名不一致導致重復。因此,在整合不同數據源的數據時要能減少甚至避免數據冗余與不一致。對于冗余的屬性可以用相關分析檢測,用相關系數來度量一個屬性在多大程度上蘊含另一個屬性。2.3數據預處理技術2.3.3數據變換在數據集成中,不同來源的數據格式、單位等不盡完全相同,需要對不同來源的數據進行“適當的”變換,適應建模任務和算法的需要。2.3數據預處理技術2.3.3數據變換1.簡單函數變換數據簡單函數變換主要是對原始數據進行某些數學函數變換,常用的變換包括:平方:取對數:開方:差分運算:簡單函數變換的目的是將原來不具備正態分布的數據轉換成具有正態分布的數據,或通過差分運算將非平穩序列轉換為平穩序列等。2.3數據預處理技術2.3.3數據變換2.歸一化不同的數據來源往往具有不同的量綱,數值之間的差別可能很大,如果不進行處理會直接影響數據分析的結果。歸一化處理是消除指標之間的量綱取值范圍差異的影響,將數據按照比例進行縮放,使之落入一個特特定的區域,便于進行綜合分析。:其中,max為樣本數據的最大值,min為樣布數據的最小值。最小--最大值歸一化:也稱為離差歸一化,對原始數據進行線性變換,將數值映射到[0,1]之間零--均值均值歸一化:也稱為標準差歸一化,經過歸一化之后的數據其均值為0,標準差為1。其中,為原始數據的平均值,為原始數據的標準差。零—均值規范化是當前用的最多的數據標準化方法。2.3數據預處理技術2.3.3數據變換3.屬性構造在數據分析中,需要進行深層次的信息挖掘,以便獲得原始數據中隱藏的關系,此時需要根據已有的屬性構建新的屬性,并加入到現有屬性的集合中。例如:在進行序列分析時,要根據以往的歷史數據來預測未來發展趨勢。這時要根據原始數據的屬性構建新的能夠反映歷史發展趨勢的屬性,諸如均值、方差、標準差、一階差分等,并將新的屬性加入到原始的屬性集合中。:2.3數據預處理技術2.3.4數據歸約一般情況下,原始數據的數量較大,而且結構復雜,直接在原始數據集上進行數據分析將會耗費很長的時間。數據規約是產生更小但保持原數據完整性的新數據集。數據歸約的目的是:降低無效、錯誤數據對建模的影響,提高建模的準確性;少量且具有代表性的數據將大幅縮減數據分析所需的時間;降低存儲數據的成本。2.3數據預處理技術2.3.4數據歸約1.屬性歸約屬性規約時通過屬性的合并或刪除不相關的屬性來減少數據的維數,從而提高數據分析的效率,降低計算成本。常用的屬性規約方法有以下幾種::(1)屬性合并:將若干舊的屬性合并為新的屬性。例如:初始屬性集合為:,屬性可進行以下規約::規約后的屬性集合為:2.3數據預處理技術2.3.4數據歸約1.屬性歸約(2)逐步向前選擇:從一個空的屬性集合開始,每次從原始屬性集合中選擇一個當前最優的屬性添加到當前屬性子集中。直到無法選出最優屬性或滿足一定的閾值約束條件為止。(初始屬性集合為:,假設其中最優的屬性為,次優的屬性為,再次優的屬性為。如果需要從原始屬性中規約出最優的3個屬性,逐步向前選擇方法步驟如下:2.3數據預處理技術2.3.4數據歸約1.屬性歸約(3)逐步向后刪除:從一個全屬性集開始,每次從當前的屬性集合中選擇一個當前最差的屬性并將其從當前屬性集中移除,直到無法選擇出最差的屬性或者滿足一定的閾值約束條件為止。(初始屬性集合為:,假設其中最優的屬性為,次優的屬性為,再次優的屬性為。其余的屬性為相對較差的屬性。果需要從原始屬性中規約出最優的3個屬性,逐步向后刪除方法步驟如下:2.3數據預處理技術2.3.4數據歸約2.主成成分分析主成成分分析法是一種用于連續屬性的降維方法,它構造了原始數據的一個正交變換,新空間的基底去除了原始空間基底下數據的相關性,只需要使用少數新屬性就能解釋原始屬性。一般情況下,主成成分分析法選擇出的屬性個數要少于原始屬性的個數,能夠解釋原始屬性的新的屬性稱為主成成分。2.4本章小結PART42.4本章小結本章的主要內容是數據采集和數據預處理,這兩部分內容是大數據分析的重要步驟。數據采集是完成數據的導入工作,將不同數據源的數據采集到一起進行存儲。數據采集是大數據分析首先要做的工作,主要介紹了網絡數據和日志數據的采集方法。數據預處理是對采集到的數據進行第一步的預處理工作,數據預處理的目的是將采集到的數據進行預處理,如補齊缺失值、數據歸一化等,將數據處理為后續的數據挖掘算法能夠直接進行處理。第三章

數據存儲據存儲在大數據分析中至關重要,一方面數據采集過程采集到的數據需要存儲某種文件系統中,另一方面存儲的性能在一定程度上能夠影響大數據系統分析的性能。分布式文件系統是近年來流行的大數據文件存儲系統,本章的主要內容是介紹大數據分析中所用到的主流分布式文件存儲系統。摘要3.1概述3.4小結3.2大數據存儲3.3分布式數據庫目錄CONTENT3.1概述PART13.1數據存儲概述3.1.1數據存儲的發展歷程1.打孔卡紙1725年由BasileBouchon發明出來,最初是用來保存印染布上的圖案,直到20世紀70年代用于存儲計算機數據。由于其能存儲的信息實在少的可憐,一般它是用來保存不同計算機的設置參數,而不是用來存儲數據。2.穿孔紙帶AlexanderBain在1864年最早使用了穿孔紙帶,紙帶上每一行代表一個字符,顯然穿孔紙帶的容量比打卡紙大多了。3.1數據存儲概述3.1.1數據存儲的發展歷程3.計數電子管1946年RCA公司啟動了對計數電子管的研究,一個電子管(25厘米)能夠存儲4096bit的數據。同年,ENIAC計算機誕生,它的存儲采用的是真空電子管系統,在賓夕法尼亞大學的一座建筑里占據了170平方米的面積。4.盤式磁帶20世紀50年代,IBM最早把盤式磁帶用在數據存儲上,一卷磁帶可以代替一萬張打孔卡紙,成為直到80年代之前最為普及的計算機存儲設備。3.1數據存儲概述3.1.1數據存儲的發展歷程5.盒式錄音磁帶盒式錄音磁帶是飛利浦公司在1963年發明的,直到70年代才開始流行開來。一些計算機,如ZXSpectrum,Commodore64和AmstradCPC使用它來存儲數據。一盤90分鐘的錄音磁帶,在每一面可以存儲700KB到1M的數據。6.磁鼓一支磁鼓有12英寸長,一分鐘可以轉12500轉。它在IBM650系列計算機中被當成主存儲器,每支可以保存1萬個字符(不到10K)。3.1數據存儲概述3.1.1數據存儲的發展歷程7.軟盤1969年,第一張8英寸大的軟盤面世,可以保存8KB的只讀數據。到了20世紀90年代后期,容量為250MB的3.5英寸可讀寫軟盤已經被廣泛應用了。8.硬盤1956年,IBM發明了第一個硬盤,由50個24英寸的盤片組成,只有5MB,但卻有兩臺冰箱大小,重量超過1噸。到20世紀60、70年代,14英寸的硬盤成為市場的主流,1980年,3.5吋,5M容量的硬盤開始出現,80年代末期,2.5英寸的硬盤誕生,90年代FlashSSD誕生。2014年,3DNAND開始量產,這意味著存儲密度更高、體積更小的SSD成為可能。到目前為止,硬盤的技術還在繼續向前發展。3.1數據存儲概述3.1.1數據存儲的發展歷程9.大數據時代的存儲技術(1)虛擬化存儲虛擬化存儲是指對存儲硬件(內存、硬盤等)進行統一進行管理,并通過虛擬化軟件對存儲硬件進行抽象化表現。通過一個或多個服務,統一提供一個全面的服務功能。虛擬化存儲可以:屏蔽系統的復雜性,增加或集成新的功能,仿真、整合或分解現有的服務功能。虛擬化存儲是現階段以及未來的很長一段時間內的數據存儲技術的主要內容。(2)云存儲云存儲是在云計算的概念上延伸和發展出來的一個新概念,它是指通過集群應用、網絡技術或分布式文件系統等功能,使得網絡中大量不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統,保證數據的安全性,并節約存儲空間。(3)分布式存儲分布式存儲是相對于集中式存儲而言的,傳統的集中式存儲是將所有的數據進行集中存放,如設置專門的存儲陣列來存儲數據。分布式存儲是通過大規模集群環境來存儲數據,集群中的每個節點不僅要負責數據計算,同時還有存儲一部分數據。集群中所有節點存儲的數據的和才是完整的數據,集群中專門設置管理節點對數據的存儲進行管理、負載平衡等工作。3.1數據存儲概述3.1.2數據存儲模型1.行存儲模型行存儲是關系模型中常用的存儲方式,在關系模型中使用記錄(行或者元組)進行存儲,記錄存儲在表中,表由表結構所界定。表中的每一列都用名稱和類型,表中所有的數據都要符合表結構的定義。在物理存儲方面,行存儲模式是把數據庫中一行中的數據值串在一起存儲起來(行頭信息,列長,列值),然后再存儲下一行數據,以此類推。2.列存儲模型列存儲模型是以列相關存儲架構進行數據存儲,它以流的方式在列中存儲所有的數據,主要適合批量數據處理和隨機查詢。在物理存儲方面,列存儲模型是把一列中的數據值串放在一起存儲起來,然后再存儲下一列數據,以此類推。3.1數據存儲概述3.1.2數據存儲模型3.鍵值存儲模型鍵值存儲,即Key-Value存儲,簡稱KV存儲。其中,Key指存儲的索引,Value指索引所對應的值。它是NoSQL存儲的一種方式。鍵值存儲按照鍵值對的形式進行組織,索引和存儲,因此它不適合涉及過多數據關系的數據,但這種存儲方式能夠有效降低磁盤的讀寫次數,比傳統的SQL關系數據庫擁有更好的讀寫性能。4.圖形存儲模型圖形存儲對應的是圖數據庫,存儲頂點和邊的信息,并且支持添加注釋。圖數據庫可用于對事物建模,如社交圖譜、真實世界的各種對象等。圖數據庫的查詢語言一般用于查找圖形中端點的路徑,或端點之間路徑的屬性,例如Neo4j是一個典型的圖數據庫。3.2大數據存儲PART23.2大數據存儲在當今這樣一個信息爆炸的時代,信息資源呈現爆炸式的增長,對存儲系統的存儲容量、數據的可用性能高以及輸入/輸出的性能等各方面提出了更高的要求。海量數據一般指數據量大,往往是TB級、PB級的數據集合。存儲系統的存儲模式影響著整個海量數據存儲系統的性能,選擇一個良好的海量數據存儲模型能夠大大提高海量存儲系統的性能。對海量數據而言,在單一的存儲設備上存儲海量數據顯然是不可能的。需要對海量數據進行分布式存儲。如何對海量數據進行合理的組織、可靠存儲,并提供高效、高可用、安全的數據訪問性能稱為當前的一個研究熱點問題。理想的海量數據存儲模型應該能夠提供高性能、可伸縮、跨平臺、安全的數據共享能力。3.2大數據存儲3.2.1海量數據存儲關鍵技術1.分區技術分區技術是指為了更精細的對數據庫對象如表、索引以及索引編排表進行管理和訪問??梢詫@些數據庫對象進行進一步的劃分,這就是所謂的分區技術。分區的表通過使用“分區關鍵字”分區,分區關鍵字是確定某個行所在分區的一組列。例如Oracle提供了三種基本數據分配方法:范圍(range)、列表(list)、散列(hash)。通過數據分區方法,可以將表分成單一分區表或組合分區表。此外,Oracle還提供了三種類型的分區索引:本地索引、全局分區索引和全局非分區索引。可以根據業務需求選擇相應的索引分區策略,從而實現最合適的分區,以支持任何類型的應用。通過用于表、索引和索引編排表的分區技術,海量數據可以選用以上分區技術中的一種或幾種,通過一組完整的SQL命令來管理分區表,從而達到高性能檢索的目的。2.并行處理技術并行處理是指:將單個任務分解為多個更小的單元。不是將所有工作通過一個進程完成,而是將任務并行化,從而使得多個進程同時在更小的單元上運行,這樣能極大的提高系統性能并且能最佳的利用系統資源。由于并行系統的每個節點都互相獨立,使得一個節點如果出現故障不會導致整個數據庫的崩潰,剩余節點可以繼續為用戶提供服務的同時對故障節點進行恢復,因此并行技術比單節點的可靠性要高。如Oracle數據庫并行技術還能根據需要隨時分配和釋放數據庫實例,數據庫的機動性高。還有一點就是并行技術可以克服內存限制,為更多用戶提供數據服務。3.2大數據存儲3.2.2分布式文件系統布式文件系統(DistributedFileSystem)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。分布式文件系統的設計一般是基于客戶機/服務器模式(C/S模式)。分布式文件系統可以有效解決數據的存儲和管理難題:將固定于某個地點的某個文件系統,擴展到任意多個地點/多個文件系統,眾多的節點組成一個文件系統網絡。每個節點可以分布在不同的地點,通過網絡進行節點間的通信和數據傳輸。在使用分布式文件系統時,無需關心數據是存儲在哪個節點上、或者是從哪個節點從獲取的,只需要像使用本地文件系統一樣管理和存儲文件系統中的數據。3.2大數據存儲3.2.2分布式文件系統1.LustreLustre是一種基于集群的存儲體現結構,其核心組件是Lustre文件系統,它在Linux操作系統上運行,并提供符合POSIX標準的文件系統接口。Lustre可以提供數以萬計記的客戶端,PB級的數據存儲,以及每秒數百GB的吞吐量,因此很多高性能計算機中心采用Lustre文件系統作為全局文件系統3.2大數據存儲3.2.2分布式文件系統1.Lustre(1)管理服務器(MGS)MGS負責存儲集群中所有Lustre文件系統的配置信息,并將該信息提供給其它Lustre組件。Lustre客戶端通過聯系MGS獲取文件系統信息,集群中的Lustre目標(target)則獲取MSG提供的信息。MGS有自己的存儲空間,以便管理。同時,MGS可以同元數據服務器(MDS)放在一起,共享存儲空間。(2)元數據服務器(MDS)MDS存儲MDT中的元數據信息提供給Lustre客戶端使用。MDS管理Lustre文件系統中的名稱和目錄,為一個或多個本地MDT提供網絡請求使用。(3)元數據目標(MDT)MDT是MDS附加在存儲上的元數據(如文件名、目錄、權限等),一次只能有一個MDS訪問該MDT。如果當前的MDS發送故障,則備用MDS可以為MDT提供服務,這稱為MDS故障切換。(4)對象存儲服務器(OSS)OSS為一個或多個OST提供文件I/O服務,通常情況下一個OSS服務2到8個OST,每個OST最大16TB。(5)對象存儲目標(OST)用戶的數據文件存儲在一個或多個對象中,每個對象位于Lustre文件系統的單獨OST中。(6)Lustre客戶端Lustre客戶端是運行Lustre客戶端軟件的計算、可視化或桌面的節點,可掛載Lustre文件系統。3.2大數據存儲3.2.2分布式文件系統2.HDFSHDFS(HadoopDistributedFileSystem,Hadoop分布式文件系統)是Hadoop項目的核心子項目,是分布式計算中數據存儲管理的基礎,是基于流數據模式訪問和處理超大文件的需求而開發的,可以運行于廉價的商用服務器上。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。3.2大數據存儲3.2.2分布式文件系統2.HDFSHDFS的名字節點和數據節點都是運行在普通計算機上的軟件,任何支持Java的計算機都可以運行名字節點和數據節點,因此很容易將HDFS部署到大規模的集群上。集群中只有一個名字節點大大的簡化了系統體系結構,名字節點是整個HDFS集群的管理者,同時也是所有HDFS的元數據(Metedata)倉庫,其中包含所有數據存儲的各類信息。HDFS支持傳統的文件組織結構,一個用戶或者程序可以創建目錄,存儲文件到不同的目錄中。可以創建、移動文件,將文件從一個目錄移動到另一個目錄中,或者重命名等。名字節點維護文件系統的命名空間,任何文件命名空間的改變或屬性改變都被記錄到名字節點中。HDFS的物理存儲結構是基于塊的存儲方式,因此一個文件中除了最后一個塊,其它塊都有相同的大小(系統默認塊的大小是64MB)。為保障輸出存儲的安全性,HDFS采用塊冗余的策略,即同一個塊的內容分別備份(系統默認的備份數量是3)在不同的數據節點上。塊的大小和備份數是以文件為單位進行配置的,可以在文件創建時或創建之后修改備份數量。名字節點負責處理整個HDFS集群中所有塊的相關操作,它與數據節點的通信通過心跳信息來交互,周期性的接收來之數據節點的心跳和塊報告。一個心跳的到達表示這個數據節點是工作正常的,塊報告則包括該數據節點上所有塊的列表。3.3分布式數據庫PART33.3分布式數據庫分布式數據庫是指在邏輯上是一個整體,在物理上則是分別存儲在不同物理節點上的數據庫系統。應用程序通過網絡連接可以訪問分布在不同物理位置的數據庫。分布式數據庫分布性表現在數據庫中的數據不是存儲在同一臺計算機的存儲設備上,這是與傳統集中式數據庫的主要區別。對用戶而言,分布式數據庫系統在邏輯上和集中式數據庫系統一樣,用戶可以在任何一個場地執行全局應用,就好像那些數據是存儲在同一臺計算機上,用戶并沒有什么感覺不一樣的地方。在大多數網絡環境中,單個數據庫服務器最終會不滿足使用。如果服務器軟件支持透明的水平擴展,那么就可以增加多個服務器來進一步分布數據和分擔處理任務。分布式數據庫的主要優點有:(1)具有靈活的體系結構。(2)適應分布式的管理和控制機構。(3)經濟性能優越。(4)系統的可靠性高、可用性好。(5)局部應用的響應速度快。(6)可擴展性好,易于集成現有系統。分布式數據庫的主要缺點有:(1)系統開銷大,主要花在通信部分。(2)復雜的存取結構,原來在集中式系統中有效存取數據的技術,在分布式系統中都不再適用。(3)數據的安全性和保密性較難處理。3.3分布式數據庫3.3.1Hbase分布式數據庫HBase——HadoopDatabase,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可以在PC集群上搭建起大規模結構化存儲集群。HBase利用HadoopHDFS作為其文件存儲系統,利用HadoopMapReduce并行計算框架來批量處理HBase中的海量數據,利用Zookeeper作為HBase集群之間的協同服務。3.3分布式數據庫3.3.1Hbase分布式數據庫HMaster:HBaseHMaster是HBase集群的管理者,相當于HBase集群中的主機,用于協調多個HRegionServer,同時負責監聽各個HRegionServer的狀態,并平衡HRegionServer之間的負載。HBase允許多個HMaster節點共存,但這需要Zookeeper的協助。多個HMaster節點共存時,只有一個HMaster對外提供服務,其它的HMaster節點處于待命狀態。當正在工作的HMaster節點宕機時,其它的HMaster則會接管HBase集群。HRegionServer:HRegionServer是負責存儲HBase數據庫文件的服務器節點,類似Hadoop中的數據節點,其包含了多個HRegion。在讀寫數據時,Client直接連接RegionServer,獲取HBase中的數據。對于Region而言,時真實存儲HBase數據的地方,也就是說Region是HBase可用性和分布式的基本單位,當一個表格很大時,那么表格數據將存放在多個Region中。在每個Region中,會關聯多個存儲單元(Store)。Zookeeper:Zookeeper是HBaseMaster的高可用解決方案,即Zookeeper保證了至少有一個HBaseMaster處于運行狀態。此外,Zookeeper還負責Region和RegionServer的注冊管理任務。Zookeeper是HBase集群正常工作所不可或缺的一個必要組件。Store:HBase的存儲核心,由MemStore和StoreFlie組成,MemStore是文件存儲的緩存部分。3.3分布式數據庫3.3.1Hbase分布式數據庫1.HBase邏輯視圖HBase是一個構建在HDFS上的分布式列存儲系統,它是一種無模式的分布式數據庫,每一行都有一個可排序的主鍵和任意多的列,列可以根據需要動態添加,其數據類型單一,即HBase中的數據都是字符串,沒有類型。在HBase中,其邏輯視圖包括以下幾部分。RowKey(行鍵):行鍵是字節數組,任何字符串都可以作為行鍵,表中的行根據行鍵進行排序,對表中數據的訪問通過單個行鍵訪問或者行鍵范圍進行訪問。ColumnFamily(列族):列族必須在表定義時給出,數據按照列族分開存儲,即每個列族對應一個Store,這種設計非常適合進行數據分析。ColumnQualifier(列限定符):列里面的數據通過列限定符來定位,每個列族可以包含一個或多個列限定符。列限定符不需要在表定義時給出,新的列限定符可以按需、動態加入。TimeStamp(時間戳):每個單元格數據(HBase表中具體的數據)有多個時間版本,它們之間用時間戳區分。Cell(單元格):是HBase中存儲的具體數據的值(Value),單元格中的數據時沒有類型的,全部以字節碼的形式存儲。通過HBase的邏輯視圖可以看出,HBase中存儲的數據需要通過一個四維的坐標來索引,即:<RowKey,ColumnFamily,ColumnQualifier,TimeStamp>->Value。3.3分布式數據庫3.3.1Hbase分布式數據庫2.HBase物理視圖HBase物理視圖是指HBase數據的具體存儲方式,包括以下內容:(1)每個列族存儲在HDFS的一個單獨文件中,但空值不會被保存。(2)HBase為每個值(value)維護了一個多級索引,即:<RowKey,ColumnFamily,ColumnQualifier,TimeStamp>。(3)HBase表在行方向上分為多個Region。(4)Region是HBase中分布式存儲和負載平衡的最小單元,不同的Region分布在不同的RegionServer上。(5)Region是按大小分割的,隨著數據的增加,Region不斷增大,當增大到一定閾值時,Region會分成兩個新的Region。(6)Region是由一個或多個Store組成,每個Store保存一個列族。每個Store由多個StoreFile組成,StoreFile包含HFile,StoreFile存儲在HDFS上。3.3分布式數據庫3.3.1Hbase分布式數據庫3.-ROOT-表和.META.表在HBase中,所有Region的元數據信息是存儲在.META.表中,隨著Region數量的增多,.META.表中的數據也會增大,該表也會分裂并存儲在不同的Region中。因此,為了定位.META.表中各個Region的位置,把.META.表的多有Region的元數據保持在-ROOT-表中,-ROOT-表的訪問位置有Zookeeper來維護,3.3分布式數據庫3.3.1Hbase分布式數據庫客戶端在訪問HBase中的數據表時,通過Zookeeper找到-ROOT-表的位置,從中讀取到數據表的元數據信息,即獲取到.META.表中的信息,從.META.表中的RegionServer到Region的映射信息中找到存儲數據表的Region位置,這樣就能一層層的索引到用戶數據表所在的具體位置。-ROOT-表只有一個Region,所以永遠不會被分割。圖4.4的索引結構能夠保證在數據查詢時,只需要三次跳轉就可以定位任意一個Region。為了提高客戶端的訪問速度,.META.表的所有Region全部都在內存中,而且客戶端訪問過的位置信息也會緩存起來,且緩存不會主動失效,這樣能夠縮短客戶端訪問數據的時間。3.3分布式數據庫3.3.2MongoDB分布式數據庫MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,可以存儲比較復雜的數據類型。MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。在MongoDB中,有如下概念與傳統的關系數據庫是不同的。(1)在MongoDB中,文檔(document)是數據的基本單元,類似于關系數據庫中行的概念,但要遠復雜于行的概念。(2)集合(collection)是一組文檔,集合類似于關系數據庫中表的概念。(3)在MongoDB集群中,單個節點可以容納多個獨立的數據庫,每個數據庫都有自己的集合和權限。(4)MongoDB自帶簡潔的JavaScriptShell工具,該工具對于管理MongoDB實例和操作數據的功能非常強大。(5)在MongoDB數據庫中,每個文檔都有一個特殊的鍵“_id”,它是文檔所處集合中唯一存在的,相當于關系數據庫中表的主鍵。3.3分布式數據庫3.3.2MongoDB分布式數據庫MongoDB與關系數據庫對比表對比內容MongoDB關系數據庫表集合二維表表中一行數據文檔(document)一條記錄(record)表字段鍵(key)字段(field)字段值值(value)值(value)外鍵無PKFK靈活擴展性極高差3.3分布式數據庫3.3.2MongoDB分布式數據庫在MongoDB集群中,有三類角色:實際存儲數據的節點、配置文件存儲節點和路由接入節點,MongoDB系統架構如圖所示。3.3分布式數據庫3.3.2MongoDB分布式數據庫(1)配置節點(MongodConfig):配置節點存儲的是數據配置文件的元數據文件,即存儲chunk與server的映射關系。其中,chunk是指MongoDB中分區的概念,chunk的大小由配置文件中“chunksize”參數指定,當chunk中文檔的數量超過指定的最大值時,原始的chunk將會分裂為兩個chunk。(2)路由節點(Mongos):路由節點的作用是起到負載均衡的作用。(3)數據存儲節點(Mongod):負載具體的存儲MongoDB中的數據文件。3.3分布式數據庫3.3.3Hive分布式數據倉庫Hive是一種建立在Hadoop文件系統上的數據倉庫架構,并對存儲在HDFS中的數據進行分析和管理,它將結構化的數據文件映射為一張數據庫表,并提供完整的SQL查詢功能。Hive提供一套完整的SQL功能,稱為HiveSQL(HQL)。使用HQL使得不熟悉MapReduce的用戶也能方便的利用SQL語言對數據進行查詢、匯總、分析。Hive和Hadoop的關系如圖所示。3.3分布式數據庫3.3.3Hive分布式數據倉庫Hive中的SQL與傳統SQL的區別如表所示。

HQLSQL數據存儲HDFS、HBase本地文件系統數據格式用戶自定義系統決定數據更新不支持(覆蓋之前的數據)支持索引有有執行MapReduceExecutor執行延遲高低可擴展性高低數據規模大(TB級別)小數據檢查讀時模式寫時模式3.3分布式數據庫3.3.3Hive分布式數據倉庫Hive系統架構如圖所示。Hive客戶端通過一系列提供的接口接收用戶的SQL指令,使用自身的Driver并結合元數據(MetaStore)信息,將SQL指令翻譯為MapReduce,提交到Hadoop平臺中執行,執行后的結果反饋給用戶交互接口。3.3分布式數據庫3.3.3Hive分布式數據倉庫(1)用戶接口:ClientCLI是指Hiveshell命令接口,JDBC是指Java訪問Hive接口。(2)元數據(MetaStore):Hive元數據包括:表名、表所屬數據庫、表的擁有者、列/分區字段、表的類型、表的數據所在目錄等。(3)驅動器(Driver),包括以下內容:

a.解析器(SQLParser):將SQL指令轉換為抽象語法樹(AbstractSyntaxTree,AST)。

b.編譯器(PhysicalPlan):將AST編譯生成邏輯執行計劃。

c.優化器(QueryOptimizer):對邏輯執行計劃進行優化

d.執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃,即MapReduce代碼。Hive的應用場景主要有:(1)日志分析:常用于大多互聯網公司

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論