大數(shù)據(jù)存儲技術 課件全套 數(shù)據(jù)倉庫基礎、Hive入門 - MapReduc_第1頁
大數(shù)據(jù)存儲技術 課件全套 數(shù)據(jù)倉庫基礎、Hive入門 - MapReduc_第2頁
大數(shù)據(jù)存儲技術 課件全套 數(shù)據(jù)倉庫基礎、Hive入門 - MapReduc_第3頁
大數(shù)據(jù)存儲技術 課件全套 數(shù)據(jù)倉庫基礎、Hive入門 - MapReduc_第4頁
大數(shù)據(jù)存儲技術 課件全套 數(shù)據(jù)倉庫基礎、Hive入門 - MapReduc_第5頁
已閱讀5頁,還剩222頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)倉庫基礎與Apache

Hive入門Apache

Hive安裝部署Hive

SQL語言:DDL建庫、建表Apache

Hive入門數(shù)據(jù)倉庫基本概念目錄Contents目錄數(shù)據(jù)倉庫基本概念第一章Contents目錄01數(shù)據(jù)倉庫概念02場景案例:數(shù)據(jù)倉庫為何而來03數(shù)據(jù)倉庫主要特征04數(shù)據(jù)倉庫主流開發(fā)語言--SQL數(shù)倉概念數(shù)據(jù)倉庫(英語:DataWarehouse,簡稱數(shù)倉、DW),是一個用于存儲、分析、報告的數(shù)據(jù)系統(tǒng)。數(shù)據(jù)倉庫的目的是構建面向分析的集成化數(shù)據(jù)環(huán)境,分析結果為企業(yè)提供決策支持(DecisionSupport)。數(shù)倉專注分析數(shù)據(jù)倉庫本身并不“生產(chǎn)”任何數(shù)據(jù),其數(shù)據(jù)來源于不同外部系統(tǒng);同時數(shù)據(jù)倉庫自身也不需要“消費”任何的數(shù)據(jù),其結果開放給各個外部應用使用;這也是為什么叫“倉庫”,而不叫“工廠”的原因。數(shù)據(jù)倉庫中的數(shù)據(jù):CRM數(shù)據(jù):客戶信息、銷售數(shù)據(jù)、客戶交互記錄等。ERP數(shù)據(jù):財務數(shù)據(jù)、庫存數(shù)據(jù)、生產(chǎn)數(shù)據(jù)、人力資源數(shù)據(jù)等。Billing數(shù)據(jù):賬單信息、支付記錄、賬戶余額等。SupplyChain數(shù)據(jù):供應商信息、庫存水平、運輸跟蹤、訂單管理等。Contents目錄01數(shù)據(jù)倉庫概念02場景案例:數(shù)據(jù)倉庫為何而來03數(shù)據(jù)倉庫主要特征04數(shù)據(jù)倉庫主流開發(fā)語言--SQL案例數(shù)據(jù)倉庫為何而來,解決什么問題的?先下結論:為了分析數(shù)據(jù)而來,分析結果給企業(yè)決策提供支撐。下面以中國人壽保險公司(chinalife)發(fā)展為例,闡述數(shù)據(jù)倉庫為何而來?(1)業(yè)務數(shù)據(jù)的存儲問題中國人壽保險(集團)公司下轄多條業(yè)務線,包括:人壽險、財險、車險,養(yǎng)老險等。各業(yè)務線的業(yè)務正常運營需要記錄維護包括客戶、保單、收付費、核保、理賠等信息。這么多業(yè)務數(shù)據(jù)存儲在哪里呢?聯(lián)機事務處理系統(tǒng)(OLTP)正好可以滿足上述業(yè)務需求開展,

其主要任務是執(zhí)行聯(lián)機事務處理。其基本特征是前臺接收的用戶數(shù)據(jù)可以立即傳送到后臺進行處理,并在很短的時間內(nèi)給出處理結果。(1)業(yè)務數(shù)據(jù)的存儲問題關系型數(shù)據(jù)庫(RDBMS)是OLTP典型應用,比如:Oracle、MySQL、SQLServer等。中國人壽保險(集團)公司OracleMysqlOracleSqlServer人壽險財險車險養(yǎng)老險ID241568nameAllencategory居家無憂amount98(元)ID0001nameAllencategory國壽盛世amount8(千)ID456621nameAllencategory車損險amount19.6(萬)ID200145nameAllencategory幸福一生amount4200(元)隨著集團業(yè)務的持續(xù)運營,業(yè)務數(shù)據(jù)將會越來越多。由此也產(chǎn)生出許多運營相關的困惑:現(xiàn)在得到的報表是否只是某條業(yè)務線的?集團整體層面數(shù)據(jù)如何?理賠過程有欺詐的可能嗎?

能夠確定哪些險種正在惡化或已成為不良險種?能夠用有效的方式制定新增和續(xù)保的政策嗎?分析型決策的制定(2)分析型決策的制定為了能夠正確認識這些問題,制定相關的解決措施,瞎拍桌子是肯定不行的。最穩(wěn)妥辦法就是:基于業(yè)務數(shù)據(jù)開展數(shù)據(jù)分析,基于分析的結果給決策提供支撐。也就是所謂的數(shù)據(jù)驅(qū)動決策的制定。單擊此處添加標題內(nèi)容OLTP環(huán)境開展分析可行嗎?可以,但是沒必要OLTP系統(tǒng)的核心是面向業(yè)務,支持業(yè)務,支持事務。所有的業(yè)務操作可以分為讀、寫兩種操作,一般來說讀的壓力明顯大于寫的壓力。如果在OLTP環(huán)境直接開展各種分析,有以下問題需要考慮:數(shù)據(jù)分析也是對數(shù)據(jù)進行讀取操作,會讓讀取壓力倍增;OLTP僅存儲數(shù)周或數(shù)月的數(shù)據(jù);數(shù)據(jù)分散在不同系統(tǒng)不同表中,字段類型屬性不統(tǒng)一;數(shù)據(jù)倉庫面世

基于這種需求,數(shù)據(jù)倉庫的雛形開始在企業(yè)中出現(xiàn)了。但為了更好的進行各種規(guī)模的數(shù)據(jù)分析,同時也不影響OLTP系統(tǒng)運行,此時需要構建一個集成統(tǒng)一的數(shù)據(jù)分析平

臺。該平臺的目的很簡單:面向分析,支持分析,并且和OLTP系統(tǒng)解耦合。當分析所涉及數(shù)據(jù)規(guī)模較小的時候,在業(yè)務低峰期時可以在OLTP系統(tǒng)上開展直接分析。數(shù)據(jù)倉庫的構建如數(shù)倉定義所說,數(shù)倉是一個用于存儲、分析、報告的數(shù)據(jù)系統(tǒng),目的是構建面向分析的集成化數(shù)據(jù)環(huán)境。我們把這種面向分析、支持分析的系統(tǒng)稱之為OLAP(聯(lián)機分析處理)系統(tǒng)。當然,數(shù)據(jù)倉庫是OLAP系統(tǒng)的一種實現(xiàn)。中國人壽保險公司就可以基于分析決策需求,構建數(shù)倉平臺。中國人壽保險(集團)公司人壽險財險車險養(yǎng)老險數(shù)據(jù)倉庫主題:客戶主題:保險理賠主題:承保ETL抽取、轉(zhuǎn)換、加載數(shù)據(jù)報表可視化看板OLAP系統(tǒng)面向分析、支持分析OLTP系統(tǒng)面向業(yè)務支持事務支撐決策RDBMSContents目錄01數(shù)據(jù)倉庫概念02場景案例:數(shù)據(jù)倉庫為何而來03數(shù)據(jù)倉庫主要特征04數(shù)據(jù)倉庫主流開發(fā)語言--SQL集成性(Integrated)主題相關的數(shù)據(jù)通常會分布在多個操作型系統(tǒng)中,彼此分散、獨立、異構。因此在數(shù)據(jù)進入數(shù)據(jù)倉庫之前,必然要經(jīng)過統(tǒng)一與綜合,對數(shù)據(jù)進行抽取、清理、轉(zhuǎn)換和匯總,這一步是數(shù)據(jù)倉庫建設中最關鍵、最復雜的一步,所要完成的工作有:要統(tǒng)一源數(shù)據(jù)中所有矛盾之處;如字段的同名異義、異名同義、單位不統(tǒng)一、字長不一致等等。單擊此處添加標題DATE字段在訂單表中可能代表訂單創(chuàng)建日期。在發(fā)貨表中,DATE可能代表發(fā)貨日期。因此在進入數(shù)據(jù)倉庫前對字段進行改名操作OrderDatevsShipmentDate同名異義在用戶表中可能用UserID表示用戶的唯一標識,而在另一個表中用CustomerID表示同一信息。在數(shù)據(jù)倉庫中,需要統(tǒng)一這些字段名,以消除歧義。例如:CustomerID和UserID統(tǒng)一為CustomerID異名同義集成性(Integrated)

