版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
“《大數(shù)據(jù)存儲(chǔ)技術(shù)》【ch01】了解大數(shù)據(jù)【ch02】結(jié)構(gòu)化數(shù)據(jù)倉庫——Hive【ch03】列存儲(chǔ)數(shù)據(jù)庫—HBase【ch04】文檔存儲(chǔ)數(shù)據(jù)庫——MongoDB【ch05】鍵值存儲(chǔ)數(shù)據(jù)庫——Redis【ch06】列式存儲(chǔ)數(shù)據(jù)庫——ClickHouse【ch07】校園就餐數(shù)據(jù)綜合分析全套可編輯PPT課件
了解大數(shù)據(jù)“大數(shù)據(jù)存儲(chǔ)技術(shù)項(xiàng)目一01大數(shù)據(jù)簡(jiǎn)介大數(shù)據(jù)的特性01大數(shù)據(jù)的5V特性0102030405大數(shù)據(jù)的規(guī)模通常達(dá)到PB、EB甚至ZB級(jí)別,遠(yuǎn)超傳統(tǒng)數(shù)據(jù)處理系統(tǒng)的容量。數(shù)據(jù)量大(Volume)在海量數(shù)據(jù)中,有價(jià)值的信息往往比例較小,需要通過特定技術(shù)從“數(shù)據(jù)礦山”中提取“數(shù)據(jù)金礦”。零售商分析數(shù)十億條購買記錄,可能只為找出能提高銷售額的幾個(gè)關(guān)鍵購買模式。價(jià)值密度低(Value)大數(shù)據(jù)包含結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),形式涵蓋文本、圖像、音頻、視頻等多種類型。類型多樣(Variety)數(shù)據(jù)的準(zhǔn)確性、可靠性和真實(shí)性存在差異,需要特別關(guān)注數(shù)據(jù)質(zhì)量問題。真實(shí)性(Veracity)數(shù)據(jù)產(chǎn)生、傳輸和處理的速度極快,往往要求實(shí)時(shí)或近實(shí)時(shí)分析。處理高速(Velocity)大數(shù)據(jù)的特性02大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)的區(qū)別傳統(tǒng)數(shù)據(jù)通常是指那些能夠利用關(guān)系型數(shù)據(jù)庫進(jìn)行有效管理的數(shù)據(jù)。這些數(shù)據(jù)通常具有固定的結(jié)構(gòu),如企業(yè)中的銷售記錄、庫存清單、客戶信息等。這些數(shù)據(jù)通常以行和列的形式存儲(chǔ),數(shù)據(jù)量相對(duì)較小,處理速度也相對(duì)較慢,多采用批處理的方式。對(duì)于傳統(tǒng)數(shù)據(jù),通常使用SQL等語言進(jìn)行查詢和分析,以獲取需要的信息。大數(shù)據(jù)則是一個(gè)更廣泛的概念。它不僅包括傳統(tǒng)的關(guān)系型數(shù)據(jù),還包括各種非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù),如社交媒體上的文本、圖像、視頻,以及傳感器產(chǎn)生的實(shí)時(shí)數(shù)據(jù)、網(wǎng)頁日志等。這些數(shù)據(jù)以驚人的速度產(chǎn)生和積累,其規(guī)模之大,往往超出了傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的處理能力范圍。同時(shí),大數(shù)據(jù)往往具有較低的價(jià)值密度,這意味著需要對(duì)海量數(shù)據(jù)進(jìn)行篩選、清洗、整合操作,才能提取出真正有價(jià)值的信息。大數(shù)據(jù)的特性02大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)的區(qū)別為了應(yīng)對(duì)大數(shù)據(jù)的挑戰(zhàn),需要采用全新的技術(shù)和方法。分布式存儲(chǔ)和計(jì)算技術(shù)(如Hadoop)應(yīng)運(yùn)而生,它們可以將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)計(jì)算機(jī)上,并進(jìn)行并行處理,大大提高了處理效率。NoSQL數(shù)據(jù)庫(如MongoDB)則更擅長處理非結(jié)構(gòu)化數(shù)據(jù)。此外,數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等技術(shù)也被廣泛應(yīng)用于大數(shù)據(jù)分析,以發(fā)現(xiàn)隱藏在數(shù)據(jù)背后的規(guī)律和模式。正是由于這些差異,大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)的應(yīng)用場(chǎng)景也大相徑庭。傳統(tǒng)數(shù)據(jù)主要用于企業(yè)內(nèi)部的管理和決策支持,而大數(shù)據(jù)則在更廣泛的領(lǐng)域中發(fā)揮作用,如互聯(lián)網(wǎng)搜索、個(gè)性化推薦、金融風(fēng)險(xiǎn)控制、智能醫(yī)療、智慧城市建設(shè)等。大數(shù)據(jù)的特性02大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)的區(qū)別表1-1大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)的主要區(qū)別大數(shù)據(jù)的特性03大數(shù)據(jù)存儲(chǔ)面臨的挑戰(zhàn)大數(shù)據(jù)最直觀的特征就是“海量”,所面對(duì)的數(shù)據(jù)常常以PB、EB甚至ZB為單位。要容納如此龐大的數(shù)據(jù),傳統(tǒng)的存儲(chǔ)設(shè)備和架構(gòu)已經(jīng)捉襟見肘。更嚴(yán)峻的是,數(shù)據(jù)并非靜止不動(dòng)的,而是以驚人的速度持續(xù)增長。1)存儲(chǔ)容量的挑戰(zhàn)吞吐量是指單位時(shí)間內(nèi)存儲(chǔ)系統(tǒng)能夠處理的數(shù)據(jù)量,而延遲則是指數(shù)據(jù)訪問的響應(yīng)時(shí)間。一個(gè)高性能的存儲(chǔ)系統(tǒng),就如同一個(gè)高效運(yùn)轉(zhuǎn)的物流中心,能夠快速、準(zhǔn)確地處理海量貨物的進(jìn)出,保證整個(gè)系統(tǒng)的流暢運(yùn)行。2)存儲(chǔ)性能的挑戰(zhàn)大數(shù)據(jù)的特性03大數(shù)據(jù)存儲(chǔ)面臨的挑戰(zhàn)大數(shù)據(jù)除了“體量大”,另一個(gè)顯著特征是“類型多樣”。所面對(duì)的數(shù)據(jù),不再僅僅是傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù),還包含了大量的半結(jié)構(gòu)化數(shù)據(jù)(如JSON、XML文檔)
和非結(jié)構(gòu)化數(shù)據(jù)(如文本、圖像、音頻、視頻)。3)數(shù)據(jù)多樣性的挑戰(zhàn)海量數(shù)據(jù)的存儲(chǔ),不僅是把數(shù)據(jù)“放進(jìn)去”那么簡(jiǎn)單,還需要進(jìn)行有效的管理,確保數(shù)據(jù)的可靠性、安全性和一致性。為了防止數(shù)據(jù)丟失,需要對(duì)數(shù)據(jù)進(jìn)行冗余存儲(chǔ)和備份,這就像給重要的文件制作副本,以防萬一。同時(shí),大數(shù)據(jù)中往往包含大量的敏感信息,如個(gè)人身份信息、醫(yī)療記錄、財(cái)務(wù)數(shù)據(jù)等。因此需要采取嚴(yán)格的安全措施,防止數(shù)據(jù)泄露,并遵守相關(guān)的隱私保護(hù)法規(guī)。4)數(shù)據(jù)管理的挑戰(zhàn)大數(shù)據(jù)的特性03大數(shù)據(jù)存儲(chǔ)面臨的挑戰(zhàn)存儲(chǔ)海量數(shù)據(jù)需要大量的硬件設(shè)備、電力消耗及運(yùn)維管理,這帶來了高昂的成本。如何在滿足性能和可靠性要求的同時(shí),盡可能地降低存儲(chǔ)成本,提高資源利用率,成了一個(gè)重要的挑戰(zhàn)。因此需要精打細(xì)算,尋找更經(jīng)濟(jì)、更高效的存儲(chǔ)方案,實(shí)現(xiàn)整體擁有成本的最優(yōu)化。這就像經(jīng)營一家企業(yè),既要保證產(chǎn)品質(zhì)量和服務(wù)水平,又要嚴(yán)格控制成本,提高運(yùn)營效率,才能在激烈的市場(chǎng)競(jìng)爭(zhēng)中立于不敗之地。5)成本效益的挑戰(zhàn)大數(shù)據(jù)的應(yīng)用場(chǎng)景大數(shù)據(jù)技術(shù)通過對(duì)海量數(shù)據(jù)進(jìn)行采集、存儲(chǔ)、處理和分析,為各行業(yè)提供了高效的決策支持和創(chuàng)新驅(qū)動(dòng)力。在國內(nèi),隨著信息化水平的提升和政策的支持,大數(shù)據(jù)在電商與零售業(yè)、智慧城市、醫(yī)療與健康、教育領(lǐng)域等的應(yīng)用日益廣泛。這些應(yīng)用不僅展示了大數(shù)據(jù)處理框架的強(qiáng)大能力,還體現(xiàn)了其在解決實(shí)際問題中的重要作用。電商與零售業(yè)的大數(shù)據(jù)應(yīng)用智慧城市的大數(shù)據(jù)應(yīng)用醫(yī)療與健康的大數(shù)據(jù)應(yīng)用教育領(lǐng)域的大數(shù)據(jù)應(yīng)用02大數(shù)據(jù)的影響與發(fā)展大數(shù)據(jù)的未來前景大數(shù)據(jù)的未來發(fā)展不僅關(guān)乎技術(shù)本身的進(jìn)步,更與國家政策、經(jīng)濟(jì)需求和社會(huì)應(yīng)用緊密相連。接下來,將從技術(shù)發(fā)展趨勢(shì)、與其他新興技術(shù)的融合,以及產(chǎn)業(yè)發(fā)展預(yù)測(cè)方面介紹大數(shù)據(jù)的未來前景,同時(shí)結(jié)合國內(nèi)當(dāng)前的實(shí)際情況,為讀者提供實(shí)用參考。大數(shù)據(jù)的發(fā)展歷程大數(shù)據(jù)技術(shù)的興起和發(fā)展是信息技術(shù)領(lǐng)域的重要轉(zhuǎn)折點(diǎn),其發(fā)展歷程涵蓋了技術(shù)創(chuàng)新、存儲(chǔ)突破、處理方式變革,以及產(chǎn)業(yè)生態(tài)的形成。從20世紀(jì)末到21世紀(jì)初,大數(shù)據(jù)經(jīng)歷了從概念提出到技術(shù)成熟的關(guān)鍵階段,分布式存儲(chǔ)和計(jì)算技術(shù)的進(jìn)步為其提供了基礎(chǔ),而數(shù)據(jù)處理范式的轉(zhuǎn)變推動(dòng)了其廣泛應(yīng)用。同時(shí),大數(shù)據(jù)產(chǎn)業(yè)的生態(tài)構(gòu)成逐漸完善,形成了技術(shù)、工具和服務(wù)的完整體系。03大數(shù)據(jù)的影響與發(fā)展163分布式系統(tǒng)01分布式系統(tǒng)的基本原理分布式系統(tǒng)的定義與特點(diǎn)(1)硬件資源獨(dú)立性:系統(tǒng)中的每臺(tái)計(jì)算機(jī)都擁有自己的處理器、內(nèi)存和存儲(chǔ)設(shè)備,各自運(yùn)行獨(dú)立的操作系統(tǒng)和應(yīng)用程序。(2)通信依賴性:系統(tǒng)中的計(jì)算機(jī)通過消息傳遞進(jìn)行通信和協(xié)作,網(wǎng)絡(luò)連接是系統(tǒng)正常運(yùn)行的關(guān)鍵。(3)去中心化:系統(tǒng)中沒有單一的控制中心,各節(jié)點(diǎn)相對(duì)獨(dú)立,共同維護(hù)系統(tǒng)的穩(wěn)定運(yùn)行。(4)并行性:多個(gè)節(jié)點(diǎn)可以同時(shí)處理不同的任務(wù),大幅提高了系統(tǒng)的處理效率。(5)可擴(kuò)展性:系統(tǒng)可以通過增加節(jié)點(diǎn)來提升整體性能和存儲(chǔ)容量。(6)透明性:對(duì)用戶而言,分布式系統(tǒng)表現(xiàn)為一個(gè)統(tǒng)一的整體,其內(nèi)部結(jié)構(gòu)和復(fù)雜性被隱藏。分布式系統(tǒng)的基本模型(1)客戶端—服務(wù)器模型??蛻舳讼蚍?wù)器發(fā)送請(qǐng)求,服務(wù)器處理請(qǐng)求并返回結(jié)果。(2)點(diǎn)對(duì)點(diǎn)(P2P)模型。系統(tǒng)中所有節(jié)點(diǎn)既是客戶端又是服務(wù)器,能夠直接相互通信并共享資源。(3)分層模型。系統(tǒng)按功能被劃分為多個(gè)層次,每層都需要完成特定任務(wù)并為上一層提供服務(wù)。(4)分布式對(duì)象模型。系統(tǒng)中的實(shí)體被抽象為對(duì)象,對(duì)象之間通過遠(yuǎn)程方法調(diào)用進(jìn)行交互。分布式系統(tǒng)01分布式系統(tǒng)的基本原理分布式系統(tǒng)的設(shè)計(jì)原則(1)故障容忍:系統(tǒng)應(yīng)能夠在部分節(jié)點(diǎn)失效的情況下繼續(xù)運(yùn)行。例如,HDFS通過數(shù)據(jù)冗余(默認(rèn)情況下是3份副本)確保在部分節(jié)點(diǎn)故障時(shí)數(shù)據(jù)不丟失。(2)可擴(kuò)展性:系統(tǒng)應(yīng)能夠通過添加更多節(jié)點(diǎn)來提高性能和容量。例如,Elasticsearch可以通過增加節(jié)點(diǎn)來擴(kuò)展搜索和索引能力,新節(jié)點(diǎn)會(huì)自動(dòng)加入集群并分擔(dān)負(fù)載。(3)一致性與可用性平衡:根據(jù)CAP理論,在分區(qū)容錯(cuò)性(P)的前提下,系統(tǒng)需要在一致性(C)和可用性(A)之間做出權(quán)衡。例如,銀行系統(tǒng)可能優(yōu)先保證數(shù)據(jù)一致性,而社交媒體可能優(yōu)先保證系統(tǒng)可用性。分布式系統(tǒng)01分布式系統(tǒng)的基本原理分布式系統(tǒng)的設(shè)計(jì)原則(4)異步通信:使用異步消息傳遞來減少系統(tǒng)組件之間的耦合。例如,通過消息隊(duì)列(如Kafka)使生產(chǎn)者和消費(fèi)者解耦,提高系統(tǒng)的靈活性和可靠性。(5)數(shù)據(jù)分區(qū):將數(shù)據(jù)劃分到多個(gè)節(jié)點(diǎn)上,提高并行處理能力。例如,HBase按行鍵范圍將表數(shù)據(jù)分布到多個(gè)RegionServer上,實(shí)現(xiàn)負(fù)載均衡和高并發(fā)讀寫。(6)復(fù)制與冗余:通過數(shù)據(jù)復(fù)制來提高可靠性和讀取性能。例如MongoDB的副本集包含一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn),數(shù)據(jù)寫入主節(jié)點(diǎn)后被復(fù)制到從節(jié)點(diǎn)中,以確保數(shù)據(jù)安全并分擔(dān)讀取負(fù)載。分布式系統(tǒng)01分布式系統(tǒng)的基本原理分布式系統(tǒng)02分布式存儲(chǔ)技術(shù)概述1)分布式文件系統(tǒng)分布式文件系統(tǒng)(DFS)是一種將文件存儲(chǔ)在多臺(tái)計(jì)算機(jī)上的文件系統(tǒng),它為用戶提供統(tǒng)一的文件訪問接口,隱藏了底層的分布式特性。2)分布式數(shù)據(jù)庫分布式數(shù)據(jù)庫將數(shù)據(jù)分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,通過分片、復(fù)制和分布式事務(wù)等技術(shù),實(shí)現(xiàn)高可用性和可擴(kuò)展性。3)分布式存儲(chǔ)的關(guān)鍵技術(shù)集群01集群架構(gòu)與組成(1)(2)(3)(4)集群中的計(jì)算機(jī)被稱為節(jié)點(diǎn),通常分為主節(jié)點(diǎn)(Master)和工作節(jié)點(diǎn)(Worker)。節(jié)點(diǎn)本地存儲(chǔ):數(shù)據(jù)存儲(chǔ)在節(jié)點(diǎn)的本地磁盤上,如HDFS中的DataNode存儲(chǔ)。網(wǎng)絡(luò)附加存儲(chǔ)(NAS):通過網(wǎng)絡(luò)共享的文件系統(tǒng),如NFS。存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN):專用的高速網(wǎng)絡(luò)連接服務(wù)器和存儲(chǔ)設(shè)備。分布式存儲(chǔ)系統(tǒng):數(shù)據(jù)分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,如Ceph、GlusterFS。存儲(chǔ)系統(tǒng)資源管理器:HadoopYARN、Kubernetes、Mesos等。集群監(jiān)控工具:Ganglia、Prometheus、Zabbix等。配置管理工具:Ansible、Puppet、Chef等。集群管理軟件千兆/萬兆以太網(wǎng):經(jīng)濟(jì)實(shí)惠,適合一般規(guī)模的集群。
InfiniBand:高帶寬、低延遲,適合計(jì)算密集型應(yīng)用。專用交換機(jī):提供節(jié)點(diǎn)間的高速通信通道,確保數(shù)據(jù)傳輸效率。網(wǎng)絡(luò)互聯(lián)集群的基本組成集群01集群架構(gòu)與組成集群架構(gòu)類型CLUSTERARCHITECTURETYPE主從架構(gòu)由一個(gè)或多個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)組成,主節(jié)點(diǎn)負(fù)責(zé)管理和協(xié)調(diào),從節(jié)點(diǎn)負(fù)責(zé)執(zhí)行具體任務(wù)。(1)主從架構(gòu)(Master-Slave)對(duì)等架構(gòu)中所有節(jié)點(diǎn)的地位相同,共同參與系統(tǒng)管理和任務(wù)執(zhí)行。(2)對(duì)等架構(gòu)(Peer-to-Peer)混合架構(gòu)結(jié)合了主從架構(gòu)和對(duì)等架構(gòu)的特點(diǎn),根據(jù)功能需求靈活配置節(jié)點(diǎn)角色。(3)混合架構(gòu)集群01集群架構(gòu)與組成集群通信機(jī)制(1)消息傳遞。節(jié)點(diǎn)通過發(fā)送和接收消息進(jìn)行信息交換,支持異步操作。(2)遠(yuǎn)程過程調(diào)用(RPC)。RPC允許一個(gè)節(jié)點(diǎn)調(diào)用另一個(gè)節(jié)點(diǎn)上的程序,如同調(diào)用本地函數(shù)一樣。(3)共享內(nèi)存。在一些緊密耦合的集群中,節(jié)點(diǎn)可以訪問共享的內(nèi)存區(qū)域來進(jìn)行數(shù)據(jù)交換。(4)文件系統(tǒng)。通過共享的分布式文件系統(tǒng)交換數(shù)據(jù)。集群02集群存儲(chǔ)策略與方法(1)哈希分布。哈希分布根據(jù)數(shù)據(jù)的某個(gè)鍵(如ID)計(jì)算哈希值,并根據(jù)哈希值確定數(shù)據(jù)所在的節(jié)點(diǎn)。哈希分布能夠?qū)崿F(xiàn)數(shù)據(jù)的均勻分散,但難以支持范圍查詢。(2)范圍分布。范圍分布根據(jù)數(shù)據(jù)的鍵值范圍劃分?jǐn)?shù)據(jù)。(3)一致性哈希。一致性哈希是一種特殊的哈希分布方法,通過環(huán)形哈希空間使節(jié)點(diǎn)在加入或離開時(shí)只需重新分配少量數(shù)據(jù)。(4)目錄分布(基于服務(wù))。目錄分布通過維護(hù)一個(gè)中央目錄來記錄數(shù)據(jù)與節(jié)點(diǎn)的映射關(guān)系。系統(tǒng)通過查詢中央目錄來定位數(shù)據(jù)所在的節(jié)點(diǎn),而不是通過計(jì)算來確定數(shù)據(jù)位置。1)數(shù)據(jù)分布策略集群02集群存儲(chǔ)策略與方法(1)固定副本數(shù)。固定副本數(shù)為每個(gè)數(shù)據(jù)塊或記錄維護(hù)固定數(shù)量的副本。(2)動(dòng)態(tài)副本調(diào)整。動(dòng)態(tài)副本調(diào)整是指根據(jù)數(shù)據(jù)訪問頻率和重要性動(dòng)態(tài)地調(diào)整副本數(shù)量。(3)異地多活。異地多活通過將副本分布在不同的數(shù)據(jù)中心或地理位置,以提供更高級(jí)別的災(zāi)難恢復(fù)能力。(4)糾刪碼。糾刪碼是一種更加節(jié)省存儲(chǔ)空間的數(shù)據(jù)保護(hù)方案。與傳統(tǒng)副本策略相比,糾刪碼通過將數(shù)據(jù)分割成多個(gè)數(shù)據(jù)塊并生成校驗(yàn)塊,在保證相同可靠性的前提下大幅減少了存儲(chǔ)開銷。2)副本策略集群02集群存儲(chǔ)策略與方法3)數(shù)據(jù)訪問模式批量順序訪問批量順序訪問一次處理大量連續(xù)數(shù)據(jù),注重吞吐量而非延遲?;旌显L問混合訪問結(jié)合批量順序訪問和隨機(jī)訪問的特點(diǎn),支持復(fù)雜的數(shù)據(jù)處理需求。隨機(jī)訪問隨機(jī)訪問根據(jù)鍵或索引直接訪問特定數(shù)據(jù),強(qiáng)調(diào)低延遲。流式訪問流式訪問以連續(xù)流的方式處理實(shí)時(shí)生成的數(shù)據(jù)。集群02集群存儲(chǔ)策略與方法4)存儲(chǔ)介質(zhì)與層次化存儲(chǔ)01020304利用RAM等高速存儲(chǔ),存放熱點(diǎn)數(shù)據(jù)和索引。DRAM層利用機(jī)械硬盤的大容量和低成本特點(diǎn),存儲(chǔ)冷數(shù)據(jù)。HDD層利用磁帶或?qū)ο蟠鎯?chǔ)等超低成本介質(zhì),存儲(chǔ)極少訪問的歷史數(shù)據(jù)。歸檔層利用固態(tài)硬盤的高IOPS和低延遲特性,存放半熱點(diǎn)數(shù)據(jù)和日志。SSD層多層次存儲(chǔ)架構(gòu)集群02集群存儲(chǔ)策略與方法4)存儲(chǔ)介質(zhì)與層次化存儲(chǔ)多層次存儲(chǔ)架構(gòu)。熱冷分離:將頻繁訪問的熱點(diǎn)數(shù)據(jù)遷移到更快的存儲(chǔ)層中,而將不常用的冷數(shù)據(jù)遷移到慢速但成本更低的存儲(chǔ)層中。HDFS的分層存儲(chǔ)功能就支持這種策略。生命周期管理:根據(jù)數(shù)據(jù)年齡自動(dòng)遷移數(shù)據(jù)?;诓呗缘姆謱樱焊鶕?jù)預(yù)定義策略分配存儲(chǔ)資源。集群02集群存儲(chǔ)策略與方法5)數(shù)據(jù)的一致性與持久化一致性模型強(qiáng)一致性所有節(jié)點(diǎn)在任何時(shí)刻看到的數(shù)據(jù)都是一致的。最終一致性系統(tǒng)保證在沒有新的更新情況下,最終所有副本都會(huì)達(dá)到一致狀態(tài)。因果一致性確保因果相關(guān)的操作被所有節(jié)點(diǎn)按相同順序觀察到。集群02集群存儲(chǔ)策略與方法5)數(shù)據(jù)的一致性與持久化持久化策略強(qiáng)一致性預(yù)寫日志(WAL)在執(zhí)行實(shí)際數(shù)據(jù)修改前,先將操作記錄到持久化日志中。最終一致性檢查點(diǎn)機(jī)制定期將內(nèi)存中的狀態(tài)寫入持久存儲(chǔ)??煺談?chuàng)建數(shù)據(jù)在特定時(shí)間點(diǎn)的完整副本。謝謝觀看“大數(shù)據(jù)存儲(chǔ)技術(shù)結(jié)構(gòu)化數(shù)據(jù)倉庫——Hive“大數(shù)據(jù)存儲(chǔ)技術(shù)項(xiàng)目二01Hive概述Hive簡(jiǎn)介01Hive的定義Hive是構(gòu)建在Hadoop之上的一個(gè)數(shù)據(jù)倉庫工具,主要用于處理和分析大規(guī)模結(jié)構(gòu)化數(shù)據(jù)。它通過提供類似SQL的查詢語言(HiveQL)使用戶能夠使用SQL語法查詢存儲(chǔ)在HDFS或其他存儲(chǔ)系統(tǒng)中的數(shù)據(jù),而無須直接編寫MapReduce代碼。Hive適用于數(shù)據(jù)倉庫應(yīng)用,如數(shù)據(jù)分析、ETL(提取、轉(zhuǎn)換、加載)等,但由于其基于批處理框架,因此查詢延遲較高,不適合實(shí)時(shí)查詢場(chǎng)景。Hive簡(jiǎn)介02Hive的特點(diǎn)Hive提供了類似SQL的查詢語言HiveQL,使數(shù)據(jù)分析更加直觀,易于上手,適合初學(xué)者。1)易用性Hive依賴Hadoop分布式架構(gòu),支持PB級(jí)數(shù)據(jù)存儲(chǔ)和計(jì)算,能夠隨著數(shù)據(jù)的增長進(jìn)行擴(kuò)展。2)高擴(kuò)展性Hive兼容ORC、Parquet、TextFile、Avro等多種數(shù)據(jù)存儲(chǔ)格式,優(yōu)化了數(shù)據(jù)存取效率。3)多存儲(chǔ)格式支持Hive簡(jiǎn)介02Hive的特點(diǎn)Hive支持MapReduce、Spark等多種計(jì)算框架,可以提高查詢性能,減少執(zhí)行時(shí)間。4)計(jì)算引擎靈活Hive主要用于離線數(shù)據(jù)分析和ETL任務(wù),適合大規(guī)模數(shù)據(jù)預(yù)處理和聚合計(jì)算,不適用于實(shí)時(shí)查詢。5)適用于批量處理Hive能夠與HDFS、HBase、Spark及BI工具(如Tableau、PowerBI)無縫集成,支持?jǐn)?shù)據(jù)可視化和業(yè)務(wù)分析。6)良好的生態(tài)兼容性Hive簡(jiǎn)介03Hive的應(yīng)用場(chǎng)景京東作為國內(nèi)領(lǐng)先的電商平臺(tái)之一,利用Hive處理每天產(chǎn)生的海量交易數(shù)據(jù)和用戶行為日志。Hive將這些數(shù)據(jù)從HDFS中提取出來,通過HiveQL編寫統(tǒng)計(jì)查詢,計(jì)算熱門商品排名或預(yù)測(cè)庫存需求。這種應(yīng)用直接影響了打開京東首頁時(shí)看到的推薦內(nèi)容,從而使購物體驗(yàn)更加貼心。1)電商平臺(tái)的數(shù)據(jù)分析抖音每天生成數(shù)億條用戶觀看、點(diǎn)贊和評(píng)論數(shù)據(jù),這些數(shù)據(jù)存儲(chǔ)在分布式文件系統(tǒng)中。字節(jié)跳動(dòng)使用Hive對(duì)這些結(jié)構(gòu)化數(shù)據(jù)進(jìn)行批處理分析,如統(tǒng)計(jì)某段時(shí)間內(nèi)最受歡迎的視頻類型或用戶活躍時(shí)段。這些分析結(jié)果不僅能幫助抖音優(yōu)化內(nèi)容推薦算法,還能為廣告商提供精準(zhǔn)的用戶畫像。刷抖音時(shí)看到的熱門視頻,可能就與Hive的幕后分析有關(guān)。2)短視頻平臺(tái)的用戶行為分析Hive簡(jiǎn)介03Hive的應(yīng)用場(chǎng)景中國移動(dòng)是中國最大的電信運(yùn)營商之一,Hive在其大數(shù)據(jù)平臺(tái)中扮演著重要角色。例如,中國移動(dòng)利用Hive分析用戶的通話記錄、流量使用情況和套餐訂閱數(shù)據(jù),以找出網(wǎng)絡(luò)高峰期或流量瓶頸區(qū)域。通過HiveQL查詢,運(yùn)維團(tuán)隊(duì)能快速生成報(bào)表,優(yōu)化基站部署或推出更合適的流量套餐。如果無意發(fā)現(xiàn)最近手機(jī)信號(hào)變好或收到定制套餐推薦,則可能是得益于Hive的數(shù)據(jù)處理能力。3)電信運(yùn)營商的流量?jī)?yōu)化螞蟻集團(tuán)(支付寶的母公司)使用Hive處理海量交易數(shù)據(jù),以支持風(fēng)控和反欺詐系統(tǒng)。例如,Hive可以分析用戶的支付記錄、轉(zhuǎn)賬行為和登錄設(shè)備信息,以識(shí)別異常交易模式。如果你在支付寶上收到類似于“賬戶安全提醒”或交易被臨時(shí)凍結(jié)的消息,則很可能是Hive在后臺(tái)檢測(cè)到了潛在風(fēng)險(xiǎn)。這種應(yīng)用保障了資金的安全,讓支付更放心。4)金融行業(yè)的風(fēng)險(xiǎn)控制Hive與Hadoop的關(guān)系01Hadoop簡(jiǎn)介HDFSHDFS是Hadoop的分布式文件系統(tǒng),用于存儲(chǔ)大規(guī)模數(shù)據(jù)。它將大文件分割成小塊(默認(rèn)為128MB),并將這些數(shù)據(jù)塊分布存儲(chǔ)在集群的多個(gè)節(jié)點(diǎn)上。HDFS具有高容錯(cuò)性,通過數(shù)據(jù)復(fù)制(默認(rèn)3份)確保即使部分節(jié)點(diǎn)故障,數(shù)據(jù)仍然可用,主要角色如下。NameNode:管理文件系統(tǒng)元數(shù)據(jù)和目錄結(jié)構(gòu)。DataNode:存儲(chǔ)實(shí)際數(shù)據(jù)塊。1)核心組件Hive與Hadoop的關(guān)系01Hadoop簡(jiǎn)介1)核心組件MapReduceMapReduce是一種分布式計(jì)算編程模型,用于處理存儲(chǔ)在HDFS中的數(shù)據(jù)。它將任務(wù)分為兩個(gè)階段。Map階段:將輸入數(shù)據(jù)分解為鍵值對(duì)。Reduce階段:對(duì)分解得到的鍵值對(duì)進(jìn)行聚合與處理。YARN從Hadoop2.x開始引入,YARN將資源管理和任務(wù)調(diào)度分離,提高了集群資源利用率。ResourceManager:負(fù)責(zé)資源分配。NodeManager:管理每個(gè)節(jié)點(diǎn)的任務(wù)執(zhí)行。Hive與Hadoop的關(guān)系01核心組件分布式架構(gòu)數(shù)據(jù)和計(jì)算任務(wù)分布在多個(gè)節(jié)點(diǎn)上運(yùn)行。模塊化設(shè)計(jì)核心組件獨(dú)立運(yùn)行,便于擴(kuò)展和維護(hù)。高容錯(cuò)性通過數(shù)據(jù)冗余和自動(dòng)恢復(fù)機(jī)制來應(yīng)對(duì)硬件故障。批處理特別適合處理靜態(tài)大數(shù)據(jù)集的批量任務(wù)。2)特點(diǎn)Hive與Hadoop的關(guān)系02Hive在Hadoop生態(tài)系統(tǒng)中的定位在Hadoop生態(tài)系統(tǒng)中,Hive提供了數(shù)據(jù)倉庫解決方案。它基于HDFS和MapReduce(或YARN)構(gòu)建,專注于管理和查詢結(jié)構(gòu)化數(shù)據(jù)。Hive的核心價(jià)值在于提供了HiveQL這個(gè)類SQL語言,使用戶能像操作傳統(tǒng)數(shù)據(jù)庫一樣處理大數(shù)據(jù),而無須直接接觸底層的分布式計(jì)算邏輯。作為生態(tài)系統(tǒng)中的一員,Hive特別適合批處理任務(wù),與HBase、Pig等工具互補(bǔ),共同支持多樣化的大數(shù)據(jù)應(yīng)用。Hive通過Metastore管理表的元數(shù)據(jù),如表結(jié)構(gòu)和分區(qū)信息等,確保數(shù)據(jù)組織清晰。它將查詢轉(zhuǎn)換為MapReduce作業(yè),以適應(yīng)大規(guī)模數(shù)據(jù)處理的需求。此外,Hive支持用戶自定義函數(shù)(UDF),讓用戶可以根據(jù)具體場(chǎng)景擴(kuò)展功能。這種設(shè)計(jì)使它在企業(yè)數(shù)據(jù)倉庫和報(bào)表分析中表現(xiàn)出色,操作門檻也大大降低。Hive與Hadoop的關(guān)系02Hive在Hadoop生態(tài)系統(tǒng)中的定位Hive與Hadoop的協(xié)作是一個(gè)從查詢到執(zhí)行的完整過程,依賴Hadoop的核心組件來實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和計(jì)算任務(wù)。Hive本身并不獨(dú)立運(yùn)行,而是通過與HDFS和MapReduce(或YARN)配合,將用戶需求轉(zhuǎn)化為實(shí)際結(jié)果。Hive架構(gòu)與組件01Hive的整體架構(gòu)本地模式(LocalMode):適用于小規(guī)模數(shù)據(jù)集,Hive在本地執(zhí)行查詢,不依賴Hadoop集群。分布式模式(DistributedMode):適用于大規(guī)模數(shù)據(jù)集,Hive依賴Hadoop集群進(jìn)行分布式存儲(chǔ)和計(jì)算。1)Hive的運(yùn)行模式Hive架構(gòu)與組件(1)用戶提交HiveQL查詢(CLI、JDBC/ODBC、WebUI)。(2)解析與優(yōu)化:Hive將SQL解析為邏輯執(zhí)行計(jì)劃,并優(yōu)化查詢結(jié)構(gòu)。(3)查詢轉(zhuǎn)換:優(yōu)化后的邏輯執(zhí)行計(jì)劃被轉(zhuǎn)換為物理執(zhí)行計(jì)劃(MapReduce、Tez、Spark)。(4)資源管理與調(diào)度:YARN負(fù)責(zé)任務(wù)調(diào)度和資源分配。(5)執(zhí)行查詢:查詢?nèi)蝿?wù)在計(jì)算引擎中執(zhí)行,并從HDFS中讀取數(shù)據(jù)。(6)返回結(jié)果:查詢完成后,將數(shù)據(jù)返回給用戶。2)Hive的查詢執(zhí)行流程01Hive的整體架構(gòu)Hive架構(gòu)與組件02Hive的核心組件(1)HiveServer2:提供對(duì)Hive的遠(yuǎn)程訪問,支持多客戶端并發(fā)訪問和身份驗(yàn)證。它是一個(gè)基于Thrift的服務(wù),允許遠(yuǎn)程客戶端使用JDBC或ODBC協(xié)議提交查詢并獲取結(jié)果。(2)HiveCLI:命令行接口,允許用戶直接輸入HiveQL命令與Hive交互。這是最簡(jiǎn)單直接操作Hive的方式。(3)HiveMetastore:元數(shù)據(jù)服務(wù),存儲(chǔ)Hive中所有表的結(jié)構(gòu)信息。(4)HCatalog:表和存儲(chǔ)管理層,使用戶可以更容易地在Hive和MapReduce之間共享數(shù)據(jù)。它提供了一個(gè)統(tǒng)一的元數(shù)據(jù)和表管理接口。Hive架構(gòu)與組件02Hive的核心組件(5)WebHCat(原Templeton):提供RESTAPI接口,允許用戶通過HTTP請(qǐng)求操作Hadoop生態(tài)系統(tǒng)中的Hive和MapReduce作業(yè)。(6)查詢處理器:包括解析器、編譯器、優(yōu)化器和執(zhí)行器。(7)Hive數(shù)據(jù)格式:Hive支持多種數(shù)據(jù)格式,包括TextFile、SequenceFile、RCFile、ORC和Parquet等,每種格式都有其特定的優(yōu)勢(shì)和適用場(chǎng)景。(8)SerDe(序列化和反序列化):負(fù)責(zé)在Hive處理數(shù)據(jù)時(shí)進(jìn)行序列化和反序列化操作,使Hive能夠處理不同格式的數(shù)據(jù)。02搭建Hadoop集群Hadoop集群準(zhǔn)備01集群規(guī)劃1)主機(jī)規(guī)劃Hadoop集群準(zhǔn)備01集群規(guī)劃2)軟件規(guī)劃3)目錄規(guī)劃Hadoop集群準(zhǔn)備02主機(jī)名和IP地址配置1)集群完整的主機(jī)名和IP地址規(guī)劃2)配置主機(jī)名和IP地址映射Hadoop集群準(zhǔn)備02主機(jī)名和IP地址配置3)查看配置文件hostsHadoop集群準(zhǔn)備02主機(jī)名和IP地址配置4)修改主機(jī)名hostname5)查看主機(jī)名hostnameHadoop集群準(zhǔn)備03防火墻配置1)關(guān)閉防火2)關(guān)閉防火墻自啟動(dòng)Hadoop集群準(zhǔn)備03防火墻配置3)查看防火墻狀態(tài)Hadoop集群準(zhǔn)備04SSH免密登錄1)啟動(dòng)SSH服務(wù)并設(shè)置自啟動(dòng)Hadoop集群準(zhǔn)備04SSH免密登錄2)生成SSH密鑰對(duì)3)將每個(gè)節(jié)點(diǎn)的公鑰分發(fā)到所有節(jié)點(diǎn)上Hadoop集群準(zhǔn)備04SSH免密登錄4)測(cè)試免密登錄Hadoop集群準(zhǔn)備05JDK安裝配置1)解壓縮JDK安裝包Hadoop集群準(zhǔn)備05JDK安裝配置2)創(chuàng)建軟鏈接Hadoop集群準(zhǔn)備05JDK安裝配置3)同步到其他節(jié)點(diǎn)Hadoop集群準(zhǔn)備05JDK安裝配置4)配置Java環(huán)境變量Hadoop集群準(zhǔn)備05JDK安裝配置5)驗(yàn)證環(huán)境變量Hadoop集群準(zhǔn)備06更新yum鏡像源Hadoop集群準(zhǔn)備07集群時(shí)間同步Hadoop集群的安裝配置01上傳并解壓縮Hadoop安裝包02配置環(huán)境變量Hadoop集群的安裝配置03創(chuàng)建數(shù)據(jù)目錄Hadoop集群的安裝配置04修改Hadoop配置文件1)修改core-site.xml文件Hadoop集群的安裝配置04修改Hadoop配置文件2)修改hdfs-site.xml文件Hadoop集群的安裝配置04修改Hadoop配置文件3)修改mapred-site.xml文件Hadoop集群的安裝配置04修改Hadoop配置文件4)修改yarn-site.xml文件Hadoop集群的安裝配置04修改Hadoop配置文件5)配置workers文件6)配置hadoop-env.sh文件Hadoop集群的安裝配置05同步Hadoop目錄到其他節(jié)點(diǎn)Hadoop集群的安裝配置06初始化Hadoop集群Hadoop集群的安裝配置07啟動(dòng)Hadoop集群1)啟動(dòng)HDFS服務(wù)Hadoop集群的安裝配置07啟動(dòng)Hadoop集群2)啟動(dòng)YARN服務(wù)Hadoop集群的安裝配置07啟動(dòng)Hadoop集群3)驗(yàn)證服務(wù)(1)HDFSWeb界面(01:9870)。Hadoop集群的安裝配置07啟動(dòng)Hadoop集群4)通過Web界面訪問服務(wù)(2)YARNWeb界面(http://192.168.88.101:8088)。03Hive安裝MySQL安裝配置01MySQL安裝1)檢查系統(tǒng)中是否已有MySQL包MySQL安裝配置01MySQL安裝2)添加MySQL源3)驗(yàn)證MySQL源是否添加成功MySQL安裝配置01MySQL安裝4)安裝MySQL5)啟動(dòng)MySQL服務(wù)6)查看MySQL服務(wù)狀態(tài)MySQL安裝配置02Hive數(shù)據(jù)庫準(zhǔn)備1)首次登錄MySQLMySQL安裝配置02Hive數(shù)據(jù)庫準(zhǔn)備2)設(shè)置root用戶密碼3)重新登錄MySQLMySQL安裝配置02Hive數(shù)據(jù)庫準(zhǔn)備4)創(chuàng)建Hive專用的數(shù)據(jù)庫和用戶5)測(cè)試hive用戶Hive安裝配置01上傳并解壓縮Hive安裝包1)解壓縮Hive安裝包2)創(chuàng)建軟鏈接2)創(chuàng)建軟鏈接Hive安裝配置02配置Hive1)創(chuàng)建hive-site.xml文件Hive安裝配置02配置Hive1)創(chuàng)建hive-site.xml文件Hive安裝配置02配置Hive2)配置hive-env.sh文件Hive安裝配置03Hive環(huán)境變量設(shè)置Hive安裝配置04Hive日志目錄配置1)創(chuàng)建Hive日志目錄2)配置Hive日志屬性Hive與MySQL整合及Hive服務(wù)啟動(dòng)01上傳MySQL驅(qū)動(dòng)Hive與MySQL整合及Hive服務(wù)啟動(dòng)02元數(shù)據(jù)存儲(chǔ)設(shè)置1)解決guava版本沖突問題Hive與MySQL整合及Hive服務(wù)啟動(dòng)02元數(shù)據(jù)存儲(chǔ)設(shè)置2)初始化Hive元數(shù)據(jù)庫SchemaHive與MySQL整合及Hive服務(wù)啟動(dòng)02元數(shù)據(jù)存儲(chǔ)設(shè)置3)檢查MySQL中是否創(chuàng)建了Hive元數(shù)據(jù)庫Hive與MySQL整合及Hive服務(wù)啟動(dòng)03Hive服務(wù)啟動(dòng)與驗(yàn)證1)啟動(dòng)Hive元數(shù)據(jù)服務(wù)Hive與MySQL整合及Hive服務(wù)啟動(dòng)03Hive服務(wù)啟動(dòng)與驗(yàn)證2)啟動(dòng)HiveServer2服務(wù)(1)啟動(dòng)HiveCLI客戶端。Hive與MySQL整合及Hive服務(wù)啟動(dòng)03Hive服務(wù)啟動(dòng)與驗(yàn)證3)驗(yàn)證HiveCLI客戶端(2)在HiveCLI客戶端中執(zhí)行命令以進(jìn)行測(cè)試。Hive與MySQL整合及Hive服務(wù)啟動(dòng)03Hive服務(wù)啟動(dòng)與驗(yàn)證4)驗(yàn)證Beeline客戶端(1)啟動(dòng)Beeline客戶端。(2)連接到HiveServer2服務(wù)。(3)在Beeline客戶端中執(zhí)行命令以進(jìn)行測(cè)試。04HiveQL案例在設(shè)計(jì)數(shù)據(jù)表時(shí),為每個(gè)字段選擇合適的數(shù)據(jù)類型是非常重要的。合理的數(shù)據(jù)類型不僅能夠確保數(shù)據(jù)的正確性,還能優(yōu)化存儲(chǔ)空間并提高查詢效率。Hive支持多種數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,能夠滿足各種數(shù)據(jù)存儲(chǔ)需求。Hive的數(shù)據(jù)類型分為兩大類:基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型?;緮?shù)據(jù)類型包括數(shù)值類型、字符串類型、時(shí)間類型和布爾類型。復(fù)雜數(shù)據(jù)類型包括數(shù)組(ARRAY)、映射(MAP)和結(jié)構(gòu)體(STRUCT)。選擇適當(dāng)?shù)臄?shù)據(jù)類型對(duì)于表設(shè)計(jì)的合理性和查詢效率至關(guān)重要。創(chuàng)建電商用戶信息表01掌握Hive基礎(chǔ)數(shù)據(jù)類型創(chuàng)建電商用戶信息表02創(chuàng)建表1)內(nèi)部表和外部表(1)內(nèi)部表。內(nèi)部表由Hive完全管理表的數(shù)據(jù)和元數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在Hive倉庫目錄中。在刪除表時(shí),表的元數(shù)據(jù)和數(shù)據(jù)都會(huì)被刪除。內(nèi)部表適用于數(shù)據(jù)完全由Hive管理的場(chǎng)景。(2)外部表。對(duì)于外部表,Hive只管理表的元數(shù)據(jù),而數(shù)據(jù)存儲(chǔ)在外部位置。在刪除表時(shí),只刪除表的元數(shù)據(jù),數(shù)據(jù)保留。外部表適用于數(shù)據(jù)需要被多個(gè)工具共享的場(chǎng)景,或者數(shù)據(jù)已經(jīng)存在于HDFS中的場(chǎng)景。創(chuàng)建電商用戶信息表02創(chuàng)建表2)分區(qū)表和分桶表(1)分區(qū)表。分區(qū)表按照指定的分區(qū)字段將數(shù)據(jù)分散存儲(chǔ)在不同的目錄中,在查詢時(shí)可以只掃描特定分區(qū),減少I/O開銷。分區(qū)表適用于數(shù)據(jù)可按某些字段(如日期、地區(qū))自然分割的場(chǎng)景。(2)分桶表。分桶表按照指定字段的哈希值將數(shù)據(jù)分散到固定數(shù)量的桶中,每個(gè)桶都是一個(gè)文件。使用分桶表便于抽樣查詢和提高某些類型的JOIN操作性能。創(chuàng)建電商用戶信息表02創(chuàng)建表3)創(chuàng)建表語法(1)表類型選擇。在選擇表類型時(shí),應(yīng)根據(jù)數(shù)據(jù)的管理需求來決定。(2)命名規(guī)范與注釋。命名規(guī)范與注釋在表設(shè)計(jì)中非常重要。(3)存儲(chǔ)格式選擇。在選擇存儲(chǔ)格式時(shí),需要根據(jù)實(shí)際需求進(jìn)行權(quán)衡。(4)分區(qū)設(shè)計(jì)注意事項(xiàng)。在進(jìn)行分區(qū)設(shè)計(jì)時(shí)需要注意一些細(xì)節(jié)。創(chuàng)建電商用戶信息表02創(chuàng)建表4)表創(chuàng)建示例01020304創(chuàng)建一個(gè)簡(jiǎn)單的內(nèi)部表,用于存儲(chǔ)學(xué)生信息。該表包含4個(gè)字段:學(xué)號(hào)、姓名、年齡和成績(jī)。數(shù)據(jù)以文本文件格式存儲(chǔ),字段之間以逗號(hào)分隔。創(chuàng)建基本內(nèi)部表創(chuàng)建一個(gè)分區(qū)表,用于存儲(chǔ)銷售數(shù)據(jù)。該表按照銷售日期和地區(qū)進(jìn)行分區(qū),便于按時(shí)間或地區(qū)查詢銷售數(shù)據(jù)。創(chuàng)建分區(qū)表創(chuàng)建一個(gè)分桶表,用于存儲(chǔ)用戶行為數(shù)據(jù)。該表按照用戶ID分成4個(gè)桶,有助于用戶級(jí)別的數(shù)據(jù)分析和用戶表的JOIN優(yōu)化。創(chuàng)建分桶表創(chuàng)建一個(gè)外部表,用于管理已經(jīng)存在于HDFS中的日志數(shù)據(jù)。該表包含4個(gè)字段:日志時(shí)間、IP地址、URL和狀態(tài)碼。數(shù)據(jù)以文本文件格式存儲(chǔ),字段之間以制表符分隔。創(chuàng)建外部表創(chuàng)建電商用戶信息表03刪除表與表數(shù)據(jù)在數(shù)據(jù)管理過程中,有時(shí)需要?jiǎng)h除不再使用的表或清空表中的數(shù)據(jù)。Hive提供了DROPTABLE用于刪除表,TRUNCATETABLE用于清空表。理解這些操作的特點(diǎn)和影響對(duì)于數(shù)據(jù)管理非常重要。刪除表和清空表是兩種不同的操作。刪除表(DROPTABLE):移除表的元數(shù)據(jù)和數(shù)據(jù)(對(duì)于內(nèi)部表)。清空表(TRUNCATETABLE):刪除表中的所有數(shù)據(jù),但保留表結(jié)構(gòu)。創(chuàng)建電商用戶信息表04修改表結(jié)構(gòu)在數(shù)據(jù)管理過程中,表結(jié)構(gòu)可能需要根據(jù)業(yè)務(wù)需求變化進(jìn)行調(diào)整。Hive提供了ALTERTABLE,允許對(duì)表進(jìn)行多種修改操作,包括添加列、修改列、修改表屬性等。靈活運(yùn)用這些操作,可以使表結(jié)構(gòu)適應(yīng)不斷變化的業(yè)務(wù)需求。05任務(wù)實(shí)現(xiàn)現(xiàn)在來創(chuàng)建一個(gè)電商用戶信息表,用于存儲(chǔ)電商平臺(tái)用戶的基本信息。該表將作為電商數(shù)據(jù)分析的基礎(chǔ)表,存儲(chǔ)用戶的基本信息、賬戶信息、會(huì)員信息等關(guān)鍵數(shù)據(jù)。導(dǎo)入電商交易數(shù)據(jù)到電商交易表中01導(dǎo)入數(shù)據(jù)Hive提供了多種將數(shù)據(jù)導(dǎo)入表的方式,包括從本地文件系統(tǒng)導(dǎo)入、從HDFS導(dǎo)入、從其他表導(dǎo)入,以及通過INSERT語句插入數(shù)據(jù)。選擇合適的導(dǎo)入方式對(duì)于提高數(shù)據(jù)加載效率和便捷性至關(guān)重要。導(dǎo)入電商交易數(shù)據(jù)到電商交易表中02導(dǎo)出數(shù)據(jù)除了導(dǎo)入數(shù)據(jù),有時(shí)也需要將Hive中的數(shù)據(jù)導(dǎo)出到外部系統(tǒng)或文件中。Hive提供了多種導(dǎo)出數(shù)據(jù)的方式,包括導(dǎo)出到本地文件系統(tǒng)中、導(dǎo)出到HDFS中,以及使用Hive命令行導(dǎo)出。03任務(wù)實(shí)現(xiàn)本任務(wù)的目標(biāo)是創(chuàng)建電商交易表并導(dǎo)入電商交易數(shù)據(jù)。基于前面創(chuàng)建的電商用戶信息表(user_info),設(shè)計(jì)一個(gè)包含訂單信息的電商交易表(order_info),并導(dǎo)入示例交易數(shù)據(jù)。查詢電商交易表空值記錄數(shù)01認(rèn)識(shí)SELECT語句結(jié)構(gòu)SELECT語句是Hive查詢語言(HiveQL)中最基本也是最常用的語句,用于從數(shù)據(jù)表中檢索數(shù)據(jù)。掌握SELECT語句的結(jié)構(gòu)和用法是進(jìn)行數(shù)據(jù)分析的基礎(chǔ)。02了解運(yùn)算符的使用Hive支持多種運(yùn)算符,便于用戶在查詢中進(jìn)行各種條件判斷和值計(jì)算。查詢電商交易表空值記錄數(shù)03使用WHERE子句進(jìn)行條件查詢WHERE子句用于指定查詢條件,篩選滿足特定條件的行。04任務(wù)實(shí)現(xiàn)本任務(wù)的目標(biāo)是查詢電商交易表中的空值記錄數(shù),了解數(shù)據(jù)質(zhì)量狀況。查詢電商交易表字段的最大值和最小值01認(rèn)識(shí)HiveQL內(nèi)置函數(shù)HiveQL內(nèi)置函數(shù)是Hive查詢語言提供的預(yù)定義函數(shù),用于在數(shù)據(jù)查詢和分析過程中執(zhí)行各種操作。這些函數(shù)大大簡(jiǎn)化了復(fù)雜數(shù)據(jù)處理任務(wù),提高了分析效率。Hive提供了豐富多樣的內(nèi)置函數(shù),按照功能可以分為多個(gè)類別。02任務(wù)實(shí)現(xiàn)本任務(wù)的目標(biāo)是查詢之前創(chuàng)建的order_info表中各字段的最大值和最小值,為電商數(shù)據(jù)分析提供基礎(chǔ)信息。統(tǒng)計(jì)注冊(cè)用戶數(shù)最多的會(huì)員等級(jí)01HiveQL高級(jí)查詢技術(shù)02認(rèn)識(shí)HiveQL子查詢GROUPBY和JOIN是SQL中兩個(gè)非常重要的操作,它們作為HiveQL高級(jí)查詢技術(shù)在數(shù)據(jù)分析中經(jīng)常被使用。子查詢是嵌套在另一個(gè)查詢中的查詢語句,可以在SELECT、FROM或WHERE子句中使用。子查詢?yōu)閺?fù)雜數(shù)據(jù)分析提供了強(qiáng)大的功能,能夠基于一個(gè)查詢的結(jié)果進(jìn)行進(jìn)一步的查詢操作。在Hive中,子查詢是處理復(fù)雜分析需求的重要工具。統(tǒng)計(jì)注冊(cè)用戶數(shù)最多的會(huì)員等級(jí)03任務(wù)實(shí)現(xiàn)本任務(wù)的目標(biāo)是統(tǒng)計(jì)注冊(cè)用戶數(shù)最多的會(huì)員等級(jí),需要利用前面學(xué)習(xí)的聚合函數(shù)和子查詢知識(shí)來完成這一任務(wù)。在電商平臺(tái)中,用戶通常被分為不同的會(huì)員等級(jí),如普通會(huì)員、銀卡會(huì)員、金卡會(huì)員等。分析會(huì)員等級(jí)的用戶分布有助于了解用戶群體結(jié)構(gòu),為會(huì)員體系優(yōu)化和營銷策略制定提供數(shù)據(jù)支持。編寫UDF統(tǒng)計(jì)用戶活躍時(shí)長01編寫Hive中的UDFUDF(UserDefinedFunction)是用戶自定義函數(shù)的簡(jiǎn)稱,它允許用戶使用Java、Python等編程語言編寫自定義函數(shù)來處理數(shù)據(jù),從而擴(kuò)展Hive的功能。通過UDF,可以實(shí)現(xiàn)Hive內(nèi)置函數(shù)無法直接完成的復(fù)雜業(yè)務(wù)邏輯,提高數(shù)據(jù)處理的靈活性和效率。編寫UDF統(tǒng)計(jì)用戶活躍時(shí)長02任務(wù)實(shí)現(xiàn)1)需求分析在電商用戶信息表(user_info)中有以下兩個(gè)時(shí)間字段。register_time:用戶注冊(cè)時(shí)間last_login_time:用戶最后登錄時(shí)間我們需要計(jì)算這兩個(gè)時(shí)間之間的天數(shù)差,將其作為用戶的活躍時(shí)長。2)UDF實(shí)現(xiàn)編寫UDF統(tǒng)計(jì)用戶活躍時(shí)長02任務(wù)實(shí)現(xiàn)3)使用UDF進(jìn)行分析編寫UDF統(tǒng)計(jì)用戶活躍時(shí)長02任務(wù)實(shí)現(xiàn)3)使用UDF進(jìn)行分析謝謝觀看“大數(shù)據(jù)存儲(chǔ)技術(shù)列存儲(chǔ)數(shù)據(jù)庫——HBase“大數(shù)據(jù)存儲(chǔ)技術(shù)項(xiàng)目三01HBase概述HBase簡(jiǎn)介01HBase的特點(diǎn)010203高擴(kuò)展性:能夠水平擴(kuò)展,支持海量數(shù)據(jù)存儲(chǔ)。列式存儲(chǔ):按列存儲(chǔ)數(shù)據(jù),優(yōu)化了對(duì)特定列的訪問性能。分布式架構(gòu):基于Hadoop的HDFS,具有分布式、容錯(cuò)性強(qiáng)的特性。HBase簡(jiǎn)介01HBase的特點(diǎn)010203實(shí)時(shí)讀寫:支持低延遲的隨機(jī)讀寫操作。強(qiáng)一致性:通過RowKey提供強(qiáng)一致性保障。高可用性:支持自動(dòng)數(shù)據(jù)分區(qū)和故障轉(zhuǎn)移。03無模式結(jié)構(gòu):支持動(dòng)態(tài)列的添加,靈活存儲(chǔ)不同結(jié)構(gòu)的數(shù)據(jù)。HBase簡(jiǎn)介02RegionServer
RegionServer是HBase的核心服務(wù)組件,直接負(fù)責(zé)存儲(chǔ)表中的行數(shù)據(jù)。它管理分布在其上的多個(gè)Region(數(shù)據(jù)分片),并對(duì)外提供數(shù)據(jù)的讀寫服務(wù)。當(dāng)某個(gè)Region的數(shù)據(jù)量增長到一定程度后,RegionServer會(huì)將其自動(dòng)分裂成兩個(gè)更小的Region,均勻分布數(shù)據(jù)以保持性能。RegionServer的故障恢復(fù)由Master控制。當(dāng)某個(gè)RegionServer故障時(shí),其負(fù)責(zé)的Region會(huì)被Master重新分配到其他可用的RegionServer上。HBase簡(jiǎn)介03MasterMaster負(fù)責(zé)決定Region初始分配的位置,以及在RegionServer故障時(shí)重新分配這些Region。Master維護(hù)和管理HBase的元數(shù)據(jù),包括所有表和Region的狀態(tài)、位置等信息。Master定期監(jiān)控所有RegionServer的健康狀況。如果某個(gè)RegionServer失聯(lián),則Master會(huì)將其標(biāo)記為不可用并啟動(dòng)恢復(fù)過程。表的創(chuàng)建與刪除:Master執(zhí)行表的創(chuàng)建與刪除操作,這些操作涉及元數(shù)據(jù)的更新和相應(yīng)Region的初始化。HBase簡(jiǎn)介04RegionServer和Master的協(xié)作關(guān)系Master和RegionServer之間是一種管理與被管理的關(guān)系。Master不直接參與數(shù)據(jù)的讀寫,而通過協(xié)調(diào)和分配Region來決定數(shù)據(jù)由哪個(gè)RegionServer提供服務(wù)。RegionServer負(fù)責(zé)處理實(shí)際的數(shù)據(jù)存儲(chǔ)和查詢,而Master負(fù)責(zé)全局的協(xié)調(diào)、分配和監(jiān)控,確保整個(gè)集群的平穩(wěn)運(yùn)行。當(dāng)RegionServer故障或負(fù)載不均時(shí),Master將通過調(diào)度和重新分配來恢復(fù)服務(wù)并保持集群平衡。二者的架構(gòu)讓HBase在大規(guī)模分布式環(huán)境下仍能夠提供高可用性和可擴(kuò)展性,同時(shí)保證集群的管理和數(shù)據(jù)服務(wù)之間職責(zé)分明。HBase邏輯數(shù)據(jù)模型HBase邏輯數(shù)據(jù)模型01表(Table)HBase是一種列式存儲(chǔ)的分布式數(shù)據(jù)庫,其核心概念是表。每個(gè)表都由若干行數(shù)據(jù)構(gòu)成,每行數(shù)據(jù)都由唯一的行鍵標(biāo)識(shí)。表中的數(shù)據(jù)按照列族組織,列族包含若干列。表可以包含多個(gè)列族,每個(gè)列族的數(shù)據(jù)都是物理存儲(chǔ)在一起的。HBase表的結(jié)構(gòu)是動(dòng)態(tài)的,列族和列可以在表創(chuàng)建后隨時(shí)擴(kuò)展。表的設(shè)計(jì)主要圍繞列族進(jìn)行,列族決定了數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和訪問模式。表3-1中的數(shù)據(jù)展示了一個(gè)名為個(gè)人信息的表,包含列族(個(gè)人信息)和其中的多個(gè)列(姓名、城市、年齡)。HBase邏輯數(shù)據(jù)模型02行鍵(RowKey)行鍵是每行數(shù)據(jù)的唯一標(biāo)識(shí)符。在HBase中,數(shù)據(jù)是按行鍵進(jìn)行存儲(chǔ)和檢索的。所有數(shù)據(jù)的存儲(chǔ)都是基于行鍵排序的。行鍵的順序決定了數(shù)據(jù)在磁盤上的存儲(chǔ)順序。當(dāng)查詢某行數(shù)據(jù)時(shí),HBase會(huì)根據(jù)行鍵高效地定位到相應(yīng)的數(shù)據(jù)位置。在表3-1中,row_key1~row_key4分別是相應(yīng)行數(shù)據(jù)的唯一標(biāo)識(shí)符。在HBase中,為了優(yōu)化數(shù)據(jù)檢索性能,設(shè)計(jì)一個(gè)合理的行鍵非常重要。首先,應(yīng)避免行鍵的長度過長,過長的行鍵會(huì)占用更多的存儲(chǔ)空間,并可能降低查詢效率。其次,為了防止熱點(diǎn)問題(大量請(qǐng)求集中到少數(shù)節(jié)點(diǎn),導(dǎo)致節(jié)點(diǎn)負(fù)載過高),行鍵的設(shè)計(jì)應(yīng)確保數(shù)據(jù)的分布盡可能均勻。這樣可以使數(shù)據(jù)均勻地分布在不同的RegionServer上,避免某些節(jié)點(diǎn)超負(fù)荷工作。此外,行鍵必須具有唯一性,以確保每行數(shù)據(jù)的準(zhǔn)確標(biāo)識(shí)。HBase邏輯數(shù)據(jù)模型03列族(ColumnFamily)列族是HBase中用于組織列的邏輯單元。每個(gè)列族都包含一組列,并且列族中的所有列在物理存儲(chǔ)時(shí)會(huì)存儲(chǔ)在一起。這種按列族存儲(chǔ)的方式有助于優(yōu)化數(shù)據(jù)訪問。每個(gè)列族的數(shù)據(jù)在物理存儲(chǔ)中均被壓縮存儲(chǔ),可以獨(dú)立進(jìn)行存儲(chǔ)優(yōu)化。列族一旦定義,列族名就無法再修改,而列族下的列可以動(dòng)態(tài)增加。在表3-1中,個(gè)人信息是列族名,個(gè)人信息列族包含姓名、城市、年齡這3列。04列(Column)在HBase中,列是由列族和列名組合而成的。每列都包含一個(gè)數(shù)據(jù)單元,數(shù)據(jù)單元存儲(chǔ)在列族下。列可以動(dòng)態(tài)創(chuàng)建,并不需要在創(chuàng)建表時(shí)預(yù)定義。列的設(shè)計(jì)靈活,可以隨時(shí)添加新的列,每列數(shù)據(jù)都被存儲(chǔ)在對(duì)應(yīng)的列族中。在表3-1中,姓名、城市、年齡是列名。HBase邏輯數(shù)據(jù)模型05時(shí)間戳(TimeStamp)時(shí)間戳是HBase中用于區(qū)分同一列中不同版本數(shù)據(jù)的標(biāo)識(shí)符。每當(dāng)某個(gè)數(shù)據(jù)單元更新時(shí),HBase都會(huì)為其分配一個(gè)新的時(shí)間戳,從而區(qū)分不同的版本。時(shí)間戳支持多版本存儲(chǔ),使HBase能夠保留每個(gè)數(shù)據(jù)單元的歷史記錄,讓用戶可以選擇獲取最新的數(shù)據(jù)或獲取特定時(shí)間戳的數(shù)據(jù)。在表3-1中,t1、t2、t3、t4就是時(shí)間戳。HBase邏輯數(shù)據(jù)模型06單元格(Cell)單元格是HBase中數(shù)據(jù)存儲(chǔ)的最小單位。每個(gè)單元格都由行鍵+時(shí)間戳+列族+列名唯一標(biāo)識(shí),并存儲(chǔ)具體的數(shù)據(jù)值。每個(gè)單元格都可以存儲(chǔ)一個(gè)數(shù)據(jù)值,并且可以存儲(chǔ)多個(gè)版本的值。版本通過時(shí)間戳區(qū)分,使HBase能夠提供歷史數(shù)據(jù)的存儲(chǔ)和查詢功能。例如,在表3-1中,RowKey=row_key1,TimeStamp=t1,列族=個(gè)人信息,列名=姓名,數(shù)據(jù)值為張三,那么這個(gè)數(shù)據(jù)就表示row_key1行、個(gè)人信息:姓名列、TimeStamp為t1的單元格值為張三。HBase物理數(shù)據(jù)模型HBase物理數(shù)據(jù)模型02搭建HBase集群HBase集群規(guī)劃01主機(jī)規(guī)劃02軟件規(guī)劃HBase集群規(guī)劃03目錄規(guī)劃在安裝前,需要對(duì)軟件安裝目錄和對(duì)應(yīng)的數(shù)據(jù)存放目錄進(jìn)行規(guī)劃,當(dāng)有升級(jí)需求時(shí)便于維護(hù)升級(jí),目錄規(guī)劃如表3-5所示。HBase的數(shù)據(jù)文件存儲(chǔ)在hdfs://node1:9000/hbase中,HBase的日志目錄默認(rèn)在HBase安裝目錄下的logs子目錄中自動(dòng)創(chuàng)建。HBase集群規(guī)劃在著手安裝HBase之前,要先部署它的關(guān)鍵依賴ZooKeeper。HBase利用ZooKeeper來完成分布式系統(tǒng)中的協(xié)調(diào)任務(wù),如Master節(jié)點(diǎn)的選舉、RegionServer狀態(tài)的監(jiān)控及元數(shù)據(jù)的管理,可以說ZooKeeper是HBase正常運(yùn)行的“神經(jīng)中樞”。因此,合理的步驟是先安裝ZooKeeper,確保它啟動(dòng)無誤后,再開始安裝HBase。HBase集群規(guī)劃01上傳并解壓縮HBase安裝包使用FinalShell的上傳功能將HBase安裝包上傳到node1的/export/server/目錄中。02配置HBaseHBase的配置文件決定了其運(yùn)行方式、存儲(chǔ)位置,以及與其他組件的交互方式。我們需要修改這些配置文件,使HBase能夠正確連接到Hadoop集群和ZooKeeper。HBase集群規(guī)劃03HBase環(huán)境變量設(shè)置為了方便在系統(tǒng)任何位置執(zhí)行HBase命令,需要將HBase的bin目錄添加到系統(tǒng)PATH環(huán)境變量中。04分發(fā)HBase到其他節(jié)點(diǎn)為了在集群中部署HBase,需要將配置好的HBase復(fù)制到其他節(jié)點(diǎn)上。HBase啟動(dòng)HBase依賴ZooKeeper和Hadoop的正常運(yùn)行,因此在啟動(dòng)HBase之前,需要確保這些服務(wù)已經(jīng)啟動(dòng)并處于正常工作狀態(tài)。03HBase案例設(shè)計(jì)與創(chuàng)建學(xué)生信息表01設(shè)計(jì)表結(jié)構(gòu)的原則1)RowKey設(shè)計(jì)(1)唯一性保證。RowKey必須具備唯一性,這是確保數(shù)據(jù)正確存儲(chǔ)的基礎(chǔ)。在實(shí)際應(yīng)用中,可以通過組合多個(gè)維度的信息或引入唯一標(biāo)識(shí)符來實(shí)現(xiàn)。例如,可以采用“任務(wù)標(biāo)識(shí)_時(shí)間戳_序列號(hào)”的組合形式。(2)長度控制。RowKey的長度需要合理控制,通常保持在10~100字節(jié)之間。過長的RowKey會(huì)增加存儲(chǔ)開銷,因?yàn)镽owKey會(huì)隨數(shù)據(jù)多次存儲(chǔ),同時(shí)會(huì)降低網(wǎng)絡(luò)傳輸效率,還會(huì)影響內(nèi)存利用率。設(shè)計(jì)與創(chuàng)建學(xué)生信息表01設(shè)計(jì)表結(jié)構(gòu)的原則1)RowKey設(shè)計(jì)(3)散列均衡。為了避免數(shù)據(jù)訪問熱點(diǎn)問題,RowKey的設(shè)計(jì)應(yīng)確保數(shù)據(jù)均勻分布。常用的散列策略如下。加鹽處理:在RowKey前添加隨機(jī)字符。哈希散列:對(duì)原始鍵值進(jìn)行哈希處理。反轉(zhuǎn)處理:將可能導(dǎo)致熱點(diǎn)的部分進(jìn)行反轉(zhuǎn)。設(shè)計(jì)與創(chuàng)建學(xué)生信息表01設(shè)計(jì)表結(jié)構(gòu)的原則2)列族設(shè)計(jì)(1)列族數(shù)量。在HBase中,每個(gè)列族在物理存儲(chǔ)上都單獨(dú)存放,并且列族數(shù)量過多會(huì)增加文件系統(tǒng)開銷,影響Flush和Compaction操作的效率,所以建議將列族數(shù)量控制在1~3個(gè)。(2)數(shù)據(jù)分組。列族的劃分應(yīng)基于數(shù)據(jù)訪問特征,需要注意以下幾點(diǎn)。訪問頻率:將訪問頻率相近的列放在同一列族中。數(shù)據(jù)生命周期:具有相同生命周期的數(shù)據(jù)適合放在一起。數(shù)據(jù)大?。嚎紤]將大小相近的數(shù)據(jù)分為一組。設(shè)計(jì)與創(chuàng)建學(xué)生信息表01設(shè)計(jì)表結(jié)構(gòu)的原則3)性能優(yōu)化(1)預(yù)分區(qū)設(shè)計(jì)。合理的預(yù)分區(qū)可以提前規(guī)劃數(shù)據(jù)分布,避免數(shù)據(jù)傾斜。根據(jù)RowKey的分布特征設(shè)計(jì)分區(qū)點(diǎn)??紤]業(yè)務(wù)增長,預(yù)留足夠的空間。單個(gè)Region的大小建議控制在10GB~50GB。(2)緩存利用。充分利用HBase的緩存機(jī)制。BlockCache:用于緩存頻繁訪問的數(shù)據(jù)塊。BucketCache:對(duì)大數(shù)據(jù)集的緩存提供支持。自定義緩存策略:根據(jù)業(yè)務(wù)特點(diǎn)優(yōu)化緩存。設(shè)計(jì)與創(chuàng)建學(xué)生信息表02創(chuàng)建表和刪除表1)創(chuàng)建表在HBase中,表的創(chuàng)建主要通過HBaseShell來完成。HBaseShell是一個(gè)基于JRuby的交互式命令行工具,它提供了豐富的命令來管理HBase數(shù)據(jù)庫。在創(chuàng)建表時(shí),還可以為表和列族設(shè)置各種屬性來優(yōu)化性能與存儲(chǔ)。例如,可以通過預(yù)分區(qū)來避免數(shù)據(jù)熱點(diǎn)問題;可以通過數(shù)據(jù)壓縮來減少存儲(chǔ)空間;可以啟用布隆過濾器來提高讀取性能;還可以設(shè)置數(shù)據(jù)的生存時(shí)間(TTL)來自動(dòng)清理過期數(shù)據(jù)。這些高級(jí)選項(xiàng)使HBase能夠更好地適應(yīng)不同的業(yè)務(wù)場(chǎng)景和性能需求。在表的設(shè)計(jì)階段,應(yīng)當(dāng)特別注意行鍵的設(shè)計(jì)和列族的劃分。良好的行鍵設(shè)計(jì)應(yīng)避免熱點(diǎn)問題,確保數(shù)據(jù)均勻分布;而列族的劃分則應(yīng)將相關(guān)性強(qiáng)的數(shù)據(jù)放在同一列族中,以提高讀取效率。這些設(shè)計(jì)決策將直接影響HBase的性能和可擴(kuò)展性。設(shè)計(jì)與創(chuàng)建學(xué)生信息表02創(chuàng)建表和刪除表2)刪除表在HBase中,刪除表是一個(gè)兩步操作:首先需要禁用表,然后才能刪除它。這種設(shè)計(jì)是為了防止因誤操作導(dǎo)致數(shù)據(jù)丟失。這兩條命令表示先禁用student表,再將其從HBase中永久刪除。需要注意的是,表一旦被刪除,其中的所有數(shù)據(jù)就都將丟失,無法恢復(fù),因此在執(zhí)行刪除操作前應(yīng)當(dāng)確認(rèn)數(shù)據(jù)已經(jīng)不再需要或已經(jīng)備份。在實(shí)際生產(chǎn)環(huán)境中,還可以使用更多參數(shù)來控制刪除操作,如使用drop_all命令可以同時(shí)刪除多個(gè)表,或者使用snapshot命令可以在刪除表前創(chuàng)建表的快照。這些功能使HBase的數(shù)據(jù)管理更加靈活和安全。設(shè)計(jì)與創(chuàng)建學(xué)生信息表03任務(wù)實(shí)現(xiàn)1)需求分析在設(shè)計(jì)學(xué)生信息表之前,需要明確表的用途和數(shù)據(jù)特點(diǎn)。這個(gè)表將用于存儲(chǔ)學(xué)生的基本信息、各科成績(jī)、聯(lián)系方式等數(shù)據(jù),并且需要滿足高效查詢單個(gè)學(xué)生信息的需求。同時(shí),表結(jié)構(gòu)應(yīng)該簡(jiǎn)潔明了,以便后續(xù)各種操作示例的演示。經(jīng)過分析,確定表需要包含學(xué)生的基本信息、各科成績(jī)和聯(lián)系方式這3類主要數(shù)據(jù)。這些數(shù)據(jù)具有不同的特點(diǎn)和訪問模式,因此適合分別存儲(chǔ)在不同的列族中。設(shè)計(jì)與創(chuàng)建學(xué)生信息表03任務(wù)實(shí)現(xiàn)2)表結(jié)構(gòu)設(shè)計(jì)(1)表名:student。(2)行鍵:使用學(xué)號(hào)作為行鍵,因?yàn)閷W(xué)號(hào)是學(xué)生的唯一標(biāo)識(shí),便于直接通過學(xué)號(hào)來查詢學(xué)生信息。(3)列族。info:存儲(chǔ)學(xué)生的基本信息,如姓名、性別、年齡等。score:存儲(chǔ)學(xué)生的各科成績(jī),如數(shù)學(xué)、英語、物理等科目的分?jǐn)?shù)。contact:存儲(chǔ)學(xué)生的聯(lián)系方式,如電話號(hào)碼、電子郵箱等。這種設(shè)計(jì)將相關(guān)性強(qiáng)的數(shù)據(jù)歸類到同一列族中,既符合HBase的操作,又便于后續(xù)的數(shù)據(jù)管理和查詢操作。設(shè)計(jì)與創(chuàng)建學(xué)生信息表03任務(wù)實(shí)現(xiàn)3)創(chuàng)建學(xué)生信息表(1)打開終端并啟動(dòng)HBaseShell。(2)創(chuàng)建表。(3)驗(yàn)證表的創(chuàng)建。學(xué)生信息數(shù)據(jù)的基本操作01添加學(xué)生數(shù)據(jù)1)添加語法在HBase中,數(shù)據(jù)的添加過程非常靈活,可以一次添加一列數(shù)據(jù),也可以通過多次執(zhí)行put命令為同一行添加多個(gè)列的數(shù)據(jù)。每次添加都是原子性的,這意味著每個(gè)單獨(dú)的put命令要么完全成功,要么完全失敗。在添加數(shù)據(jù)時(shí)需要注意幾個(gè)方面。首先,行鍵一旦確定就不能更改了,所以在設(shè)計(jì)行鍵時(shí)要考慮未來可能遇見的查詢和訪問模式。其次,列名在HBase中是動(dòng)態(tài)的,可以在添加數(shù)據(jù)時(shí)即時(shí)創(chuàng)建,無須提前定義。最后,HBase會(huì)存儲(chǔ)數(shù)據(jù)的多個(gè)版本,默認(rèn)情況下以時(shí)間戳區(qū)分,可以追蹤數(shù)據(jù)的歷史變化。學(xué)生信息數(shù)據(jù)的基本操作01添加學(xué)生數(shù)據(jù)2)示例這條命令的含義是向名為“student”的表中添加一條數(shù)據(jù),行鍵為“1001”,列族為“info”,列名為“name”,值為“張三”。執(zhí)行此命令后,表中就會(huì)創(chuàng)建數(shù)據(jù)或更新相應(yīng)位置的數(shù)據(jù)。如果該行鍵已經(jīng)存在,那么這個(gè)操作會(huì)更新現(xiàn)有數(shù)據(jù);如果不存在,則會(huì)創(chuàng)建新的行。接著,可以繼續(xù)為同一個(gè)學(xué)生添加更多信息,示例命令如下:學(xué)生信息數(shù)據(jù)的基本操作02查詢學(xué)生數(shù)據(jù)1)查詢語法最基本的查詢命令是get,它允許用戶根據(jù)行鍵獲取單行數(shù)據(jù)。scan命令非常強(qiáng)大,它支持多種參數(shù)來控制掃描的范圍和返回的數(shù)據(jù)。例如,它可以指定起始行和結(jié)束行,限制返回的列,設(shè)置最大版本數(shù),甚至可以應(yīng)用自定義的過濾器來精確篩選數(shù)據(jù)。在實(shí)際應(yīng)用中,查詢效率與行鍵設(shè)計(jì)密切相關(guān)。良好的行鍵設(shè)計(jì)應(yīng)確保常見查詢可以通過直接獲取單行數(shù)據(jù)或掃描連續(xù)的行范圍高效完成。對(duì)于復(fù)雜的查詢需求,行鍵設(shè)計(jì)可能需要結(jié)合過濾器或二級(jí)索引技術(shù)來提高性能。學(xué)生信息數(shù)據(jù)的基本操作02查詢學(xué)生數(shù)據(jù)2)示例使用get命令查詢單個(gè)學(xué)生的數(shù)據(jù),示例命令如下:如果只想查詢學(xué)生的某一部分?jǐn)?shù)據(jù),如學(xué)生的各科成績(jī),示例命令如下:這條命令只返回score列族中的數(shù)據(jù),使查詢結(jié)果更加精確和簡(jiǎn)潔。學(xué)生信息數(shù)據(jù)的基本操作03刪除學(xué)生數(shù)據(jù)在數(shù)據(jù)管理過程中,有時(shí)需要?jiǎng)h除不再需要的數(shù)據(jù)。HBase提供了多種級(jí)別的刪除操作,從刪除單列數(shù)據(jù)到刪除整行數(shù)據(jù)都有對(duì)應(yīng)的命令?;谇耙还?jié)創(chuàng)建的學(xué)生信息表,現(xiàn)在來實(shí)際操作這個(gè)表,進(jìn)行添加、查詢和刪除學(xué)生數(shù)據(jù)的操作,以鞏固所學(xué)知識(shí)。04任務(wù)實(shí)現(xiàn)使用JavaAPI操作學(xué)生信息表01準(zhǔn)備環(huán)境并編寫JavaAPI代碼連接HBase1)確認(rèn)HBase的安裝和啟動(dòng)在開始使用JavaAPI操作HBase之前,需要確保HBase服務(wù)已經(jīng)正常啟動(dòng)并運(yùn)行。2)檢查Java環(huán)境并設(shè)置HBase類路徑(1)檢查Java版本。(2)設(shè)置HBase類路徑。(3)創(chuàng)建工作目錄。使用JavaAPI操作學(xué)生信息表01準(zhǔn)備環(huán)境并編寫JavaAPI代碼連接HBase3)創(chuàng)建簡(jiǎn)單的Java文件創(chuàng)建一個(gè)簡(jiǎn)單的Java程序來測(cè)試與HBase的連接。這個(gè)程序?qū)⒘谐鯤Base中所有表的名稱。4)通過終端編譯和運(yùn)行連接HBase使用之前設(shè)置的類路徑來編譯并運(yùn)行HBaseConnectionTest.java。使用JavaAPI操作學(xué)生信息表02使用JavaAPI操作學(xué)生信息表1)創(chuàng)建學(xué)生信息表編寫一個(gè)Java程序,用于創(chuàng)建學(xué)生信息表。這個(gè)表包含3個(gè)列族:info(基本信息)、score(成績(jī)信息)和contact(聯(lián)系方式)。使用JavaAPI操作學(xué)生信息表02使用JavaAPI操作學(xué)生信息表2)向?qū)W生信息表中添加數(shù)據(jù)編寫程序,向?qū)W生信息表中添加兩名學(xué)生的基本信息、成績(jī)信息和聯(lián)系方式。使用JavaAPI操作學(xué)生信息表02使用JavaAPI操作學(xué)生信息表3)查詢學(xué)生信息表中的數(shù)據(jù)使用JavaAPI操作學(xué)生信息表02使用JavaAPI操作學(xué)生信息表4)修改學(xué)生信息表中的數(shù)據(jù)使用JavaAPI操作學(xué)生信息表02使用JavaAPI操作學(xué)生信息表5)刪除學(xué)生信息表中的數(shù)據(jù)使用JavaAPI操作學(xué)生信息表03任務(wù)實(shí)現(xiàn)1)創(chuàng)建簡(jiǎn)易學(xué)生信息系統(tǒng)使用JavaAPI操作學(xué)生信息表03任務(wù)實(shí)現(xiàn)1)創(chuàng)建簡(jiǎn)易學(xué)生信息系統(tǒng)使用JavaAPI操作學(xué)生信息表03任務(wù)實(shí)現(xiàn)2)編譯和運(yùn)行使用JavaAPI操作學(xué)生信息表03任務(wù)實(shí)現(xiàn)3)系統(tǒng)功能說明添加學(xué)生信息(選項(xiàng)1)輸入學(xué)號(hào)、姓名、性別、年齡和三科成績(jī),系統(tǒng)將這些信息添加到HBase的student_simple表中。查詢所有學(xué)生(選項(xiàng)3)系統(tǒng)將顯示所有學(xué)生的完整信息列表。查詢單個(gè)學(xué)生(選項(xiàng)2)輸入學(xué)號(hào)后,系統(tǒng)將顯示該學(xué)號(hào)對(duì)應(yīng)的學(xué)生的所有信息。退出系統(tǒng)(選項(xiàng)4)結(jié)束程序運(yùn)行。謝謝觀看“大數(shù)據(jù)存儲(chǔ)技術(shù)文檔存儲(chǔ)數(shù)據(jù)庫——MongoDB“大數(shù)據(jù)存儲(chǔ)技術(shù)項(xiàng)目四01MongoDB概述MongoDB簡(jiǎn)介MongoDB是一個(gè)開源的、分布式的、面向文檔的NoSQL數(shù)據(jù)庫,由C++編寫,旨在為Web應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案MongoDB將數(shù)據(jù)存儲(chǔ)為JSON風(fēng)格的文檔,字段可以隨時(shí)變化,這種靈活的數(shù)據(jù)模型使MongoDB能夠存儲(chǔ)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),特別適合處理大量快速變化的數(shù)據(jù)和敏捷開發(fā)環(huán)境。作為一種流行的NoSQL數(shù)據(jù)庫,MongoDB突破了傳統(tǒng)關(guān)系型數(shù)據(jù)庫的限制,提供了更加靈活的數(shù)據(jù)存儲(chǔ)方式和更強(qiáng)大的擴(kuò)展能力。MongoDB簡(jiǎn)介01MongoDB的定義MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫,由10gen團(tuán)隊(duì)(現(xiàn)更名為MongoDBInc.)于2007年開發(fā)。其名稱源于英文單詞“humongous”,意為“巨大的”,暗示了它具備處理海量數(shù)據(jù)的能力。MongoDB屬于文檔型數(shù)據(jù)庫,它以BSON(BinaryJSON)格式存儲(chǔ)數(shù)據(jù),提供了高性能、高可用性和自動(dòng)擴(kuò)展的特性。MongoDB設(shè)計(jì)的核心理念是為現(xiàn)代應(yīng)用開發(fā)提供一個(gè)既能處理結(jié)構(gòu)化數(shù)據(jù),又能靈活應(yīng)對(duì)不斷變化的數(shù)據(jù)模式的數(shù)據(jù)庫系統(tǒng)。它打破了傳統(tǒng)關(guān)系型數(shù)據(jù)庫的表格結(jié)構(gòu),采用更為靈活的文檔模型,使開發(fā)人員能夠以更自然的方式表達(dá)和管理數(shù)據(jù)。MongoDB簡(jiǎn)介02MongoDB的特點(diǎn)01020304數(shù)據(jù)以類JSON文檔形式存儲(chǔ),結(jié)構(gòu)靈活,字段可變,非常適合面向?qū)ο蟮木幊?。文檔模型通過副本集機(jī)制提供數(shù)據(jù)冗余和自動(dòng)故障轉(zhuǎn)移功能,確保服務(wù)持續(xù)可用。高可用性支持索引,能夠進(jìn)行快速的數(shù)據(jù)查詢;支持內(nèi)存映射技術(shù),提高I/O效率。高性能通過分片功能,可以將數(shù)據(jù)分布在多臺(tái)機(jī)器上,支持海量數(shù)據(jù)存儲(chǔ)和高吞吐量操作。水平擴(kuò)展性MongoDB簡(jiǎn)介02MongoDB的特點(diǎn)05060708支持各種復(fù)雜的查詢操作,包括聚合、文本搜索和地理空間查詢。豐富的查詢語言通過分片自動(dòng)平衡數(shù)據(jù),優(yōu)化數(shù)據(jù)分布,提高集群性能。自動(dòng)分片不需要預(yù)定義數(shù)據(jù)結(jié)構(gòu),可以動(dòng)態(tài)添加新字段,實(shí)現(xiàn)快速迭代開發(fā)。無模式設(shè)計(jì)包括默認(rèn)的WiredTiger和可選的內(nèi)存存儲(chǔ)引擎,可根據(jù)應(yīng)用需求選擇合適的存儲(chǔ)方式。支持多種存儲(chǔ)引擎MongoDB簡(jiǎn)介03MongoDB的應(yīng)用場(chǎng)景01020304能夠高效處理TB甚至PB級(jí)別的數(shù)據(jù),適合日志存儲(chǔ)、實(shí)時(shí)分析等大數(shù)據(jù)應(yīng)用場(chǎng)景。大數(shù)據(jù)應(yīng)用支持快速迭代開發(fā),能夠輕松適應(yīng)移動(dòng)應(yīng)用頻繁變化的數(shù)據(jù)需求。移動(dòng)應(yīng)用能夠高效存儲(chǔ)和處理用戶資料、關(guān)系網(wǎng)絡(luò)、內(nèi)容流等復(fù)雜數(shù)據(jù)結(jié)構(gòu)。社交網(wǎng)絡(luò)靈活的文檔模型非常適合存儲(chǔ)各種類型的內(nèi)容和元數(shù)據(jù)。內(nèi)容管理系統(tǒng)MongoDB簡(jiǎn)介03MongoDB的應(yīng)用場(chǎng)景05060708可以處理來自各種設(shè)備的海量數(shù)據(jù),支持實(shí)時(shí)數(shù)據(jù)收集和分析。物聯(lián)網(wǎng)應(yīng)用高性能的讀寫能力使其成為應(yīng)用緩存的良好選擇。緩存層應(yīng)用內(nèi)置地理空間索引和查詢功能,適合基于位置的服務(wù)和應(yīng)用。地理空間應(yīng)用內(nèi)置的聚合框架和MapReduce功能支持復(fù)雜的數(shù)據(jù)分析操作。實(shí)時(shí)分析MongoDB的數(shù)據(jù)模型01文檔與集合1)文檔(Document)MongoDB的數(shù)據(jù)模型01文檔與集合2)集合(Collection)一個(gè)集合內(nèi)可以存儲(chǔ)多個(gè)文檔,這些文檔可以有不同的字段和結(jié)構(gòu)。MongoDB的集合不要求所有文檔都遵循相同的模式,這種“無模式”的特性使開發(fā)更加靈活和快速。集合通常按照功能或數(shù)據(jù)類型進(jìn)行組織,如一個(gè)博客系統(tǒng)可能包含users、posts、comments等集合。集合的名稱需遵循一定的命名規(guī)則,通常使用小寫字母和下畫線命名。MongoDB的數(shù)據(jù)模型01文檔與集合3)數(shù)據(jù)庫(Database)數(shù)據(jù)庫是集合的容器,一個(gè)MongoDB實(shí)例可以托管多個(gè)數(shù)據(jù)庫。每個(gè)數(shù)據(jù)庫都擁有自己的文件,并且在邏輯上彼此獨(dú)立。數(shù)據(jù)庫也有命名規(guī)則,通常使用小寫字母命名。MongoDB中常見的系統(tǒng)數(shù)據(jù)庫包括admin、local和config,這些數(shù)據(jù)庫用于存儲(chǔ)系統(tǒng)配置和管理信息。MongoDB采用了一種層次化的數(shù)據(jù)組織方式,主要由3個(gè)層次組成,從大到小依次如下。數(shù)據(jù)庫:最高級(jí)別的存儲(chǔ)單位。集合:數(shù)據(jù)庫中的“表”。文檔:集合中的“行”或記錄。MongoDB的數(shù)據(jù)模型02BSON格式1)BSON的特點(diǎn)010203輕量級(jí):和JSON一樣,BSON是輕量級(jí)的數(shù)據(jù)交換格式。遍歷效率高:BSON在設(shè)計(jì)時(shí)考慮了遍歷速度,在某些情況下它比標(biāo)準(zhǔn)JSON更快。更多的數(shù)據(jù)類型:除了JSON支持的基本類型,BSON還支持日期、二進(jìn)制數(shù)據(jù)、正則表達(dá)式等類型。03字段順序敏感:BSON保留了字段的原始順序,這在某些應(yīng)用中非常重要。MongoDB的數(shù)據(jù)模型02BSON格式2)BSON支持的數(shù)據(jù)類型MongoDB的數(shù)據(jù)模型02BSON格式2)BSON支持的數(shù)據(jù)類型MongoDB的數(shù)據(jù)模型03文檔數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫比較1)數(shù)據(jù)模型MongoDB采用靈活的文檔模型,文檔可以包含不同的字段,支持嵌套文檔和數(shù)組。關(guān)系型數(shù)據(jù)庫采用嚴(yán)格的表結(jié)構(gòu),要求預(yù)先定義表的結(jié)構(gòu),所有記錄必須符合相同的模式。2)查詢語言MongoDB使用類似JavaScript的查詢語言,通過JSON風(fēng)格的查詢條件進(jìn)行數(shù)據(jù)操作。關(guān)系型數(shù)據(jù)庫使用SQL(結(jié)構(gòu)化查詢語言),通過SELECT、UPDATE、DELETE等標(biāo)準(zhǔn)語句操作數(shù)據(jù)。MongoDB的數(shù)據(jù)模型03文檔數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫比較3)事務(wù)支持MongoDB在4.0版本之前僅支持單文檔事務(wù),4.0版本之后支持多文檔事務(wù),但功能相對(duì)簡(jiǎn)單。關(guān)系型數(shù)據(jù)庫提供了完善的ACID事務(wù)支持,可以確保復(fù)雜操作的原子性、一致性、隔離性和持久性。4)擴(kuò)展方式MongoDB通過水平擴(kuò)展(分片)實(shí)現(xiàn)擴(kuò)展,可以輕松添加更多服務(wù)器來處理更大的數(shù)據(jù)量。關(guān)系型數(shù)據(jù)庫在傳統(tǒng)上主要通過垂直擴(kuò)展(增加單機(jī)硬件資源)實(shí)現(xiàn)擴(kuò)展,水平擴(kuò)展相對(duì)復(fù)雜。MongoDB的數(shù)據(jù)模型03文檔數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫比較5)索引支持MongoDB支持多種類型的索引,包括單字段、復(fù)合字段、多鍵、地理空間和文本索引等。關(guān)系型數(shù)據(jù)庫同樣支持豐富的索引類型,但其索引實(shí)現(xiàn)和優(yōu)化方式與MongoDB的不同。6)數(shù)據(jù)關(guān)系處理MongoDB通過嵌入式文檔或引用(類似于外鍵)來處理數(shù)據(jù)關(guān)系,但不支持JOIN操作,需要在應(yīng)用層實(shí)現(xiàn)關(guān)聯(lián)。關(guān)系型數(shù)據(jù)庫通過外鍵和JOIN操作來維護(hù)與查詢表之間的關(guān)系,能夠強(qiáng)制保證參照完整性。02安裝分布式MongoDB安裝與配置MongoDB01上傳并解壓縮MongoDB安裝包1)解壓縮MongoDB安裝包2)創(chuàng)建軟鏈接安裝與配置MongoDB01上傳并解壓縮MongoDB安裝包3)創(chuàng)建數(shù)據(jù)和日志目錄4)設(shè)置目錄權(quán)限安裝與配置MongoDB02MongoDB環(huán)境變量設(shè)置安裝與配置MongoDB03配置MongoDB1)創(chuàng)建配置文件目錄2)創(chuàng)建主節(jié)點(diǎn)配置文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省南昌市2025-2026學(xué)年上學(xué)期期末八年級(jí)數(shù)學(xué)試卷(含答案)
- 文綜試卷及答案
- 微積分試題及答案
- 地產(chǎn)委托物業(yè)前期介入相關(guān)工作作業(yè)指導(dǎo)書
- 腹腔鏡培訓(xùn)班理論考試試題
- 達(dá)人介紹教學(xué)
- 一年級(jí)數(shù)學(xué)上冊(cè)期中試卷及答案真題(三套)
- 解析卷-滬粵版八年級(jí)物理上冊(cè)第四章物質(zhì)的形態(tài)及其變化章節(jié)測(cè)評(píng)試卷(含答案詳解版)
- 大壩混凝土施工技術(shù)操作要領(lǐng)
- 2026屆北京市石景山區(qū)高三上學(xué)期期末考試歷史試題(含答案)
- DB50∕T 1604-2024 地質(zhì)災(zāi)害防治邊坡工程結(jié)構(gòu)可靠性設(shè)計(jì)規(guī)范
- 非現(xiàn)場(chǎng)執(zhí)法培訓(xùn)課件
- 中國電氣裝備資產(chǎn)管理有限公司招聘筆試題庫2025
- 糖尿病足的護(hù)理常規(guī)講課件
- 2025年高考英語復(fù)習(xí)難題速遞之語法填空(2025年4月)
- 2025外籍工作人員勞動(dòng)合同范本
- 退化林地生態(tài)修復(fù)-深度研究
- 湖北省武漢市江岸區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版+解析版)
- 2025年《新課程標(biāo)準(zhǔn)解讀》標(biāo)準(zhǔn)課件
- 2024-2025學(xué)年同步試題 語文(統(tǒng)編版選擇性必修中冊(cè))8.2小二黑結(jié)婚
- 2024年1月國家開放大學(xué)漢語言本科《古代小說戲曲專題》期末紙質(zhì)考試試題及答案
評(píng)論
0/150
提交評(píng)論