進行數(shù)據(jù)綜合和計算數(shù)據(jù)倉庫中的數(shù)據(jù)綜合工作可以在從原有數(shù)據(jù)庫抽取數(shù)據(jù)時生成,但許多是在數(shù)據(jù)倉庫內(nèi)部生成的,即進入數(shù)據(jù)倉庫以后進行綜合生成的。集成性(Integrated)下圖說明了保險公司綜合數(shù)據(jù)的簡單處理過程,其中數(shù)據(jù)倉庫中與“承?!敝黝}有關的數(shù)據(jù)來自于多個不同的操作型系統(tǒng)。這些系統(tǒng)內(nèi)部數(shù)據(jù)的命名可能不同,數(shù)據(jù)格式也可能不同。把不同來源的數(shù)據(jù)存儲到數(shù)據(jù)倉庫之前,需要去除這些不一致。人壽險財險車險保險行業(yè)數(shù)據(jù)倉庫主題:承保ETL:抽取、轉(zhuǎn)換、加載養(yǎng)老險業(yè)務系統(tǒng)非易失性、非異變性(Non-Volatile)數(shù)據(jù)倉庫中一般有大量的查詢操作,但修改和刪除操作很少。數(shù)據(jù)倉庫的數(shù)據(jù)反映的是一段相當長的時間內(nèi)歷史數(shù)據(jù)的內(nèi)容,數(shù)據(jù)倉庫的用戶對數(shù)據(jù)的操作大多是數(shù)據(jù)查詢或比

較復雜的挖掘,一旦數(shù)據(jù)進入數(shù)據(jù)倉庫以后,一般情況下被較長時間保留。數(shù)據(jù)倉庫是分析數(shù)據(jù)的平臺,而不是創(chuàng)造數(shù)據(jù)的平臺。我們是通過數(shù)倉去分析數(shù)據(jù)中的規(guī)律,而不是去創(chuàng)造修改其

中的規(guī)律。因此數(shù)據(jù)進入數(shù)據(jù)倉庫后,它便穩(wěn)定且不會改變。單擊此處添加標題數(shù)據(jù)倉庫包含各種粒度的歷史數(shù)據(jù),數(shù)據(jù)可能與某個特定日期、星期、月份、季度或者年份有關。1當業(yè)務變化后會失去時效性。因此數(shù)據(jù)倉庫的數(shù)據(jù)需要隨著時間更新,以適應決策的需要。2從這個角度講,數(shù)據(jù)倉庫建設是一個項目,更是一個過程

。3時變性(Time-Variant)Contents目錄01數(shù)據(jù)倉庫概念02場景案例:數(shù)據(jù)倉庫為何而來03數(shù)據(jù)倉庫主要特征04數(shù)據(jù)倉庫主流開發(fā)語言--SQL數(shù)倉開發(fā)語言概述數(shù)倉作為面向分析的數(shù)據(jù)平臺,其主職工作就是對存儲在其中的數(shù)據(jù)開展分析,那么如何讀取數(shù)據(jù)分析呢?理論上來說,任何一款編程語言只要具備讀寫數(shù)據(jù)、處理數(shù)據(jù)的能力,都可以用于數(shù)倉的開發(fā)。比如大家耳熟能詳?shù)腃、java、Python等;關鍵在于編程語言是否易學、好用、功能是否強大。遺憾的是上面所列出的C、Python等編程語言都需要一定的時間進行語法的學習,并且學習語法之后還需要結合分析的業(yè)務場景進行編碼,跑通業(yè)務邏輯。不管從學習成本還是開發(fā)效率來說,上述所說的編程語言都不是十分友好的。在數(shù)據(jù)分析領域,不得不提的就是SQL編程語言,應該稱之為分析領域主流開發(fā)語言。SQL語言介紹結構化查詢語言(StructuredQuery

Language)簡稱SQL,是一種數(shù)據(jù)庫查詢和程序設計語言,用于存取數(shù)據(jù)以及查詢、更新和管理數(shù)據(jù)。SQL語言使我們有能力訪問數(shù)據(jù)庫,并且SQL是一種ANSI(美國國家標準化組織)的標準計算機語言,各大數(shù)據(jù)庫廠商在生產(chǎn)數(shù)據(jù)庫軟件的時候,幾乎都會去支持SQL的語法,以使得用戶在使用軟件時更加容易上手,以及在不同廠商軟件之間進行切換時更加適應,因為大家的SQL語法都差不多。SQL語言功能很強,十分簡潔,核心功能只用了9個動詞。語法接近英語口語,所以,用戶很容易學習和使用。數(shù)倉與SQL雖然SQL語言本身是針對數(shù)據(jù)庫軟件設計的,但是在數(shù)據(jù)倉庫領域,尤其是大數(shù)據(jù)數(shù)倉領域,很多數(shù)倉軟件都會去支持SQL語法;原因在于一是用戶學習SQL成本低,二是SQL語言對于數(shù)據(jù)分析真的十分友好,愛不釋手。思考1. SQL全稱叫做結構化查詢語言,結構化是什么意思?2. 有沒有非結構化之說?結構化數(shù)據(jù)結構化數(shù)據(jù)也稱作行數(shù)據(jù),是由二維表結構來邏輯表達和實現(xiàn)的數(shù)據(jù),嚴格地遵循數(shù)據(jù)格式與長度規(guī)范,主要通過關系型數(shù)據(jù)庫進行存儲和管理。與結構化數(shù)據(jù)相對的是不適于由數(shù)據(jù)庫二維表來表現(xiàn)的非結構化數(shù)據(jù),包括所有格式的辦公文檔、XML、HTML、各類報表、圖片和音頻、視頻信息等。通俗來說,結構化數(shù)據(jù)會有嚴格的行列對齊,便于解讀與理解。二維表結構表由一個名字標識(例如“客戶”或者“訂單”),叫做表名。表包含帶有數(shù)據(jù)的記錄(行)。下面的例子是一個名為“Persons”

的表,包含三條記錄(每一條對應一個人)和五個列(Id、姓、名、地址和城市)。SQL語法分類SQL主要語法分為兩個部分:數(shù)據(jù)定義語言

(DDL)和數(shù)據(jù)操縱語言

(DML)

。DDL語法使我們有能力創(chuàng)建或刪除表,以及數(shù)據(jù)庫、索引等各種對象,但是不涉及表中具體數(shù)據(jù)操作:CREATE

DATABASE

-

創(chuàng)建新數(shù)據(jù)庫CREATE

TABLE

-

創(chuàng)建新表DML語法是我們有能力針對表中的數(shù)據(jù)進行插入、更新、刪除、查詢操作:SELECT

-

從數(shù)據(jù)庫表中獲取數(shù)據(jù)UPDATE

-

更新數(shù)據(jù)庫表中的數(shù)據(jù)DELETE

-

從數(shù)據(jù)庫表中刪除數(shù)據(jù)INSERT

-

向數(shù)據(jù)庫表中插入數(shù)據(jù)Apache

Hive入門02目錄ContentsApache

Hive概述場景設計:如何模擬實現(xiàn)Hive功能Apache

Hive架構、組件什么是HiveApache

Hive是一款建立在Hadoop之上的開源數(shù)據(jù)倉庫系統(tǒng),可以將存儲在Hadoop文件中的結構化、半結構化數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,基于表提供了一種類似SQL的查詢模型,稱為Hive查詢語言(HQL),用于訪問和分析存儲在Hadoop文件中的大型數(shù)據(jù)集。Hive核心是將HQL轉(zhuǎn)換為MapReduce程序,然后將程序提交到Hadoop群集執(zhí)行。Hive由Facebook實現(xiàn)并開源。為什么使用Hive使用Hadoop

MapReduce直接處理數(shù)據(jù)所面臨的問題人員學習成本太高

需要掌握java語言MapReduce實現(xiàn)復雜查詢邏輯開發(fā)難度太大使用Hive處理數(shù)據(jù)的好處操作接口采用類SQL語法,提供快速開發(fā)的能力(簡單、容易上手)避免直接寫MapReduce,減少開發(fā)人員的學習成本支持自定義函數(shù),功能擴展很方便背靠Hadoop,擅長存儲分析海量數(shù)據(jù)集Hive和Hadoop關系

從功能來說,數(shù)據(jù)倉庫軟件,至少需要具備下述兩種能力:存儲數(shù)據(jù)的能力、分析數(shù)據(jù)的能力Apache

Hive作為一款大數(shù)據(jù)時代的數(shù)據(jù)倉庫軟件,當然也具備上述兩種能力。只不過Hive并不是自己實現(xiàn)了上述兩種能力,而是借助Hadoop。Hive利用HDFS存儲數(shù)據(jù),利用MapReduce查詢分析數(shù)據(jù)。這樣突然發(fā)現(xiàn)Hive沒啥用,不過是套殼Hadoop罷了。其實不然,Hive的最大的魅力在于用戶專注于編寫HQL,Hive幫您轉(zhuǎn)換成為MapReduce程序完成對數(shù)據(jù)的分析。目錄ContentsApache

Hive概述場景設計:如何模擬實現(xiàn)Hive功能Apache

Hive架構、組件HQL(HiveQueryLanguage)翻譯成MapReduce任務的具體案例我們有一個存儲在HDFS上的表salesHQL語句為:SELECTcountry,SUM(amount)astotal_salesFROMsalesGROUPBYcountry;根據(jù)右邊的表輸出的結果是?假設sales表的數(shù)據(jù)被分成兩個HDFS數(shù)據(jù)塊數(shù)據(jù)塊1:laptop,1000,USAphone,800,USAlaptop,1500,China數(shù)據(jù)塊2:laptop,1200,Indiaphone,700,Chinatablet,900,India1.Map階段任務:Map階段的任務是讀取HDFS中的sales表數(shù)據(jù),將數(shù)據(jù)根據(jù)GROUPBY中的鍵(這里是country)進行映射和中間處理。Map階段的輸出將是(key,value)的鍵值對,鍵是country,值是amount。MapTask1處理數(shù)據(jù)塊1:輸入數(shù)據(jù):laptop,1000,USAphone,800,USAlaptop,1500,ChinaMap階段執(zhí)行的操作:輸出的中間鍵值對:(USA,1000)(USA,800)(China,1500)寫出MapTask2處理數(shù)據(jù)塊2的結果?MapTask1輸出的中間鍵值對:(USA,1000)(USA,800)(China,1500)MapTask2輸出的中間鍵值對:(India,1200)(China,700)(India,900)2.Shuffle階段Shuffle階段的任務是根據(jù)country(鍵)將來自不同Map任務的輸出傳遞給相應的Reduce任務,并確保相同鍵的數(shù)據(jù)被發(fā)送到同一個Reduce節(jié)點。實際操作:(USA,1000)和(USA,800)由MapTask1輸出,會被Shuffle階段發(fā)送到ReduceTask1。

(China,1500)和(China,700)來自MapTask1和MapTask2,都會被發(fā)送到ReduceTask2。

(India,1200)和(India,900)來自MapTask2,會被發(fā)送到ReduceTask3。3.Reduce階段在Reduce階段,任務是對每個country聚合amount值,也就是在HQL中執(zhí)行的SUM(amount)`操作。ReduceTask1:接收到的鍵值對:(USA,1000)(USA,800)進行聚合:1000+800=1800輸出結果:(USA,1800)ReduceTask2:接收到的鍵值對:(China,1500)(China,700)進行聚合:(China,2200)ReduceTask3:接收到的鍵值對:(India,1200)(India,900)進行聚合:(India,2100)所有Reduce任務完成后,Hive會將所有的輸出整合,最終返回給用戶的結果如下:|country|total_sales|||||USA|1800||China|2200||India|2100|如果有15個country,那么應該按照什么規(guī)則分配給reduce做聚合計算?在MapReduce中,Shuffle階段的任務是將Map任務的中間輸出(鍵值對)分發(fā)給Reduce任務。Reducer的數(shù)量通常比鍵的數(shù)量少,因此需要有合理的機制來分配這些鍵。假設有15個不同的country,而只有3個Reducer,Hive會用哈希函數(shù)對country進行分區(qū):使用哈希函數(shù)hash(country)%num_reducers,來決定某個country分配給哪個Reducer。USA的哈希值為hash('USA')%3=1,因此分配給Reducer1。China的哈希值為hash('China')%3=2,因此分配給Reducer2。India的哈希值為hash('India')%3=0,因此分配給Reducer3。一個reducer對應的是一臺機器嗎?1.Reducer是一個任務,不是一個機器一臺機器可以同時運行多個Reducer任務,前提是機器有足夠的資源(CPU、內(nèi)存),一般一個reducer對應一個cpu核心。2.Reducer任務的分配與機器資源每個Reducer任務會分配到集群中某個節(jié)點上運行。和Map任務一樣,Reducer任務的數(shù)量和分配受以下因素影響:機器的CPU核心數(shù)量:一個機器上的Reducer任務數(shù)量通常和CPU核心數(shù)量成正比。內(nèi)存:每個Reducer任務需要一定的內(nèi)存,機器的總內(nèi)存決定了能同時運行的Reducer數(shù)量。Hadoop/YARN的配置:Hadoop會根據(jù)集群的整體資源來調(diào)度Reducer任務,盡量做到資源的最優(yōu)利用。3.示例:多臺機器上運行多個Reducer假設你有一個集群,有10臺機器,每臺機器有8核CPU和32GB內(nèi)存。你提交的MapReduce作業(yè)啟動了5個Reducer任務,那么這些Reducer任務可能會被分配到不同的機器上,如:Reducer1:分配到機器1。Reducer2:分配到機器2。Reducer3:分配到機器3。Reducer4:分配到機器1(因為機器1資源充足)。Reducer5:分配到機器4。在這種情況下,集群中的不同機器可以同時運行多個Reducer任務,并且Reducer任務之間是并行執(zhí)行的。映射信息記錄映射在數(shù)學上稱之為一種對應關系,比如y=x+1,對于每一個x的值都有與之對應的y的值。在hive中能夠?qū)憇ql處理的前提是針對表,而不是針對文件,因此需要將文件和表之間的對應關系描述記錄清楚。映射信息專業(yè)的叫法稱之為元數(shù)據(jù)信息(元數(shù)據(jù)是指用來描述數(shù)據(jù)的數(shù)據(jù)

metadata)。映射信息記錄具體來看,要記錄的元數(shù)據(jù)信息包括:表對應著哪個文件(位置信息)表的列對應著文件哪一個字段(順序信息)文件字段之間的分隔符是什么SQL語法解析、編譯用戶寫完sql之后,hive需要針對sql進行語法校驗,并且根據(jù)記錄的元數(shù)據(jù)信息解讀sql背后的含義,制定執(zhí)行計劃。并且把執(zhí)行計劃轉(zhuǎn)換成MapReduce程序來具體執(zhí)行,把執(zhí)行的結果封裝返回給用戶。Hive軟件本身到底承擔了什么功能職責?對Hive的理解Hive能將數(shù)據(jù)文件映射成為一張表,這個映射是指什么?最終效果基于上述分析,最終要想模擬實現(xiàn)的Hive的功能,大致需要下圖所示組件參與其中。從中可以感受一下Hive承擔了什么職責,當然,也可以把這個理解為Hive的架構圖。目錄ContentsApache

Hive概述場景設計:如何模擬實現(xiàn)Hive功能Apache

Hive架構、組件Hive組件用戶接口包括

CLI、JDBC/ODBC、WebGUI。其中,CLI(command

line

interface)為shell命令行;Hive中的Thrift服務器允許外部客戶端通過網(wǎng)絡與Hive進行交互,類似于JDBC或ODBC協(xié)議。WebGUI是通過瀏覽器訪問Hive。Hive組件元數(shù)據(jù)存儲通常是存儲在關系數(shù)據(jù)庫如mysql/derby中。Hive

中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。Hive組件Driver驅(qū)動程序,包括語法解析器、計劃編譯器、優(yōu)化器、執(zhí)行器完成HQL

查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計劃的生成。生成的查詢計劃存儲在

HDFS

中,并在隨后有執(zhí)行引擎調(diào)用執(zhí)行。Hive組件執(zhí)行引擎Hive本身并不直接處理數(shù)據(jù)文件。而是通過執(zhí)行引擎處理。當下Hive支持MapReduce、Tez、Spark3種執(zhí)行引擎。

古時候,人們用牛來拉重物,當一頭牛拉不動的時候,他們不曾想過培育個頭更大的牛。同樣,我們也不需要嘗試更大的計算機,而是應該開發(fā)更多的計算系統(tǒng)。

初識Hadoop初識Hadoop習近平指出,善于獲取數(shù)據(jù)、分析數(shù)據(jù)、運用數(shù)據(jù),是領導干部做好工作的基本功。各級領導干部要加強學習,懂得大數(shù)據(jù),用好大數(shù)據(jù),增強利用數(shù)據(jù)推進各項工作的本領,不斷提高對大數(shù)據(jù)發(fā)展規(guī)律的把握能力,使大數(shù)據(jù)在各項工作中發(fā)揮更大作用。習近平在中共中央政治局集體學習時強調(diào):“審時度勢精心謀劃超前布局力爭主動,實施國家大數(shù)據(jù)戰(zhàn)略加快建設數(shù)字中國。”初識Hadoop可見,大數(shù)據(jù)技術已經(jīng)上升到我國的戰(zhàn)略方針政策。新技術的出現(xiàn)需要我們青年一代努力學習,奮發(fā)圖強,不再讓發(fā)達國家在關鍵技術上卡脖子。1.1為什么要學Hadoop1.2Hadoop與大數(shù)據(jù)的關系1.3Hadoop行業(yè)應用案例分析1.4.Hadoop的安裝與配置目錄CONTENT1.1為什么要學Hadoop我們生活在數(shù)據(jù)時代!很難估計全球存儲的電子數(shù)據(jù)總量是多少,但是據(jù)IDC估計2006年“數(shù)字全球”項目(digitaluniverse)的數(shù)據(jù)總量為0.18ZB,并且預測到2011年這個數(shù)字將達到1.8ZB,為2006年的10倍。1ZB相當于10的21次方字節(jié)(Byte)的數(shù)據(jù),或者相當于1000EB,1000000PB,或者大家更熟悉的10億TB的數(shù)據(jù)!這相當于世界上每個人一個磁盤驅(qū)動器的數(shù)量級。1.1為什么要學Hadoop龐大的數(shù)據(jù)量存儲及計算問題,已成為一種具有挑戰(zhàn)性的問題。分布式系統(tǒng)解決了大數(shù)據(jù)時代的數(shù)據(jù)量爆發(fā)所帶來的高并發(fā)的吞吐和大規(guī)模數(shù)據(jù)管理與計算問題。分布式系統(tǒng)是一個其組件分布在聯(lián)網(wǎng)的計算機上,組件之間通過傳遞消息進行通信和動作協(xié)調(diào)的系統(tǒng)。(1)分布性。分布式系統(tǒng)由多臺計算機組成,它們在地域上是分散的,可以散布在一個單位、一個城市、一個國家,甚至全球范圍內(nèi)。整個系統(tǒng)的功能是分散在各個節(jié)點上實現(xiàn)的,因而分布式系統(tǒng)具有數(shù)據(jù)處理的分布性。(2)自治性。分布式系統(tǒng)中的各個節(jié)點都包含自己的處理機和內(nèi)存,各自具有獨立的處理數(shù)據(jù)的功能。通常,彼此在地位上是平等的,無主次之分,既能自治地進行工作,又能利用共享的通信線路來傳送信息,協(xié)調(diào)任務處理。(3)并行性。一個大的任務可以劃分為若干個子任務,分別在不同的主機上執(zhí)行。分布式系統(tǒng)具有以下三個特征:1.1.1 數(shù)據(jù)的存儲和分析多年來硬盤存儲容量快速增加的同時,訪問速度--數(shù)據(jù)從硬盤讀取的速度--卻未能與時俱進。1990年,一個普通的硬盤驅(qū)動器可存儲1370MB的數(shù)據(jù)并擁有4.4MB/s的傳輸速度,所以只需五分鐘的時間就可以讀取整個磁盤的數(shù)據(jù)。20年過去了,1TB級別的磁盤驅(qū)動器是很正常的,但是數(shù)據(jù)傳輸?shù)乃俣葏s在100MB/s左右。所以它需要花兩個半小時以上的時間讀取整個驅(qū)動器的數(shù)據(jù)。只使用一個磁盤的百分之一似乎很浪費。來自斯威本科技大學(SwinburneUniversityofTechnology)的研究團隊,在2013年6月29日刊出的《自然通訊(NatureCommunications)》雜志的文章中,描述了一種全新的數(shù)據(jù)存儲方式,可將1PB(1024TB)的數(shù)據(jù)存儲到一張僅DVD大小的聚合物碟片上。由于單個磁盤讀取速度有限,如何提高數(shù)據(jù)的讀取速度?1.1.1 數(shù)據(jù)的存儲和分析

現(xiàn)在更可行的是從多個磁盤并行讀寫數(shù)據(jù)。

第一個需要解決的問題是硬件故障。一旦開始使用多個硬件設施,其中一個會出故障的概率是非常高的。避免數(shù)據(jù)丟失的常見做法是復制:通過系統(tǒng)保存數(shù)據(jù)的冗余副本,在故障發(fā)生時,可以使用數(shù)據(jù)的另一份副本。這就是冗余磁盤陣列(RAID)的工作方式。

Hadoop的文件系統(tǒng)HDFS(HadoopDistributedFilesystem)也是一個例子,雖然它采取的是另一種稍有不同的方法。冗余磁盤陣列(RAID)1.1.1 數(shù)據(jù)的存儲和分析下面我們以一個實際案例來說明這個問題:假設:現(xiàn)在有一個大數(shù)據(jù)項目,使用者達到1000萬人,并發(fā)訪問人數(shù)達到1000人以上,存儲的數(shù)據(jù)涉及結構化數(shù)據(jù)、半結構化數(shù)據(jù)、非結構化數(shù)據(jù)。需要我們建設的平臺具備3000個計算節(jié)點以上的管理能力,實際部署規(guī)模不少于200個計算節(jié)點,支持實時服務計量。存儲容量達到10PB以上,系統(tǒng)可靠性不低于99.99%,建設這樣的項目,從軟件開發(fā)角度需要考慮幾個問題。(1)數(shù)據(jù)如何被均勻地存儲在多臺機器上?數(shù)據(jù)均衡存儲:在大規(guī)模數(shù)據(jù)存儲中,通常使用分布式存儲系統(tǒng)(如HDFS、Ceph、GlusterFS等)來將數(shù)據(jù)均勻分布到多個節(jié)點上。這些系統(tǒng)會將數(shù)據(jù)切分成小塊(如HDFS中的塊,通常為128MB),并將這些塊分配到不同的機器上。在分布式存儲系統(tǒng)中,通過哈希算法或范圍劃分來均衡分配數(shù)據(jù),從而避免單個節(jié)點的存儲壓力過大。1.1.1 數(shù)據(jù)的存儲和分析(2)服務器負載如何均衡?負載均衡:在計算層面,負載均衡可以通過負載均衡算法(如輪詢、加權輪詢、最少連接等)來實現(xiàn)。分布式計算框架(如Hadoop、Spark)也能根據(jù)任務的計算需求和資源利用率,智能地調(diào)度任務到負載較低的節(jié)點上。1.1.1 數(shù)據(jù)的存儲和分析1.2 Hadoop與大數(shù)據(jù)的關系1.2.1大數(shù)據(jù)的4V特征1.2.1大數(shù)據(jù)的4V特征數(shù)據(jù)量大根據(jù)IDC作出的估測,數(shù)據(jù)一直都在以每年50%的速度增長,也就是說每兩年就增長一倍(大數(shù)據(jù)摩爾定律)人類在最近兩年產(chǎn)生的數(shù)據(jù)量相當于之前產(chǎn)生的全部數(shù)據(jù)量預計到2030年,全球?qū)⒖偣矒碛?00ZB的數(shù)據(jù)量,相較于2010年,數(shù)據(jù)量將增長近100倍1.2.1大數(shù)據(jù)的4V特征數(shù)據(jù)類型繁多大數(shù)據(jù)是由結構化和非結構化數(shù)據(jù)組成的10%的結構化數(shù)據(jù),存儲在數(shù)據(jù)庫中90%的非結構化數(shù)據(jù),它們與人類信息密切相關科學研究–基因組–LHC加速器–地球與空間探測企業(yè)應用–Email、文檔、文件–應用日志–交易記錄Web1.0數(shù)據(jù)–文本–圖像–視頻Web2.0數(shù)據(jù)–查詢?nèi)罩?點擊流–Twitter/Blog/SNS–Wiki1.2.1大數(shù)據(jù)的4V特征處理速度快從數(shù)據(jù)的生成到消耗,時間窗口非常小,可用于生成決策的時間非常少1秒定律:這一點也是和傳統(tǒng)的數(shù)據(jù)挖掘技術有著本質(zhì)的不同1.2.1大數(shù)據(jù)的4V特征價值密度低,商業(yè)價值高以視頻為例,連續(xù)不間斷監(jiān)控過程中,可能有用的數(shù)據(jù)僅僅有一兩秒,但是具有很高的商業(yè)價值123451.2.2 大數(shù)據(jù)的存儲結構分布式存儲與訪問是大數(shù)據(jù)存儲的關鍵技術,它具有經(jīng)濟、高效、容錯好等特點。分布式存儲技術與數(shù)據(jù)存儲介質(zhì)的類型和數(shù)據(jù)的組織管理形式直接相關。目前的主要數(shù)據(jù)存儲介質(zhì)類型包括內(nèi)存、磁盤、磁帶等;主要數(shù)據(jù)組織管理形式包括按行組織、按鍵值組織和按關系組織;主要數(shù)據(jù)組織管理層次包括按塊級組織,按文件級組織及按數(shù)據(jù)庫級組織等。1.2.3 大數(shù)據(jù)的計算模式1、批處理計算2、流計算3、圖計算4、查詢分析計算1.2.3 大數(shù)據(jù)的計算模式表1-2大數(shù)據(jù)計算模式及其代表產(chǎn)品1.2.3 大數(shù)據(jù)的計算模式1、 批處理計算批處理計算主要解決針對大規(guī)模數(shù)據(jù)的批量處理,也是我們?nèi)粘?shù)據(jù)分析工作中非常常見的一類數(shù)據(jù)處理需求。MapReduce是最具有代表性和影響力的大數(shù)據(jù)批處理技術,可以并行執(zhí)行大規(guī)模數(shù)據(jù)處理任務,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行計算。Spark是一個針對超大數(shù)據(jù)集合的低延遲的集群分布式計算系統(tǒng),比MapReduce快許多。Spark啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,還可以優(yōu)化迭代工作負載。在MapReduce中,數(shù)據(jù)流從一個穩(wěn)定的來源進行一系列加工處理后,流出到一個穩(wěn)定的文件系統(tǒng)(如HDFS)。而Spark使用內(nèi)存替代HDFS或本地磁盤來存儲中間結果,因此Spark要比MapReduce的速度快許多。1.2.3 大數(shù)據(jù)的計算模式2、流計算流數(shù)據(jù)也是大數(shù)據(jù)分析中的重要數(shù)據(jù)類型。流數(shù)據(jù)(或數(shù)據(jù)流)是指在時間分布和數(shù)量上無限的一系列動態(tài)數(shù)據(jù)集合體,數(shù)據(jù)的價值隨著時間的流逝而降低,因此必須采用實時計算的方式給出秒級響應。流計算可以實時處理來自不同數(shù)據(jù)源的、連續(xù)達到的流數(shù)據(jù),經(jīng)過實時分析處理,給出有價值的分析結果。目前業(yè)內(nèi)已涌現(xiàn)出許多的流計算框架與平臺,第一類是商業(yè)集的流計算平臺,包括IBMInfoSphereStreams和IBMStreamBase等;第二類是開源流計算框架,包括TwitterStorm、Yahoo!S4、SparkStreaming、Flink等,第三類是公司為支持自身業(yè)務開發(fā)的流計算框架,如百度開發(fā)了通用實時流數(shù)據(jù)計算系統(tǒng)DStream,淘寶開發(fā)了通用流數(shù)據(jù)實時計算系統(tǒng)銀河流數(shù)據(jù)處理平臺。1.2.3 大數(shù)據(jù)的計算模式

3、圖計算在大數(shù)據(jù)時代,許多大數(shù)據(jù)都是以大規(guī)模圖或網(wǎng)絡的形式呈現(xiàn)的,如社交網(wǎng)絡、傳染病傳播途徑、交通事故對路網(wǎng)的影響等。此外,許多非圖結構的大數(shù)據(jù)也常常會被轉(zhuǎn)換為圖模型后再進行處理分析。MapReduce作為單輸入、兩階段、粗粒度數(shù)據(jù)并行的分布式計算框架,在表達多迭代、稀疏結構和細粒度數(shù)據(jù)時,往往顯得力不從心,不適合用來解決大規(guī)模圖計算問題。因此,針對大型圖的計算,需要采用圖計算模式,主要用于PageRank計算、最短路徑和圖遍歷等。其他代表性的圖計算產(chǎn)品還包括Spark生態(tài)系統(tǒng)中的GraphX、Flink生態(tài)系統(tǒng)中的Gelly、圖數(shù)據(jù)處理系統(tǒng)PowerGraph等。1.2.3 大數(shù)據(jù)的計算模式4、查詢分析計算針對超大規(guī)模數(shù)據(jù)的存儲管理和查詢分析,需要提供實時或準實時的響應,才能很好地滿足企業(yè)經(jīng)營管理需求。谷歌公司開發(fā)的Dremel是一種可擴展的、交互式的實時查詢系統(tǒng),用于只讀嵌套數(shù)據(jù)的分析。通過結合多級樹狀執(zhí)行過程和列式數(shù)據(jù)結構,它能做到幾秒內(nèi)完成對萬億張表的聚合查詢。系統(tǒng)可以擴展到成千上萬的CPU上,滿足谷歌上萬用戶操作PB級的數(shù)據(jù),并且可以在2~3秒內(nèi)完成PB級別數(shù)據(jù)的查詢。此外,Cloudera公司參考Dremel系統(tǒng)開發(fā)了實時查詢引擎Impala,它提供結構化查詢語言(StructureQueryLanguage,SQL)語義,能快速查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。1.2.3 大數(shù)據(jù)的計算模式1.3 Hadoop行業(yè)應用案例分析隨著企業(yè)的數(shù)據(jù)量的迅速增長,存儲和處理大規(guī)模數(shù)據(jù)已成為企業(yè)的迫切需求。Hadoop作為開源的云計算平臺,已引起了學術界和企業(yè)的普遍興趣。1.3 Hadoop行業(yè)應用案例分析Theusercandemonstrateonaprojectororcomputer,orprintthepresentationandmakeitintoafilmtobeusedinawiderfield1.3.1Hadoop在門戶網(wǎng)站的應用1.3.2Hadoop在搜索引擎中的應用1.3.3Hadoop在電商平臺中的應用1.3.1Hadoop在門戶網(wǎng)站的應用

關于Hadoop技術的研究和應用,Yahoo!始終處于領先地位,它將Hadoop應用于自己的各種產(chǎn)品中,包括數(shù)據(jù)分析、內(nèi)容優(yōu)化、發(fā)垃圾郵件系統(tǒng)、廣告的優(yōu)化選擇、大數(shù)據(jù)處理和ETL等。同樣,在用戶興趣預測、搜索排名、廣告定位等方面得到了充分的應用。Yahoo!在主頁個性化方面,實時服務系統(tǒng)通過Apache從數(shù)據(jù)庫中讀取相應的映射,并且每隔5分鐘Hadoop集群就會基于最新數(shù)據(jù)重新排列內(nèi)容,每隔7分鐘則在頁面上更新內(nèi)容。在郵箱方面,Yahoo!利用Hadoop集群根據(jù)垃圾郵件模式為郵件計分,并且每隔幾個小時就在集群上改進反垃圾郵件模型,集群系統(tǒng)每天還可以推動50億次的郵件投遞。在Yahoo!的SearchWebmap應用上,它運行在超過10000臺機器的Linux系統(tǒng)集群里。Yahoo!的網(wǎng)頁搜索查詢使用的就是它產(chǎn)生的數(shù)據(jù)。Yahoo!在Hadoop中同時使用了Pig和Hive,主要用于數(shù)據(jù)準備和數(shù)據(jù)表示。數(shù)據(jù)準備階段通常被認為是提取、轉(zhuǎn)換和加載(ExtractTransformLoad,ETL數(shù)據(jù)的階段。這個階段需要裝載和清洗原始數(shù)據(jù),并讓它遵守特定的數(shù)據(jù)模型,還要盡可能地讓它與其他數(shù)據(jù)源結合等。這一階段的客戶一般都是程序員、數(shù)據(jù)專家或研究者。數(shù)據(jù)表示階段一般指的都是數(shù)據(jù)倉庫,數(shù)據(jù)倉庫存儲了客戶所需要的產(chǎn)品,客戶會根據(jù)需要選取合適的產(chǎn)品。這一階段的客戶可能是系統(tǒng)的數(shù)據(jù)工程師、分析師或決策者。1.3.2Hadoop在搜索引擎中的應用百度作為全球最大的中文搜索引擎公司,提供基于搜索引擎的各種產(chǎn)品,包括以網(wǎng)絡搜索為主的功能性搜索,以貼吧為主的社區(qū)搜索,針對區(qū)域、行業(yè)的垂直搜索、Mp3音樂搜索以及百科等,幾乎覆蓋了中文網(wǎng)絡世界中所有的搜索需求。百度對海量數(shù)據(jù)處理的要求是比較高的,要在線下對數(shù)據(jù)進行分析,還要在規(guī)定時間內(nèi)處理完并反饋到平臺上。百度在互聯(lián)網(wǎng)領域的平臺需求要通過性能較好的云平臺進行處理,Hadoop就是很好的選擇。

在百度,Hadoop主要應用于日志的存儲和統(tǒng)計;網(wǎng)頁數(shù)據(jù)的分析和挖掘;商業(yè)分析,如用戶的行為和廣告關注度等;在線數(shù)據(jù)的反饋,及時得到在線廣告的點擊情況;用戶網(wǎng)頁的聚類,分析用戶的推薦度及用戶之間的關聯(lián)度。百度現(xiàn)在擁有3個Hadoop集群,總規(guī)模在700臺機器作業(yè),其中有100多臺新機器和600多臺要淘汰的機器(它們的計算能力相當于200多臺新機器),不過其規(guī)模還在不斷的增加中?,F(xiàn)在每天運行的MapReduce任務在3000個左右,處理數(shù)據(jù)約120TB/天。1.3.3Hadoop在電商平臺中的應用在eBay上存儲著上億種商品的信息,而且每天有數(shù)百萬種的新商品在增加,因此需要用云系統(tǒng)來存儲和處理PB級別的數(shù)據(jù),而Hadoop則是個很好的選擇。Hadoop是建立在商業(yè)硬件上的容錯、可擴展、分布式的云計算框架,eBay利用Hadoop建立了一個大規(guī)模的集群系統(tǒng)Athena,它被分為5層。Hadoop核心層包括Hadoop運行時環(huán)境、一些通用設施和HDFS,其中文件系統(tǒng)為讀寫大塊數(shù)據(jù)而做了一些優(yōu)化,如將塊的大小由128MB改為256MB。MapReduce層為開發(fā)和執(zhí)行任務提供API和控件。數(shù)據(jù)獲取層的主要框架是HBase、Pig和Hive。除了以上案例,在很多其他的應用中都有Hadoop的身影,在Facebook、電信等業(yè)務中Hadoop都發(fā)揮著舉足輕重的作用。由此可以看出Hadoop分布式集群在大數(shù)據(jù)處理方面有著無與倫比的優(yōu)勢,它的特點(易于部署、代價低、方便擴展、性能強等)使得它能很快地被業(yè)界接受,生存能力也非常的強。實際上除商業(yè)上的應用外,Hadoop在科學研究上也發(fā)揮了很大的作用,例如數(shù)據(jù)挖掘、數(shù)據(jù)分析等。雖然Hadoop在某些處理機制上存在著不足,如實時處理,但隨著Hadoop發(fā)展,這些不足正在被慢慢彌補,最新版的Hadoop已經(jīng)開始支持Storm架構(一種實時處理架構)。隨著時間的推移,Hadoop會越來越完善,無論用于電子商務還是科學研究,都是很不錯的選擇。ApacheHadoop、HDFSPARTONEApacheHadoop概述目錄Contents01Hadoop介紹、發(fā)展簡史、現(xiàn)狀02Hadoop特性優(yōu)點、國內(nèi)外應用03Hadoop發(fā)行版本、架構變遷單擊此處添加標題狹義上Hadoop指的是Apache軟件基金會的一款開源軟件。用java語言實現(xiàn),開源允許用戶使用簡單的編程模型實現(xiàn)跨機器集群對海量數(shù)據(jù)進行分布式計算處理Hadoop介紹HadoopHDFS(分布式文件存儲系統(tǒng)):解決海量數(shù)據(jù)存儲

YARN(集群資源管理和任務調(diào)度框架):解決資源任務調(diào)度HadoopMapReduce(分布式計算框架):解決海量數(shù)據(jù)計算Hadoop核心組件/官網(wǎng)單擊此處添加標題Hadoop介紹廣義上Hadoop指的是圍繞Hadoop打造的大數(shù)據(jù)生態(tài)圈。HDFSYARNMapReduce核心組件單擊此處添加標題Hadoop現(xiàn)狀單擊此處添加正文HDFS作為分布式文件存儲系統(tǒng),處在生態(tài)圈的底層與核心地位;單擊此處添加正文YARN作為分布式通用的集群資源管理系統(tǒng)和任務調(diào)度平臺,支撐各種計算引擎運行,保證了Hadoop地位;單擊此處添加正文MapReduce作為大數(shù)據(jù)生態(tài)圈第一代分布式計算引擎,由于自身設計的模型所產(chǎn)生的弊端,導致企業(yè)一線幾乎不

再直接使用MapReduce進行編程處理,但是很多軟件的底層依然在使用MapReduce引擎來處理數(shù)據(jù)。目錄01Hadoop介紹、發(fā)展簡史、現(xiàn)狀02Hadoop特性優(yōu)點、國內(nèi)外應用03Hadoop發(fā)行版本、架構變遷Hadoop特性優(yōu)點scalability

Hadoop是在可用的計算機集群間分配數(shù)據(jù)并完成計算任務的,這些集群可方便靈活的方式擴展到數(shù)以千計的節(jié)點。efficiency

通過并發(fā)數(shù)據(jù),Hadoop可以在節(jié)點之間動態(tài)并行的移動數(shù)據(jù),使得速度非常快。擴容能力成本低

EconomicalHadoop集群允許通過部署普通廉價的機器組成集群來處理大數(shù)據(jù),以至于成本很低。看重的是集群整體能力。reliability能自動維護數(shù)據(jù)的多份復制,并且在任務失敗后能自動地重新部署(redeploy)計算任務。所以Hadoop的按位存儲和處理數(shù)據(jù)的能力值得人們信賴。效率高可靠性

目錄Contents01Hadoop介紹、發(fā)展簡史、現(xiàn)狀02Hadoop特性優(yōu)點、國內(nèi)外應用03Hadoop發(fā)行版本、架構變遷Hadoop發(fā)行版本開源社區(qū)版商業(yè)發(fā)行版Apache開源社區(qū)發(fā)行也是官方發(fā)行版本優(yōu)點:更新迭代快缺點:兼容穩(wěn)定性不周商業(yè)公司發(fā)行基于Apache開源協(xié)議某些服務需要收費優(yōu)點:穩(wěn)定兼容好缺點:收費

版本更新慢Hadoop發(fā)行版本

Apache開源社區(qū)版本http://hadoop.apache.org/商業(yè)發(fā)行版本Cloudera:/products/open-source/apache-hadoop.html

Hortonworks

:/products/hdp.html本課程中使用的是Apache版的Hadoop,版本號為:3.1.3單擊此處添加標題Hadoop1.0Hadoop2.0HDFS(分

儲)MapReduce(資源管理和分布式數(shù)據(jù)處理)HDFS(分

儲)MapReduce(分布式數(shù)據(jù)處理)YARN(集群資源管理、任務調(diào)度)Hadoop架構變遷(1.0-2.0變遷)Hadoop

3.0架構組件和Hadoop2.0類似,3.0著重于性能優(yōu)化。l

通用方面精簡內(nèi)核、類路徑隔離、shell腳本重構l

Hadoop

HDFSEC糾刪碼、多NameNode支持l

Hadoop

MapReduce任務本地化優(yōu)化、

內(nèi)存參數(shù)自動推斷l(xiāng)

HadoopYARNTimelineServiceV2、隊列配置Hadoop架構變遷(3.0新版本)ApacheHadoop集群搭建PART2目錄01Hadoop集群簡介02Hadoop集群模式安裝(Clustermode)03Hadoop集群啟停命令、WebUI04Hadoop初體驗Hadoop集群整體概述Hadoop集群包括兩個集群:HDFS集群、YARN集群兩個集群邏輯上分離、通常物理上在一起兩個集群都是標準的主從架構集群HDFS集群(分布式存儲)YARN集群(資源管理、調(diào)度)主角色:NameNode從角色:DataNode主角色輔助角色:SecondaryNameNode主角色:ResourceManager從角色:NodeManager以我們的配置為例HDFS集群

YARN集群hadoop01datanodenamenodesecondarynamenodehadoop03datanodehadoop02datanodehadoop01ResourceManagerNodeManagerhadoop03NodeManagerhadoop02NodeManagerHadoop集群=HDFS集群+YARN集群<property><name>node.secondary.http-address</name><value>hadoop01:50090</value></property>Hadoop集群簡介hadoop01hadoop02hadoop03NNDNSNNDNDNRMNMNMNMHDFS集群YARN集群Hadoop集群=HDFS集群+YARN集群Hadoop集群簡介邏輯上分離兩個集群互相之間沒有依賴、互不影響物理上在一起某些角色進程往往部署在同一臺物理服務器上MapReduce集群呢?MapReduce是計算框架、代碼層面的組件

沒有集群之說HDFS分布式文件系統(tǒng)基礎03目錄Contents文件系統(tǒng)、分布式文件系統(tǒng)HDFS簡介HDFS起源發(fā)展、設計目標HDFS應用場景HDFS重要特性文件系統(tǒng)定義文件系統(tǒng)是一種存儲和組織數(shù)據(jù)的方法,實現(xiàn)了數(shù)據(jù)的存儲、分級組織、訪問和獲取等操作,使得用戶對文件訪問和查找變得容易;文件系統(tǒng)使用樹形目錄的抽象邏輯概念代替了硬盤等物理設備使用數(shù)據(jù)塊的概念,用戶不必關心數(shù)據(jù)底層存在硬盤哪里,只需要記住這個文件的所屬目錄和文件名即可;文件系統(tǒng)通常使用硬盤和光盤這樣的存儲設備,并維護文件在設備中的物理位置。傳統(tǒng)常見的文件系統(tǒng)所謂傳統(tǒng)常見的文件系統(tǒng)更多指的的單機的文件系統(tǒng),也就是底層不會橫跨多臺機器實現(xiàn)。比如windows操作系統(tǒng)上的文件系統(tǒng)、Linux上的文件系統(tǒng)、FTP文件系統(tǒng)等等。這些文件系統(tǒng)的共同特征包括:帶有抽象的目錄樹結構,樹都是從/根目錄開始往下蔓延;樹中節(jié)點分為兩類:目錄和文件;從根目錄開始,節(jié)點路徑具有唯一性。數(shù)據(jù)、元數(shù)據(jù)數(shù)據(jù)指存儲的內(nèi)容本身,比如文件、視頻、圖片等,這些數(shù)據(jù)底層最終是存儲在磁盤等存儲介質(zhì)上的,一般用戶無需關心,只需要基于目錄樹進行增刪改查即可,實際針對數(shù)據(jù)的操作由文件系統(tǒng)完成。元數(shù)據(jù)元數(shù)據(jù)(metadata)又稱之為解釋性數(shù)據(jù),記錄數(shù)據(jù)的數(shù)據(jù);文件系統(tǒng)元數(shù)據(jù)一般指文件大小、最后修改時間、底層存儲位置、屬性、所屬用戶、權限等信息。一、分布式存儲的優(yōu)點問題:數(shù)據(jù)量大,單機存儲遇到瓶頸解決:單機縱向擴展:磁盤不夠加磁盤,有上限瓶頸限制多機橫向擴展:機器不夠加機器,理論上無限擴展…...思考如果數(shù)據(jù)文件很小用單機存儲的速度快還是分布式存儲的速度快?分布式存儲數(shù)據(jù)通信方式:通過網(wǎng)絡進行數(shù)據(jù)通信。具體來說,分布式存儲系統(tǒng)中的各個節(jié)點通過網(wǎng)線(通常是以太網(wǎng))相互連接,通過網(wǎng)絡協(xié)議(如TCP/IP)進行數(shù)據(jù)傳輸和同步。這種通信方式允許數(shù)據(jù)在多個存儲節(jié)點之間進行分布和復制,以實現(xiàn)高可用性和擴展性。分布式存儲:數(shù)據(jù)通信依賴于網(wǎng)絡,通過網(wǎng)線將多個存儲節(jié)點連接起來,數(shù)據(jù)傳輸通過網(wǎng)絡協(xié)議實現(xiàn),通常需要考慮網(wǎng)絡帶寬和延遲。單機存儲(DAS)數(shù)據(jù)通信方式:通過內(nèi)部總線(如SATA、SAS、NVMe等)直接與主機通信。單機存儲設備(如硬盤、SSD)通常直接連接到服務器的主板上,數(shù)據(jù)通過這些高速接口在存儲設備和主機之間傳輸。這種方式不依賴外部網(wǎng)絡,而是通過內(nèi)部數(shù)據(jù)總線傳輸,具有低延遲和高帶寬的特點。對比:單機存儲:數(shù)據(jù)通信主要依靠內(nèi)部數(shù)據(jù)總線,如SATA或NVMe,這些接口直接將存儲設備連接到服務器,數(shù)據(jù)傳輸不經(jīng)過外部網(wǎng)絡。NVMe(Non-VolatileMemoryExpress)overPCIe:PCIe3.0x4

標準:最大理論帶寬約為32Gb/s(約4GB/s)PCIe4.0x4

標準:最大理論帶寬約為64Gb/s(約8GB/s)PCIe5.0x4

標準:最大理論帶寬約為128Gb/s(約16GB/s)應用場景:高性能固態(tài)硬盤(SSD)網(wǎng)線速度指的是通過網(wǎng)絡連接進行數(shù)據(jù)傳輸?shù)乃俾剩饕糜诜植际酱鎯ο到y(tǒng)或網(wǎng)絡文件傳輸。常見的網(wǎng)絡標準和它們的傳輸速率包括:千兆以太網(wǎng)(GigabitEthernet,1GbE):最大理論帶寬:約125MB/s應用場景:一般家庭和小型辦公室網(wǎng)絡二、元數(shù)據(jù)記錄的功能問題:文件分布在不同機器上不利于尋找解決:元數(shù)據(jù)記錄下文件及其存儲位置信息,快速定位文件位置hadoop011.txt:100Mhadoop01a.dat:300M

hadoop031.txt元數(shù)據(jù)記錄(文件名、大小、存儲機器IP)實際數(shù)據(jù)存儲hadoop03a.dathadoop02log三、分塊存儲一個完整文件為什么要打散掉分塊存儲,有什么好處?三、分塊存儲好處問題:文件過大導致單機存不下、上傳下載效率低解決:文件分塊存儲在不同機器,針對塊并行操作提高效率hadoop01a.dat300M

{blk-2:hadoop02,blk-1:hadoop01,blk-3:hadoop03}hadoop02hadoop03…{數(shù)據(jù)塊:存儲位置}元數(shù)據(jù)記錄a.datblk-1blk-2blk-3blk-1blk-2blk-3在hdfs-site.xml文件中,你需要找到<configuration>標簽的起始和結束位置。在這兩個標簽之間,添加下面的配置代碼:<property><name>dfs.blocksize</name><value>134217728</value></property>這段代碼中,dfs.blocksize是Hadoop中用于配置塊大小的屬性。134217728是塊大小的值,單位為字節(jié)。這里我們設置的是128MB。四:副本機制有什么作用?四:副本機制的作用問題:硬件故障難以避免,數(shù)據(jù)易丟失解決:不同機器設置備份,冗余存儲,保障數(shù)據(jù)安全1.txt100M2

{blk-33:node5|node8}a.dat300M2

{blk-1:hadoop01|hadoop02,blk-2:hadoop02|hadoop03,blk-3:hadoop01|hadoop03}hadoop01hadoop02hadoop03a.datblk-1blk-2blk-3blk-1blk-1blk-2blk-2blk-3blk-3…副本數(shù)、{數(shù)據(jù)塊:存儲位置|…}元數(shù)據(jù)記錄<property><name>dfs.replication</name><value>2</value></property>1.分布式存儲的優(yōu)點是什么?

2.元數(shù)據(jù)記錄的功能是什么?3.文件分塊存儲好處是什么?

4.設置副本備份的作用是什么?

總結

1.分布式存儲的優(yōu)點是什么?

無限擴展支撐海量數(shù)據(jù)存儲2.元數(shù)據(jù)記錄的功能是什么?快速定位文件位置便于查找3.文件分塊存儲好處是什么?

針對塊并行操作提高效率4.設置副本備份的作用是什么?

冗余存儲保障數(shù)據(jù)安全

總結

目錄Contents文件系統(tǒng)與分布式文件系統(tǒng)HDFS簡介HDFS起源發(fā)展、設計目標HDFS應用場景HDFS重要特性HDFS簡介HDFS(Hadoop

Distributed

FileSystem

),意為:Hadoop分布式文件系統(tǒng)。是Apache

Hadoop核心組件之一,作為大數(shù)據(jù)生態(tài)圈最底層的分布式存儲服務而存在。也可以說大數(shù)據(jù)首先要解決的問題就是海量數(shù)據(jù)的存儲問題。HDFS簡介l

HDFS主要是解決大數(shù)據(jù)如何存儲問題的。分布式意味著是HDFS是橫跨在多臺計算機上的存儲系統(tǒng)。l

HDFS是一種能夠在普通硬件上運行的分布式文件系統(tǒng),它是高度容錯的,適應于具有大數(shù)據(jù)集的應用程序,它非

常適于存儲大型數(shù)據(jù)(比如TB和

PB)。l

HDFS使用多臺計算機存儲文件,并且提供統(tǒng)一的訪問接口,像是訪問一個普通文件系統(tǒng)一樣使用分布式文件系統(tǒng)。HDFS設計目標l

硬件故障(Hardware

Failure)是常態(tài),

HDFS可能有成百上千的服務器組成,每一個組件都有可能出現(xiàn)故障。因

此故障檢測和自動快速恢復是HDFS的核心架構目標。l

HDFS上的應用主要是以流式讀取數(shù)據(jù)(Streaming

DataAccess)

。

HDFS被設計成用于批處理,而不是用戶交互式的。相較于數(shù)據(jù)訪問的反應時間,更注重數(shù)據(jù)訪問的高吞吐量(指的是系統(tǒng)能夠快速處理大量請求的能力,也就是處理更多的請求數(shù)量)。l

典型的HDFS文件大小是GB到TB的級別。所以,

HDFS被調(diào)整成支持大文件(Large

DataSets)

。它應該提供很高的聚合數(shù)據(jù)帶寬,一個集群中支持數(shù)百個節(jié)點,一個集群中還應該支持千萬級別的文件。HDFS設計目標l

大部分HDFS應用對文件要求的是write-one-read-many訪問模型。一個文件一旦創(chuàng)建、寫入、關閉之后就不需要修改了。這一假設簡化了數(shù)據(jù)一致性問題,使高吞吐量的數(shù)據(jù)訪問成為可能。l

HDFS被設計為可從一個平臺輕松移植到另一個平臺。這有助于將HDFS廣泛用作大量應用程序的首選平臺。u

文件系統(tǒng)與分布式文件系統(tǒng)u

HDFS簡介u

HDFS起源發(fā)展、設計目標u

HDFS應用場景u

HDFS重要特性

目錄Contents大文件數(shù)據(jù)流式訪問一次寫入多次讀取低成本部署,廉價PC

高容錯小文件數(shù)據(jù)交互式訪問

頻繁任意修改低延遲處理不適合場景適合場景HDFS應用場景1.

HDFS作為文件存儲系統(tǒng),實際開發(fā)中,我們需要做什么?2.

HDFS會有復雜的代碼編程操作嗎?3.誰會更頻繁的來讀寫HDFS上數(shù)據(jù)?思考●HBase非關系型數(shù)據(jù)庫1HBase適用場景目錄HBase簡介2使用HDFS作為文件存儲系統(tǒng),可存儲海量數(shù)據(jù)支持索引rowkey,可隨機、實時查詢非關系型,適合稀疏數(shù)據(jù)存儲HBase簡介為什么使用HBase?GoogleBigTableHBase利用GFS作為文件存儲系統(tǒng)利用HDFS作為文件存儲系統(tǒng)運行MapReduce處理存儲的海量數(shù)據(jù)同樣利用HadoopMapReduce處理海量數(shù)據(jù)利用Chubby作為協(xié)同服務利用Zookeeper作為協(xié)同服務HBase簡介HBase是GoogleBigTable的開源實現(xiàn)HBase簡介HBase在Hadoop生態(tài)圈的位置HBase(HadoopDatabase)是一個高可靠性,高性能,可伸縮,面向列的,非關系型的分布式數(shù)據(jù)庫分布式數(shù)據(jù)庫使用HDFS作為文件存儲系統(tǒng),實現(xiàn)數(shù)據(jù)分布式存儲HBase為搭建在集群中的主從架構數(shù)據(jù)庫HBase簡介HBase是什么?HBase是什么?HBase簡介學號姓名性別出生日期高中名稱本科名稱碩士名稱……1001張三男1985.06XX高中清華清華……1002李四男1985.06XX高中清華1003王五男1985.08XX高中中科大(rowkey,columnfamily,column,timestamp)Value(1)海量存儲。HBase通過多臺廉價的機器實現(xiàn)存儲PB級的海量數(shù)據(jù),并且可以在幾十毫秒或幾百毫秒內(nèi)返回數(shù)據(jù)。(2)面向列。HBase面向列進行存儲和權限控制,并支持獨立檢索。HBase是根據(jù)列族存儲數(shù)據(jù)的,一個列族下可以有多列,列族在創(chuàng)建表時必須指定,并且可以單獨對列進行各種操作。(3)多版本。HBase中表的每一列的數(shù)據(jù)存儲都有多個Version(版本,即同一條數(shù)據(jù)插入不同的時間戳)(4)稀疏性。HBase的稀疏性主要體現(xiàn)出HBase列的靈活性。在列族中,可以指定多列,在列數(shù)據(jù)為空的情況下,是不會占用存儲空間的。(5)易擴展性。(6)高可靠性。分布式。HBase簡介HBase的特性1HBase適用場景目錄HBase簡介2HBaseHDFS數(shù)據(jù)存儲HBase是一個數(shù)據(jù)庫,構建在HDFS之上,數(shù)據(jù)以表、行和列的形式存儲HDFS是一個分布式的文件系統(tǒng),用于存儲大量文件數(shù)據(jù)讀取方式隨機讀取&小范圍掃描&全表掃描全文件順序讀取或分區(qū)數(shù)據(jù)讀取寫入方式隨機寫入僅能追加刪除方式指定刪除不支持指定刪除,只能全文件刪除HBase適用場景HDFSVSHBaseHBaseRDBMS硬件集群商用硬件較貴的多處理器硬件容錯針對單個或少個節(jié)點宕機沒有影響需要額外較復雜的配置數(shù)據(jù)大小TB到PB級數(shù)據(jù),千萬到十億級行GB到TB級數(shù)據(jù),十萬到百萬級行數(shù)據(jù)層一個分布式、多維度的、排序的Map行或列導向數(shù)據(jù)類型只有Bytes多種數(shù)據(jù)類型支持事務單個行的ACID支持表間和行間的ACID查詢語言支持自身提供的APISQL索引Row-key索引支持吞吐量每秒百萬查詢每秒千次查詢HBase適用場景HBaseVSRDBMSHBaseHive延遲性在線,低延遲批處理,較高延遲結構化非結構化數(shù)據(jù)結構化數(shù)據(jù)適用人員程序員分析人員HBase適用場景HBaseVSHiveHBase:在線實時查詢Hive:離線批量報表查詢

針對已經(jīng)存在的Hadoop集群

針對大量的數(shù)據(jù)

要求快速隨機讀取或?qū)懭?/p>

簡單訪問模式只需要增加數(shù)據(jù)的場景

只有批量處理而不是隨機讀取的場景復雜的訪問模式(如joins)

需要完全SQL支持

單個節(jié)點可以處理所有數(shù)據(jù)的場景HBase適用場景HBase適用場景YESNO目錄1HBase數(shù)據(jù)模型HBase架構2HBase讀寫流程3HBase數(shù)據(jù)模型傳統(tǒng)關系型模型(邏輯視圖)行列HBase數(shù)據(jù)模型邏輯模型(邏輯視圖)RegionRegion命名空間(namespace)命名空間是對表的邏輯分組,不同的命名空間類似于關系型數(shù)據(jù)庫中的不同的Database數(shù)據(jù)庫。利用命名空間,在多租戶場景下可做到更好的資源和數(shù)據(jù)隔離。表對應于關系型數(shù)據(jù)庫中的一張張表,HBase以“表”為單位組織數(shù)據(jù),表由多行組成。行行由一個RowKey和多個列族組成,一個行有一個RowKey,用來唯一標示。HBase數(shù)據(jù)模型數(shù)據(jù)模型術語列族/列簇每一行由若干列族組成,每個列族下可包含多個列。列HBase表的列是由列族名、限定符以及列名組成的,如列名“c1:col-1”,其中,“c1”為列族名,“:”為限定符,“col-1”為列名。創(chuàng)建HBase表不需要指定列,因為列是可變的,非常靈活。時間戳單元格內(nèi)不同版本的值按時間倒序排列,最新的數(shù)據(jù)排在最前面單元格單元格由RowKey、列族、列限定符唯一定位,單元格之中存放值(Value)和版本號(時間戳)。HB

溫馨提示

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

最新文檔

評論

0/150

提交評論