項(xiàng)目三 列式數(shù)據(jù)庫(kù)HBase_第1頁(yè)
項(xiàng)目三 列式數(shù)據(jù)庫(kù)HBase_第2頁(yè)
項(xiàng)目三 列式數(shù)據(jù)庫(kù)HBase_第3頁(yè)
項(xiàng)目三 列式數(shù)據(jù)庫(kù)HBase_第4頁(yè)
項(xiàng)目三 列式數(shù)據(jù)庫(kù)HBase_第5頁(yè)
已閱讀5頁(yè),還剩117頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

大數(shù)據(jù)存儲(chǔ)技術(shù)與應(yīng)用案例所有教學(xué)資源,我們給;所有復(fù)雜操作,我們做;圖書(shū)附贈(zèng),永久免費(fèi),只為老師用書(shū)更方便課件教案微課掃碼題庫(kù)建課互評(píng)考試平臺(tái)

學(xué)習(xí)工具0102030405申請(qǐng)簽到功能建課、建班(無(wú)需操作,技術(shù)專員負(fù)責(zé)搭建)系統(tǒng)自動(dòng)記錄考勤分創(chuàng)建簽到學(xué)生掃碼簽到掃碼申請(qǐng)免費(fèi)開(kāi)通簽到功能→動(dòng)態(tài)二維碼,防作弊

考勤記錄自動(dòng)統(tǒng)計(jì),匯入學(xué)生總成績(jī)課堂簽到項(xiàng)目一大數(shù)據(jù)存儲(chǔ)入門(mén)項(xiàng)目三列式數(shù)據(jù)庫(kù)HBase項(xiàng)目二數(shù)據(jù)倉(cāng)庫(kù)Hive項(xiàng)目四文檔數(shù)據(jù)庫(kù)MongoDB項(xiàng)目五圖數(shù)據(jù)庫(kù)Neo4j項(xiàng)目六鍵值數(shù)據(jù)庫(kù)Redis項(xiàng)目七NewSQL數(shù)據(jù)庫(kù)CockroachDB列式數(shù)據(jù)庫(kù)HBase項(xiàng)目三任務(wù)一采用完全分布式模式部署HBase

任務(wù)二使用HBaseShell操作用戶行為數(shù)據(jù)任務(wù)三使用HBaseJavaAPI操作用戶行為數(shù)據(jù)列式數(shù)據(jù)庫(kù)按列存儲(chǔ)數(shù)據(jù),能夠有效提高數(shù)據(jù)的壓縮效率和查詢效率。HBase是一個(gè)基于Hadoop生態(tài)系統(tǒng)的列式數(shù)據(jù)庫(kù),它提供了實(shí)時(shí)讀寫(xiě)數(shù)據(jù)的功能,能夠存儲(chǔ)和管理大規(guī)模數(shù)據(jù)集。使用HBaseShell和HBaseJavaAPI,開(kāi)發(fā)者能夠以直觀和靈活的方式與HBase數(shù)據(jù)庫(kù)進(jìn)行交互,從而存儲(chǔ)和管理數(shù)據(jù)。本項(xiàng)目將介紹列式數(shù)據(jù)庫(kù)和HBase的相關(guān)知識(shí),采用完全分布式模式部署HBase,使用HBaseShell和HBaseJavaAPI操作用戶行為數(shù)據(jù)。項(xiàng)目導(dǎo)讀項(xiàng)目目標(biāo)了解列式數(shù)據(jù)庫(kù)的特點(diǎn)和應(yīng)用場(chǎng)景。熟悉HBase的特點(diǎn)、架構(gòu)和存儲(chǔ)結(jié)構(gòu)。掌握HBaseShell的常用命令,以及使用HBaseShell操作表和數(shù)據(jù)的方法。掌握使用HBaseJavaAPI操作表和數(shù)據(jù)的方法。能采用完全分布式模式部署HBase。能使用HBaseShell操作表和數(shù)據(jù),簡(jiǎn)單管理和查詢大規(guī)模數(shù)據(jù)。能使用HBaseJavaAPI操作表和數(shù)據(jù),實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)處理和分析任務(wù)。增強(qiáng)團(tuán)結(jié)協(xié)作意識(shí),實(shí)現(xiàn)共同進(jìn)步。學(xué)會(huì)利用事物間的關(guān)聯(lián)性解決問(wèn)題,提高邏輯思維能力。采用完全分布式模式部署HBase任務(wù)一HBase支持3種部署模式,分別為單機(jī)模式、偽分布式模式和完全分布式模式。在實(shí)際開(kāi)發(fā)中,通常采用完全分布式模式部署HBase。在這種模式下,HBase集群將數(shù)據(jù)存儲(chǔ)在HDFS中,并且由HMaster、HRegionServer和Zookeeper三大核心組件共同確保系統(tǒng)的高可用性、可靠性與可擴(kuò)展性。采用完全分布式模式部署HBase之前,我們先來(lái)學(xué)習(xí)一下列式數(shù)據(jù)庫(kù)的特點(diǎn)和應(yīng)用場(chǎng)景,以及HBase的特點(diǎn)、架構(gòu)和存儲(chǔ)結(jié)構(gòu)。任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述HBase邏輯模型的概念。全班學(xué)生以3~5人為一組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“HBase的邏輯模型和物理模型概述”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述Hbase物理模型的概念。HBase的邏輯模型和物理模型概述一、列式數(shù)據(jù)庫(kù)概述列式數(shù)據(jù)庫(kù)提供了一種與傳統(tǒng)行式數(shù)據(jù)庫(kù)不同的數(shù)據(jù)存儲(chǔ)和處理方式,在存儲(chǔ)和管理大規(guī)模數(shù)據(jù)、執(zhí)行復(fù)雜查詢和數(shù)據(jù)聚合等方面具有明顯優(yōu)勢(shì)。1、列式數(shù)據(jù)庫(kù)的特點(diǎn)列式數(shù)據(jù)庫(kù)的特點(diǎn)(1)數(shù)據(jù)壓縮效率高列式數(shù)據(jù)庫(kù)按列存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)了同類數(shù)據(jù)的連續(xù)存儲(chǔ)。這種存儲(chǔ)機(jī)制使得相同數(shù)據(jù)類型的信息集中存放,從而為高效壓縮數(shù)據(jù)提供了有利條件。(2)查詢效率高列式數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)查詢時(shí),可以只讀取所需的列,而非整行數(shù)據(jù),從而提高了數(shù)據(jù)的查詢效率。(3)數(shù)據(jù)模型靈活列式數(shù)據(jù)庫(kù)不僅可以存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),還可以有效地存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。一、列式數(shù)據(jù)庫(kù)概述2、列式數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景二、HBase的特點(diǎn)HBase最初只是Hadoop項(xiàng)目的一部分,現(xiàn)已成為Apache軟件基金會(huì)(Apachesoftwarefoundation,ASF)的頂級(jí)項(xiàng)目。目前,HBase的社區(qū)活躍度非常高,越來(lái)越多的互聯(lián)網(wǎng)公司在業(yè)務(wù)場(chǎng)景中使用HBase存儲(chǔ)和管理數(shù)據(jù)。特點(diǎn)(1)支持多版本數(shù)據(jù)HBase中的數(shù)據(jù)可以有多個(gè)版本,允許用戶在不同時(shí)間點(diǎn)查看歷史版本的數(shù)據(jù)。默認(rèn)情況下,版本號(hào)是數(shù)據(jù)寫(xiě)入時(shí)的時(shí)間戳。(2)支持稀疏數(shù)據(jù)模型稀疏數(shù)據(jù)模型是指在數(shù)據(jù)存儲(chǔ)中,很多數(shù)據(jù)項(xiàng)在多數(shù)情況下是空的或不存在的,只有少量數(shù)據(jù)項(xiàng)含有實(shí)際的值。HBase支持稀疏數(shù)據(jù)模型,它可以只存儲(chǔ)含有實(shí)際值的數(shù)據(jù)項(xiàng),從而顯著提高存儲(chǔ)效率并節(jié)省存儲(chǔ)空間。三、HBase的架構(gòu)客戶端ZookeeperHMaste層HRegionServer三、HBase的架構(gòu)客戶端包含訪問(wèn)HBase的接口,是整個(gè)HBase集群的入口。客戶端與HMaster和HRegionServer通信。對(duì)于管理類的操作,客戶端通過(guò)Zookeeper與HMaster通信。對(duì)于數(shù)據(jù)讀寫(xiě)類的操作,客戶端與HRegionServer通信。三、HBase的架構(gòu)ZookeeperZookeeper是由Apache維護(hù)的分布式協(xié)作服務(wù),主要用于實(shí)現(xiàn)分布式系統(tǒng)中的HMaster選舉、分布式協(xié)調(diào)、集群管理、負(fù)載均衡、分布式鎖等功能。在HBase集群中,Zookeeper可以保證在任何時(shí)刻總有唯一一個(gè)HMaster正常運(yùn)行,從而為集群提供穩(wěn)定、可靠的協(xié)作服務(wù)。三、HBase的架構(gòu)HMasterHMaster是HBase集群中的服務(wù)器,主要負(fù)責(zé)將表中的HRegion分配到HRegionServer中,并監(jiān)控集群中所有HRegionServer的運(yùn)行狀態(tài)。三、HBase的架構(gòu)HregionServerHRegionServer是HBase中主要的數(shù)據(jù)處理節(jié)點(diǎn),負(fù)責(zé)管理HRegion,并響應(yīng)用戶的數(shù)據(jù)讀寫(xiě)請(qǐng)求。每個(gè)HRegionServer可以管理多個(gè)HRegion,并對(duì)應(yīng)一個(gè)HLog。三、HBase的架構(gòu)HregionServer①HLog。記錄了所有數(shù)據(jù)的變更操作(如插入、更新和刪除等),即使HBase在寫(xiě)入數(shù)據(jù)的過(guò)程中出現(xiàn)故障,也能通過(guò)HLog中的記錄來(lái)恢復(fù)數(shù)據(jù),從而確保數(shù)據(jù)的完整性和一致性。三、HBase的架構(gòu)HregionServer②HRegion。HRegion表示分區(qū),是數(shù)據(jù)存儲(chǔ)和訪問(wèn)的基本單元,一個(gè)表中通常包含多個(gè)HRegion,同一個(gè)HRegion只能分配到同一個(gè)HRegionServer。每個(gè)HRegion通常包含多個(gè)Store,每個(gè)Store保存一個(gè)列族。表中有幾個(gè)列族,HRegion中就有幾個(gè)Store。每個(gè)Store通常由一個(gè)MemStore和多個(gè)StoreFile組成。其中,MemStore用于存儲(chǔ)最新寫(xiě)入的數(shù)據(jù),StoreFile是HBase中的數(shù)據(jù)存儲(chǔ)文件,當(dāng)MemStore中的數(shù)據(jù)刷新到磁盤(pán)時(shí),就會(huì)生成StoreFile。StoreFile底層以HFile的格式保存,并存儲(chǔ)在HDFS中。HRegion在HRegionServer上的分布四、HBase的存儲(chǔ)結(jié)構(gòu)HBase的存儲(chǔ)結(jié)構(gòu)表(table)表是最大的邏輯單元,用于組織數(shù)據(jù)。它包含一個(gè)或多個(gè)行和列族,并且通常被水平分割為多個(gè)分區(qū)。分區(qū)(region)HBase表可以根據(jù)行鍵范圍進(jìn)行水平分區(qū),每個(gè)分區(qū)包含一定范圍的行。行(row)行是表中的一條記錄,由一個(gè)行鍵(rowkey)和列族中的列組成。行鍵是每行數(shù)據(jù)的唯一標(biāo)識(shí)符,使用它可以快速檢索和訪問(wèn)特定行的數(shù)據(jù)。列族(columnfamily)列族由若干列組成,列族內(nèi)的所有列都存儲(chǔ)在同一個(gè)底層存儲(chǔ)文件中,因此具有相似的訪問(wèn)模式和壓縮設(shè)置的列應(yīng)該組織到同一個(gè)列族中。列(column)列用于存儲(chǔ)具有相同數(shù)據(jù)類型或?qū)傩缘臄?shù)據(jù),它由列族和列限定符(columnqualifier)組成。完整的列名由列族名、分隔符(:)和列限定符名組成,如“family:qualifier”。單元格(cell)單元格是HBase中的數(shù)據(jù)存儲(chǔ)單元,行鍵、列族和列限定符共同確定一個(gè)單元格。每個(gè)單元格數(shù)據(jù)都有一個(gè)時(shí)間戳,用于標(biāo)識(shí)數(shù)據(jù)的版本(version)。HBase表中的單元格內(nèi)容沒(méi)有特定的數(shù)據(jù)類型,通常以二進(jìn)制字節(jié)形式存儲(chǔ)。四、HBase的存儲(chǔ)結(jié)構(gòu)為便于理解HBase中數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),下面通過(guò)一個(gè)實(shí)例進(jìn)行說(shuō)明。假設(shè)下表是一個(gè)存儲(chǔ)了圖書(shū)借閱信息的HBase表,表中的圖書(shū)編號(hào)是行鍵,用來(lái)唯一標(biāo)識(shí)每本圖書(shū)的信息;列族info中包含了兩個(gè)列,分別是book_name和date,用來(lái)保存書(shū)名和借閱時(shí)間。表中的單元格由行鍵、列族和列限定符共同確定,如“2023-9-9”所在單元格由行鍵956211、列族info和列限定符date共同確定。此外,圖書(shū)編號(hào)為956212的圖書(shū)存在兩個(gè)版本的借閱信息,所以有兩個(gè)時(shí)間戳t1和t2,時(shí)間戳較大的數(shù)據(jù)版本較新,即“2023-9-20”為最新的數(shù)據(jù)版本。高手點(diǎn)拔任務(wù)實(shí)施

任務(wù)分析HBase的運(yùn)行離不開(kāi)Hadoop集群環(huán)境,因此本書(shū)在Hadoop完全分布式集群中部署HBase。采用完全分布式模式部署HBase需要安裝并配置Zookeeper,部署HBase集群。

實(shí)施步驟采用完全分布式模式部署HBase任務(wù)實(shí)施

實(shí)施步驟1、安裝并配置Zookeeper步驟1啟動(dòng)Master主機(jī)的瀏覽器,訪問(wèn)Zookeeper官方網(wǎng)站(https://zookeeper.),在首頁(yè)中單擊“Download”鏈接文字,然后在打開(kāi)的版本頁(yè)面中單擊“ApacheZookeeper3.7.2”鏈接文字。采用完全分布式模式部署HBase通常使用外部組件Zookeeper協(xié)調(diào)和管理HBase集群,本書(shū)使用Zookeeper3.7.2選擇Zookeeper版本任務(wù)實(shí)施步驟2在打開(kāi)的下載頁(yè)面中單擊“/zookeeper/zookeeper-3.7.2/

apache-zookeeper-3.7.2-bin.tar.gz”鏈接文字,下載Zookeeper安裝文件。單擊下載鏈接文字任務(wù)實(shí)施啟動(dòng)Master主機(jī)的終端,執(zhí)行如下命令,將Zookeeper安裝文件解壓到“/usr/local/hadoop”目錄中;然后將“apache-zookeeper-3.7.2-bin”目錄重命名為“zookeeper”;最后將“zookeeper”的所有權(quán)限賦予hadoop用戶。步驟3[hadoop@Master~]$cd~/下載[hadoop@Master下載]$sudotar-zxvfapache-zookeeper-3.7.2-bin.tar.gz-C/usr/local/hadoop[hadoop@Master下載]$cd/usr/local/hadoop[hadoop@Masterhadoop]$mvapache-zookeeper-3.7.2-binzookeeper[hadoop@Masterhadoop]$sudochown-Rhadoop./zookeeper任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“.bashrc”配置文件;然后在文件首行添加如下配置信息;最后保存并關(guān)閉配置文件。[hadoop@Masterhadoop]$vim~/.bashrc#配置信息exportZOOKEEPER_HOME=/usr/local/hadoop/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin步驟4在Master主機(jī)上執(zhí)行如下命令,使配置信息生效。步驟5[hadoop@Masterhadoop]$source~/.bashrc在Master主機(jī)上執(zhí)行如下命令,將Zookeeper安裝目錄的“conf”目錄中的“zoo_sample.cfg”配置文件重命名為“zoo.cfg”。步驟6[hadoop@Masterhadoop]$cdzookeeper[hadoop@Masterzookeeper]$mv./conf/zoo_sample.cfg./conf/zoo.cfg任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,在Zookeeper安裝目錄中創(chuàng)建Zookeeper數(shù)據(jù)存儲(chǔ)目錄“mkdata”,并將該目錄的所有權(quán)限賦予hadoop用戶。步驟7[hadoop@Masterzookeeper]$sudomkdirmkdata[hadoop@Masterzookeeper]$sudochown-Rhadoop./mkdata在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“zoo.cfg”配置文件;然后在文件首行添加如下配置信息;最后保存并關(guān)閉配置文件。步驟8[hadoop@Masterzookeeper]$vim./conf/zoo.cfg#配置信息dataDir=/usr/local/hadoop/zookeeper/mkdataserver.1=Master:2888:3888server.2=Worker1:2888:3888server.3=Worker2:2888:3888小提示注意“zoo.cfg”配置文件中已經(jīng)包含“dataDir=/tmp/zookeeper”配置信息,需要先找到該配置信息,然后使用注釋符(#)將其注釋掉。任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,在Zookeeper數(shù)據(jù)存儲(chǔ)目錄中創(chuàng)建并打開(kāi)“myid”配置文件;然后在文件首行添加如下配置信息。[hadoop@Masterzookeeper]$sudovim./mkdata/myid #配置信息,Master主機(jī)對(duì)應(yīng)的server編號(hào)11步驟9在Master主機(jī)上執(zhí)行如下命令,將“zookeeper”目錄分別復(fù)制到Worker1和Worker2主機(jī)的相應(yīng)目錄中,避免重復(fù)安裝和配置Zookeeper。步驟10[hadoop@Masterzookeeper]$scp-r/usr/local/hadoop/zookeeperWorker1:/usr/local/hadoop/zookeeper [hadoop@Masterzookeeper]$scp-r/usr/local/hadoop/zookeeperWorker2:/usr/local/hadoop/zookeeper 分別在Worker1和Worker2主機(jī)上打開(kāi)“myid”配置文件;然后將文件中首行的內(nèi)容分別修改為2和3。步驟11任務(wù)實(shí)施參考步驟4和步驟5,分別在Worker1和Worker2主機(jī)中設(shè)置相同的配置信息。步驟12在Master主機(jī)上執(zhí)行如下命令,啟動(dòng)Zookeeper。步驟13[hadoop@Masterzookeeper]$jps在Master主機(jī)上執(zhí)行如下命令,查看進(jìn)程。若顯示的進(jìn)程中含有QuorumPeerMain,則證明Zookeeper啟動(dòng)成功。步驟14Master主機(jī)的進(jìn)程使用相同的方法,分別在Worker1和Worker2主機(jī)上啟動(dòng)Zookeeper,并驗(yàn)證Zookeeper是否啟動(dòng)成功。步驟15任務(wù)實(shí)施2、部署HBase集群步驟1啟動(dòng)Master主機(jī)的瀏覽器,訪問(wèn)HBase官方網(wǎng)站(),在首頁(yè)中單擊“Download”下方的“here”鏈接文字;然后在打開(kāi)的下載頁(yè)面下方單擊“ApacheArchive”鏈接文字;接著在打開(kāi)的版本頁(yè)面中單擊“2.4.14/”鏈接文字;最后在打開(kāi)的頁(yè)面中單擊“hbase-2.4.14-bin.tar.gz”鏈接文字,下載HBase安裝文件。下載Hbase安裝文件任務(wù)實(shí)施啟動(dòng)Master主機(jī)的終端,執(zhí)行如下命令,將HBase安裝文件解壓到“/usr/local”目錄中;然后將“hbase-2.4.14”目錄重命名為“hbase”;最后將“hbase”目錄的所有權(quán)限賦予hadoop用戶。步驟2[hadoop@Master~]$cd~/下載[hadoop@Master下載]$sudotar-zxfhbase-2.4.14-bin.tar.gz-C/usr/local[hadoop@Master下載]$cd/usr/local[hadoop@Masterlocal]$sudomvhbase-2.4.14hbase[hadoop@Masterlocal]$sudochown-Rhadoop./hbase步驟3在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“.bashrc”配置文件;然后在文件首行添加如下配置信息;最后保存并關(guān)閉配置文件。[hadoop@Masterlocal]$vim~/.bashrc#配置信息exportHBase_HOME=/usr/local/hbaseexportPATH=$PATH:$HBase_HOME/bin[hadoop@Masterlocal]$source~/.bashrc任務(wù)實(shí)施步驟4在Master主機(jī)上執(zhí)行如下命令,使配置信息生效。步驟5在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“hbase-env.sh”配置文件;然后添加如下配置信息,配置JDK環(huán)境變量,并配置使用外部組件Zookeeper管理HBase;最后保存并關(guān)閉配置文件。[hadoop@Masterlocal]$cd/usr/local/hbase/conf[hadoop@Masterconf]$vimhbase-env.sh#配置信息exportJAVA_HOME=/usr/lib/jvm/jdk1.8.0_151exportHBASE_MANAGES_ZK=falseexportHBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“hbase-site.xml”配置文件;然后在<configuration></configuration>標(biāo)簽中的內(nèi)容替換為如下配置信息;最后保存并關(guān)閉配置文件。步驟6[hadoop@Masterconf]$gedithbase-site.xml#配置信息<property> <name>hbase.cluster.distributed</name> <value>true</value></property><property> <name>hbase.rootdir</name> <value>hdfs://Master:9000/hbase</value></property><property> <name>hbase.zookeeper.quorum</name> <value>Master,Worker1,Worker2</value></property>任務(wù)實(shí)施在Master主機(jī)上執(zhí)行如下命令,打開(kāi)“regionservers”配置文件;然后刪除文件中原有的內(nèi)容并添加如下配置信息;最后保存并關(guān)閉配置文件。步驟7[hadoop@Masterconf]$vimregionservers#配置信息MasterWorker1Worker2步驟8在Master主機(jī)上執(zhí)行如下命令,將Hadoop的配置文件“hdfs-site.xml”復(fù)制到HBase安裝目錄的“conf”目錄中,方便在HBase中使用HDFS。[hadoop@Masterconf]$cp/usr/local/hadoop/etc/hadoop/hdfs-site.xml/usr/local/hbase/conf步驟9分別在Worker1和Worker2主機(jī)上執(zhí)行如下命令,將“/usr/local”目錄的所有權(quán)限賦予hadoop用戶。[hadoop@Worker1~]$sudochown-Rhadoop/usr/local任務(wù)實(shí)施[hadoop@Masterconf]$scp-r/usr/local/hbaseWorker1:/usr/local/hbase[hadoop@Masterconf]$scp-r/usr/local/hbaseWorker2:/usr/local/hbase步驟10在Master主機(jī)上執(zhí)行如下命令,將“hbase”目錄分別復(fù)制到Worker1和Worker2主機(jī)的相應(yīng)目錄中,避免重復(fù)安裝和配置HBase。步驟11參考步驟3和步驟4,分別在Worker1和Worker2主機(jī)上設(shè)置相同的配置信息。[hadoop@Worker1~]$sudochown-Rhadoop/usr/local/hbase[hadoop@Worker2~]$sudochown-Rhadoop/usr/local/hbase 步驟12分別在Worker1和Worker2主機(jī)上執(zhí)行如下命令,將“hbase”目錄的所有權(quán)限賦予hadoop用戶。[hadoop@Masterconf]$start-hbase.sh任務(wù)實(shí)施步驟13在Master主機(jī)上執(zhí)行如下命令,啟動(dòng)HBase。啟動(dòng)過(guò)程中,根據(jù)提示信息輸入“yes”。步驟14在Master主機(jī)上執(zhí)行如下命令,查看進(jìn)程。若顯示的進(jìn)程中含有HMaster和HRegionServer,則證明HBase啟動(dòng)成功。[hadoop@Masterconf]$jps小提示啟動(dòng)HBase之前,需要確保HDFS、YARN和3臺(tái)主機(jī)的Zookeeper均處于啟動(dòng)狀態(tài)。Master主機(jī)的進(jìn)程任務(wù)實(shí)施步驟15分別查看Worker1和Worker2主機(jī)的進(jìn)程。若顯示的進(jìn)程中含有HRegionServer,則證明HBase啟動(dòng)成功。步驟16啟動(dòng)Master主機(jī)的瀏覽器,訪問(wèn)“http://Master:16010”,打開(kāi)HBase的Web頁(yè)面,如圖所示。在該頁(yè)面中,用戶可以查看表詳情、操作過(guò)程和鎖、HBase檢查報(bào)告等信息。當(dāng)不再使用HBase時(shí),可以使用“stop-hbase.sh”命令關(guān)閉HBase。高手點(diǎn)拔HBase的Web頁(yè)面使用HBaseShell操作用戶行為數(shù)據(jù)任務(wù)二用戶在使用互聯(lián)網(wǎng)的過(guò)程中,任何一個(gè)簡(jiǎn)單的行為(如搜索、瀏覽、購(gòu)買等)都會(huì)產(chǎn)生大量的數(shù)據(jù)。用戶行為數(shù)據(jù)通常有幾十萬(wàn)條,甚至上百萬(wàn)條,使用HBase存儲(chǔ)和管理這些數(shù)據(jù)是個(gè)不錯(cuò)的選擇。為便于演示HBase的使用方法,假設(shè)用戶行為數(shù)據(jù)表中只有10條數(shù)據(jù),其邏輯模型如表所示。(1)列族user_info表示用戶基本信息。該列族中各列限定符名及其含義如下。①user_id:用戶ID。②user_name:用戶名。③user_age:用戶年齡。行鍵user_infobehavior_infouser_iduser_nameuser_ageitem_idbehavior

_timebehavior

_typebehavior

_address10000110001082liuna222833597762024-3-1brobeijing10000210001082liuna222833597762024-3-1cartbeijing10000310001082liuna222665221682024-3-1buybeijing10000410002806

3854221682024-3-1cartshanxi10000510002806

5156324522024-3-1buyshanxi10000610002806

7397319262024-3-2brohunan10000710002806

7397319262024-3-2favhunan10000810003905

185418474132024-3-2cart

10000910003905

189658412352024-3-3bro

10001010003905

186654232112024-3-3fav(2)列族behavior_info表示用戶行為信息。該列族中各列限定符名及其含義如下。①item_id:商品ID。②behavior_time:用戶行為發(fā)生的時(shí)間。③behavior_type:用戶行為類型,包含瀏覽商品(bro)、收藏商品(fav)、加購(gòu)商品(cart)和購(gòu)買商品(buy)。④behavior_address:用戶行為發(fā)生所在地。用戶行為數(shù)據(jù)可以反映出用戶的購(gòu)物情況、購(gòu)物習(xí)慣和偏好,操作用戶行為數(shù)據(jù)能夠幫助電商平臺(tái)保存用戶數(shù)據(jù)、構(gòu)建用戶畫(huà)像、提升用戶體驗(yàn),從而促進(jìn)商品銷售量增長(zhǎng)。在使用HBaseShell操作用戶行為數(shù)據(jù)之前,我們先來(lái)學(xué)習(xí)一下HBaseShell的常用命令,以及使用HBaseShell操作表和數(shù)據(jù)的基本方法。任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述Shell的定義。全班學(xué)生以3~5人為一組進(jìn)行分組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“Shell概述”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述使用HBaseShell操作HBase的優(yōu)勢(shì)。Shell概述一、HBaseShell的常用命令HBaseShell是HBase自帶的命令行工具。通過(guò)HBaseShell,用戶可以直接使用語(yǔ)句來(lái)完成表和數(shù)據(jù)的常見(jiàn)操作,無(wú)須編寫(xiě)額外代碼或使用其他工具。這種交互方式簡(jiǎn)單直觀,使得用戶能夠更加輕松地使用HBase,同時(shí)也為用戶提供了最基本的學(xué)習(xí)和探索HBase功能的途徑。HBaseShell的常用命令如下。(1)HBase啟動(dòng)成功后,輸入如下命令可以啟動(dòng)HBaseShell。hbaseshell

HBaseShell啟動(dòng)成功的界面在Shell環(huán)境中執(zhí)行“exit”命令可以退出HBaseShell。高手點(diǎn)拔一、HBaseShell的常用命令(2)使用help命令可以在不借助網(wǎng)絡(luò)或其他參考資料的情況下快速獲取命令的幫助信息,其語(yǔ)法格式如下?!?命令名'”為可選項(xiàng),用于查看指定命令的詳細(xì)用法和參數(shù),不指定命令名時(shí)會(huì)以分組的形式顯示所有命令。help['命令名']二、表的基本操作使用create命令可以創(chuàng)建表,其語(yǔ)法格式如下。創(chuàng)建表時(shí)須指明表名和列族名。create'表名','列族名1','列族名2'… #方法1create'表名',{NAME=>'列族名1'[,VERSIONS=>版本號(hào)]},{NAME=>'列族名2'[,VERSIONS=>版本號(hào)]}… #方法2方括號(hào)表示內(nèi)容為可選項(xiàng);符號(hào)“=>”表示將后面的值賦給指定的參數(shù);版本號(hào)表示列族版本數(shù),用于指定單元格內(nèi)的數(shù)據(jù)可以保留的版本個(gè)數(shù)。1、創(chuàng)建表2、判斷表是否存在使用exists命令可以判斷指定表是否存在,其語(yǔ)法格式如下。exists'表名'二、表的基本操作使用list命令可以顯示HBase中的所有表,其語(yǔ)法格式如下。list使用describe命令可以查看表的結(jié)構(gòu)信息,其語(yǔ)法格式如下。3、顯示表4、查看表信息describe'表名'二、表的基本操作使用alter命令可以修改表,如修改列族版本數(shù)、添加或刪除列族等。alter命令的語(yǔ)法格式如下。#修改列族版本數(shù)alter'表名',{NAME=>'列族名1',VERSIONS=>版本號(hào)},{NAME=>'列族名2',VERSIONS=>版本號(hào)}…#添加列族alter'表名','列族名1','列族名2'…#刪除列族alter'表名',{NAME=>'列族名1',METHOD=>'delete'},{NAME=>'列族名2',

METHOD=>'delete'}…5、查看表信息二、表的基本操作disable'表名'6、禁用表(1)使用disable命令可以禁用指定表,其語(yǔ)法格式如下。disable_all'正則表達(dá)式'(2)使用disable_all命令可以禁用所有滿足正則表達(dá)式的表,其語(yǔ)法格式如下。使用is_disabled命令可以判斷指定表是否禁用,其語(yǔ)法格式如下。is_disabled'表名'使用該命令時(shí),結(jié)果返回true,表示已禁用;結(jié)果返回false,表示未禁用。高手點(diǎn)拔使用什么命令可以判斷指定表是否禁用?二、表的基本操作enable'表名'7、啟用表(1)使用enable命令可以啟用指定表,其語(yǔ)法格式如下。enable_all'正則表達(dá)式'(2)使用enable_all命令可以啟用所有滿足正則表達(dá)式的表,其語(yǔ)法格式如下。使用is_enabled命令可以判斷指定表是否啟用,其語(yǔ)法格式如下。is_enabled'表名'高手點(diǎn)拔使用什么命令可以判斷指定表是否啟用?二、表的基本操作刪除表分兩步進(jìn)行,首先禁用表,然后刪除表。disable'表名'drop'表名'8、刪除表(1)使用drop命令可以刪除指定表,其語(yǔ)法格式如下。disable_all'正則表達(dá)式'drop_all'正則表達(dá)式'(2)使用drop_all命令可以刪除所有滿足正則表達(dá)式的表,其語(yǔ)法格式如下。二、表的基本操作例3-1步驟1create'student',{NAME=>'stu_info',VERSIONS=>2},{NAME=>'stu_grade',

VERSIONS=>5}操作表student。執(zhí)行如下語(yǔ)句,創(chuàng)建表student。表中包含列族stu_info和stu_grade,且列族版本數(shù)分別為2和5。步驟2exists'student'執(zhí)行如下語(yǔ)句,判斷表student是否存在。判斷表student是否存在的結(jié)果二、表的基本操作步驟3list執(zhí)行如下語(yǔ)句,查看HBase中的所有表。步驟4describe'student'執(zhí)行如下語(yǔ)句,查看表student的信息。

HBase中的所有表表student的信息二、表的基本操作步驟5alter'student','test'執(zhí)行如下語(yǔ)句,在表student中添加列族test。alter'student',{NAME=>'test',METHOD=>'delete'} 步驟6alter'student',{NAME=>'stu_info',VERSIONS=>4}執(zhí)行如下語(yǔ)句,將表student中列族stu_info的版本數(shù)修改為4。步驟7執(zhí)行如下語(yǔ)句,刪除表student中的列族test。disable'student'步驟8執(zhí)行如下語(yǔ)句,禁用表student。二、表的基本操作is_disabled'student'步驟9執(zhí)行如下語(yǔ)句,判斷表student是否禁用。結(jié)果返回true,表示表student已禁用。drop'student'步驟10執(zhí)行如下語(yǔ)句,刪除表student。判斷表student是否禁用的結(jié)果三、數(shù)據(jù)的基本操作使用put命令可以向表中插入數(shù)據(jù)或更新表中的數(shù)據(jù),其語(yǔ)法格式如下。如果單元格中已有數(shù)據(jù),則在不考慮時(shí)間戳的情況下,執(zhí)行put命令將更新單元格中已有的數(shù)據(jù)。put'表名','行鍵','列族名[:列限定符名]','列值'1、插入/更新數(shù)據(jù)三、數(shù)據(jù)的基本操作2、查詢數(shù)據(jù)(1)使用get命令既可以查詢表中指定行的數(shù)據(jù),又可以查詢表中指定的多個(gè)或一個(gè)單元格的數(shù)據(jù)(行鍵和列族名共同確定多個(gè)單元格,行鍵和列名共同確定一個(gè)單元格),其語(yǔ)法格式如下。#查詢指定行或指定單元格的數(shù)據(jù)get'表名','行鍵'[,'列族名1[:列限定符名1]','列族名2[:列限定符名2]'…]#查詢指定的一個(gè)列族的多個(gè)或一個(gè)單元格的數(shù)據(jù)get'表名','行鍵',{COLUMN=>'列族名[:列限定符名]'}#查詢指定的多個(gè)列族的多個(gè)單元格的數(shù)據(jù),列族名外的方括號(hào)不能省略get'表名','行鍵',{COLUMN=>['列族名1[:列限定符名1]','列族名2[:列限定符名2]'…]}#查詢指定列族的多個(gè)或一個(gè)單元格的指定版本號(hào)的數(shù)據(jù)get'表名','行鍵',{COLUMN=>'列族名[:列限定符名]',VERSIONS=>版本號(hào)}三、數(shù)據(jù)的基本操作(2)使用scan命令既可以查詢表中的全部數(shù)據(jù),又可以查詢表中指定列族名或列名的數(shù)據(jù),其語(yǔ)法格式如下。#查詢?nèi)繑?shù)據(jù),或者指定的一個(gè)列族或列的數(shù)據(jù)scan'表名'[,{COLUMN=>'列族名[:列限定符名]'}]#查詢指定的多個(gè)列族或列的數(shù)據(jù),列族名外的方括號(hào)不能省略scan'表名',{COLUMNS=>['列族名1[:列限定符名1]','列族名2[:列限定符名2]'…]}#查詢指定列族或列的數(shù)據(jù),并指定返回的行數(shù)scan'表名',{COLUMNS=>'列族名[:列限定符名]',LIMIT=>行數(shù)}#查詢指定列族或列,同時(shí)指定行鍵范圍的數(shù)據(jù)。起始行鍵和結(jié)束行鍵可同時(shí)存在,也可任選其一scan'表名',{COLUMNS=>'列族名[:列限定符名]',STARTROW=>'起始行鍵',

ENDROW=>'結(jié)束行鍵'}小提示需要注意的是,同時(shí)使用STARTROW和ENDROW限制查詢范圍時(shí),查詢結(jié)果為STARTROW(包含該行鍵)和ENDROW(不包含該行鍵)之間的所有行的數(shù)據(jù)。三、數(shù)據(jù)的基本操作3、查詢數(shù)據(jù)(1)使用delete命令可以刪除表中指定單元格的數(shù)據(jù),其語(yǔ)法格式如下。delete'表名','行鍵','列族名:列限定符名'[,時(shí)間戳](2)使用deleteall命令既可以刪除表中的整行數(shù)據(jù),又可以刪除表中指定單元格的數(shù)據(jù),其語(yǔ)法格式如下。deleteall'表名','行鍵'[,'列族名:列限定符名'][,時(shí)間戳]…/>CREATEEXTERNALTABLEIFNOTEXISTSexternal_table例3-2操作表student中的數(shù)據(jù)。執(zhí)行如下語(yǔ)句,創(chuàng)建表student。步驟1二、數(shù)據(jù)的基本操作步驟2put'student','20231001','stu_info:name','Lisi'put'student','20231001','stu_info:sex','female'put'student','20231001','stu_info:class','1'put'student','20231001','stu_grade:Chinese','95'put'student','20231001','stu_grade:English','99'執(zhí)行如下語(yǔ)句,向表student中插入數(shù)據(jù)。步驟2中插入一條學(xué)號(hào)為20231001,姓名為L(zhǎng)isi,性別為female,班級(jí)為1班,語(yǔ)文、英語(yǔ)科目成績(jī)分別為95分和99分的數(shù)據(jù)。高手點(diǎn)拔二、數(shù)據(jù)的基本操作步驟3#插入第二行數(shù)據(jù)put'student','20231002','stu_info:name','Zhangxin'put'student','20231002','stu_info:sex','male'put'student','20231002','stu_info:class','2'put'student','20231002','stu_grade:Chinese','90'put'student','20231002','stu_grade:English','95'#插入第三行數(shù)據(jù)put'student','20231003','stu_info:name','Wangwei'put'student','20231003','stu_info:sex','male'put'student','20231003','stu_info:class','3'put'student','20231003','stu_grade:Chinese','92'put'student','20231003','stu_grade:English','93'執(zhí)行如下語(yǔ)句,繼續(xù)向表student中插入兩行數(shù)據(jù)。二、數(shù)據(jù)的基本操作步驟4put'student','20231001','stu_info:name','Lisan'執(zhí)行如下語(yǔ)句,將表student中行鍵為20231001的學(xué)生姓名由Lisi更新為L(zhǎng)isan。步驟5get'student','20231001'執(zhí)行如下語(yǔ)句,查詢表student中行鍵為20231001的數(shù)據(jù)。步驟6get'student','20231001',{COLUMN=>'stu_info:name',VERSIONS=>2}執(zhí)行如下語(yǔ)句,查詢表student中行鍵為20231001、列族名為stu_info、列限定符名為name的兩個(gè)版本數(shù)據(jù)。行鍵為20231001、列族名為stu_info、列限定符名為name的兩個(gè)版本數(shù)據(jù)行鍵為20231001的數(shù)據(jù)二、數(shù)據(jù)的基本操作步驟7scan'student',{COLUMNS=>['stu_info:name','stu_info:class'],LIMIT=>2}執(zhí)行如下語(yǔ)句,查詢表student中列族名為stu_info、列限定符名為name和class的前兩行數(shù)據(jù)。步驟8delete'student','20231001','stu_grade:English'執(zhí)行如下語(yǔ)句,刪除表student中行鍵為20231001、列族名為stu_grade、列限定符名為English的數(shù)據(jù)。步驟9deleteall'student','20231001'執(zhí)行如下語(yǔ)句,刪除表student中行鍵為20231001的全部數(shù)據(jù)。列族名為stu_info、列限定符名為name和class的前兩行數(shù)據(jù)三、數(shù)據(jù)的基本操作4、批量導(dǎo)入與導(dǎo)出數(shù)據(jù)(1)向HBase表中批量導(dǎo)入數(shù)據(jù)的常用方法有以下3種。①使用HBase的ImportTsv命令將存儲(chǔ)在HDFS中的文本文件導(dǎo)入HBase表中,文件中的數(shù)據(jù)之間應(yīng)當(dāng)有明確的分隔符(如Tab、逗號(hào)等)。使用ImportTsv命令批量導(dǎo)入數(shù)據(jù)的語(yǔ)法格式如下。hbaseorg.apache.hadoop.hbase.mapreduce.ImportTsv#可選項(xiàng),指定列之間的分隔符,默認(rèn)為T(mén)ab[-Dimporttsv.separator='分隔符'] #可選項(xiàng),指定要導(dǎo)入數(shù)據(jù)的列名。其中,HBASE_ROW_KEY用于指定行鍵所在的列[-Dimporttsv.columns=HBASE_ROW_KEY[,列名1,列名2…]]表名數(shù)據(jù)導(dǎo)入路徑②使用HBaseJavaAPI的Put操作將數(shù)據(jù)逐條插入HBase表中(詳細(xì)講解見(jiàn)任務(wù)三),該方法適用于數(shù)據(jù)量較小的情況。③使用Import命令可以將使用Export命令導(dǎo)出的數(shù)據(jù)重新導(dǎo)入HBase表中,其語(yǔ)法格式如下。hbaseorg.apache.hadoop.hbase.mapreduce.Import'表名'數(shù)據(jù)導(dǎo)入路徑三、數(shù)據(jù)的基本操作(2)使用Export命令可以將HBase表中的數(shù)據(jù)導(dǎo)出到HDFS中,其語(yǔ)法格式如下。hbaseorg.apache.hadoop.hbase.mapreduce.Export'表名'數(shù)據(jù)導(dǎo)出路徑三、數(shù)據(jù)的基本操作步驟1[hadoop@Master~]$hdfsdfs-mkdir-p/hbase/input[hadoop@Master~]$hdfsdfs-put/usr/local/hbase/person_data.txt/hbase/input執(zhí)行如啟動(dòng)Master主機(jī)的終端,執(zhí)行如下命令,創(chuàng)建HDFS目錄“/hbase/input”,并將本地文件系統(tǒng)中的“/usr/local/hbase/person_data.txt”文件上傳至該目錄。例3-3批量導(dǎo)入與導(dǎo)出表中的數(shù)據(jù)。步驟2[hadoop@Master~]$hbaseshell啟動(dòng)一個(gè)新的終端,執(zhí)行如下命令,啟動(dòng)HBaseShell。步驟3create'person','info'在HBaseShell中執(zhí)行如下語(yǔ)句,創(chuàng)建表person。三、數(shù)據(jù)的基本操作步驟4[hadoop@Master~]$hbaseorg.apache.hadoop.hbase.mapreduce.ImportTsv-Dimporttsv.separator=','-Dimporttsv.columns=HBASE_ROW_KEY,

info:name,info:age,info:genderpersonhdfs://Master:9000/hbase/

input/person_data.txt在終端中執(zhí)行如下命令,將文件中的數(shù)據(jù)批量導(dǎo)入表person中。步驟5scan'person'在HBaseShell中執(zhí)行如下語(yǔ)句,查詢表person中的所有數(shù)據(jù)。若查詢結(jié)果中含有數(shù)據(jù),則證明批量導(dǎo)入數(shù)據(jù)成功。表person中的所有數(shù)據(jù)三、數(shù)據(jù)的基本操作步驟6[hadoop@Master~]$hbaseorg.apache.hadoop.hbase.mapreduce.Export'person'hdfs://Master:9000/hbase/export在終端中執(zhí)行如下命令,將表person中的所有數(shù)據(jù)導(dǎo)出到HDFS的“/hbase/export”目錄中。步驟7create'import','info'在HBaseShell中執(zhí)行如下語(yǔ)句,創(chuàng)建表import。小提示導(dǎo)出數(shù)據(jù)前,“hdfs://Master:9000/hbase/export”目錄不能存在,否則導(dǎo)出數(shù)據(jù)會(huì)失敗。小提示使用Import命令導(dǎo)入數(shù)據(jù)前,須先創(chuàng)建一個(gè)與數(shù)據(jù)所在表結(jié)構(gòu)相同的表。步驟8[hadoop@Master~]$hbaseorg.apache.hadoop.hbase.mapreduce.Import'import'hdfs://Master:9000/hbase/export在終端中執(zhí)行如下命令,將使用Export導(dǎo)出的數(shù)據(jù)重新導(dǎo)入表import中。任務(wù)實(shí)施

任務(wù)分析使用HBaseShell創(chuàng)建并修改表user_behavior;然后將表中的數(shù)據(jù)插入表user_behavior中;最后根據(jù)需要更新、查詢和刪除指定數(shù)據(jù)。

實(shí)施步驟行鍵user_infobehavior_infouser_iduser_nameuser_ageitem_idbehavior

_timebehavior

_typebehavior

_address10000110001082liuna222833597762024-3-1brobeijing10000210001082liuna222833597762024-3-1cartbeijing10000310001082liuna222665221682024-3-1buybeijing10000410002806

3854221682024-3-1cartshanxi10000510002806

5156324522024-3-1buyshanxi10000610002806

7397319262024-3-2brohunan10000710002806

7397319262024-3-2favhunan10000810003905

185418474132024-3-2cart

任務(wù)實(shí)施

任務(wù)分析使用HBaseShell創(chuàng)建并修改表user_behavior;然后將表3-2中的數(shù)據(jù)插入表user_behavior中;最后根據(jù)需要更新、查詢和刪除指定數(shù)據(jù)。

實(shí)施步驟行鍵user_infobehavior_infouser_iduser_nameuser_ageitem_idbehavior

_timebehavior

_typebehavior

_address10000910003905

189658412352024-3-3bro

10001010003905

186654232112024-3-3fav任務(wù)實(shí)施

任務(wù)分析使用HBaseShell創(chuàng)建并修改表user_behavior;然后將表3-2中的數(shù)據(jù)插入表user_behavior中;最后根據(jù)需要更新、查詢和刪除指定數(shù)據(jù)。

實(shí)施步驟使用HBaseShell操作用戶行為數(shù)據(jù)任務(wù)實(shí)施

實(shí)施步驟1、創(chuàng)建表步驟1在3臺(tái)主機(jī)上啟動(dòng)Zookeeper;然后在Master主機(jī)上啟動(dòng)HBase和HBaseShell。create'user_behavior',{NAME=>'user_info'},{NAME=>'behavior_info'}步驟2執(zhí)行如下語(yǔ)句,創(chuàng)建表user_behavior,表中包含列族user_info和behavior_info。list步驟3執(zhí)行如下語(yǔ)句,顯示HBase中的所有表。若顯示的表中含有user_behavior,則證明表user_behavior創(chuàng)建成功。任務(wù)實(shí)施

實(shí)施步驟2、修改表步驟1執(zhí)行如下語(yǔ)句,將表user_behavior中列族behavior_info的版本數(shù)修改為5。describe'user_behavior'步驟2執(zhí)行如下語(yǔ)句,查看表user_behavior的信息。若列族behavior_info的版本數(shù)為5,則證明版本數(shù)修改成功。alter'user_behavior',{NAME=>'behavior_info',VERSIONS=>5}任務(wù)實(shí)施3、插入表put'user_behavior','100001','user_info:user_id','10001082'put'user_behavior','100001','user_info:user_name','liuna'put'user_behavior','100001','user_info:user_age','22'put'user_behavior','100001','behavior_info:item_id','283359776'put'user_behavior','100001','behavior_info:behavior_time','2024-3-1'put'user_behavior','100001','behavior_info:behavior_type','bro'put'user_behavior','100001','behavior_info:behavior_address','beijing'步驟1執(zhí)行如下語(yǔ)句,向表user_behavior中插入表3-2中的第一行數(shù)據(jù)。任務(wù)實(shí)施

實(shí)施步驟scan'user_behavior'步驟2使用同樣的方法,向表user_behavior中插入表3-2中的第2~10行數(shù)據(jù)。步驟3執(zhí)行如下語(yǔ)句,查詢表user_behavior中的所有數(shù)據(jù)。若查詢到的數(shù)據(jù)和表3-2中的數(shù)據(jù)一致,則證明插入的數(shù)據(jù)正確。4、更新數(shù)據(jù)步驟1執(zhí)行如下語(yǔ)句,將表user_behavior中行鍵為100002、列名為“behavior_info:behavior_type”的數(shù)據(jù)cart更新為fav。步驟2執(zhí)行如下語(yǔ)句,查詢表user_behavior中行鍵為100002、列名為“behavior_info:behavior_type”的數(shù)據(jù)。若查詢結(jié)果為fav,則證明更新成功。put'user_behavior','100002','behavior_info:behavior_type','fav'get'user_behavior','100002',{COLUMN=>'behavior_info:behavior_type'}任務(wù)實(shí)施

實(shí)施步驟5、查詢數(shù)據(jù)步驟1執(zhí)行如下語(yǔ)句,查詢表user_behavior中行鍵為100002、列名為“behavior_info:behavior_type”的多個(gè)版本數(shù)據(jù)。get'user_behavior','100002',{COLUMN=>'behavior_info:behavior_type',

VERSIONS=>2}行鍵為100002、列名為“behavior_info:behavior_type”的多個(gè)版本數(shù)據(jù)任務(wù)實(shí)施

實(shí)施步驟get'user_behavior','100003',{COLUMN=>['user_info:user_name',

'behavior_info:item_id','behavior_info:behavior_type']}步驟2執(zhí)行如下語(yǔ)句,查詢表user_behavior中行鍵為100003、列名分別為“user_info:user_name”“behavior_info:item_id”“behavior_info:behavior_type”的數(shù)據(jù)。行鍵為100003的指定列的數(shù)據(jù)任務(wù)實(shí)施

實(shí)施步驟scan'user_behavior',{COLUMNS=>['user_info:user_id',

'behavior_info:behavior_address'],STARTROW=>'100006',ENDROW=>'100010'}步驟3執(zhí)行如下語(yǔ)句,查詢表user_behavior中列名為“user_info:user_id”和“behavior_info:behavior_address”,且行鍵位于100006(包含該行鍵)和100010(不包含該行鍵)之間的數(shù)據(jù)。指定列中指定行鍵范圍的數(shù)據(jù)任務(wù)實(shí)施

實(shí)施步驟6、刪除數(shù)據(jù)步驟1執(zhí)行如下語(yǔ)句,刪除表user_behavior中行鍵為100005、列名為“behavior_info:behavior_address”的數(shù)據(jù)。步驟2執(zhí)行如下語(yǔ)句,查詢行鍵為100005的數(shù)據(jù)。若查詢結(jié)果中不包含列名為“behavior_info:behavior_address”的數(shù)據(jù),則證明刪除成功。get'user_behavior','100005'delete'user_behavior','100005','behavior_info:behavior_address'使用HBaseJavaAPI操作用戶行為數(shù)據(jù)任務(wù)三HBaseJavaAPI是HBase生態(tài)系統(tǒng)中的一個(gè)重要組成部分,用于支持開(kāi)發(fā)者使用Java編程語(yǔ)言構(gòu)建基于HBase的應(yīng)用程序。HBaseJavaAPI提供了一種與HBase數(shù)據(jù)庫(kù)進(jìn)行交互的強(qiáng)有力方式,通過(guò)編寫(xiě)Java應(yīng)用程序可以執(zhí)行不同的HBase數(shù)據(jù)庫(kù)操作,從而滿足大規(guī)模數(shù)據(jù)處理和實(shí)時(shí)訪問(wèn)的需求。在使用HBaseJavaAPI操作用戶行為數(shù)據(jù)之前,我們先來(lái)學(xué)一下HBaseJavaAPI的基礎(chǔ)知識(shí),以及使用HBaseJavaAPI操作表和數(shù)據(jù)的方法。任務(wù)準(zhǔn)備問(wèn)題1:簡(jiǎn)述API的定義。全班學(xué)生以3~5人為一組,各組選出組長(zhǎng)。組長(zhǎng)組織組員掃碼觀看“API概述”視頻,討論并回答下列問(wèn)題。問(wèn)題2:簡(jiǎn)述常用的Java集成開(kāi)發(fā)環(huán)境。API概述一、HBaseJavaAPI概述API(applicationprogramminginterface,應(yīng)用程序接口)是一組定義了軟件組件或系統(tǒng)之間交互方式的規(guī)則和協(xié)議。通過(guò)API,開(kāi)發(fā)者可以在自己的應(yīng)用程序中調(diào)用其他軟件模塊或服務(wù)。HBaseJavaAPI是HBase官方提供的一組用于與HBase數(shù)據(jù)庫(kù)進(jìn)行交互的Java類和方法。通過(guò)JavaAPI,開(kāi)發(fā)者可以編寫(xiě)應(yīng)用程序來(lái)執(zhí)行創(chuàng)建表、禁用表、啟用表、刪除表、插入/更新數(shù)據(jù)、查詢數(shù)據(jù)和刪除數(shù)據(jù)等HBase數(shù)據(jù)庫(kù)操作。JavaAPI允許開(kāi)發(fā)者直接與HBase服務(wù)器通信,并采用更加高效和靈活的方式來(lái)訪問(wèn)和管理HBase中的數(shù)據(jù)。HBaseJavaAPI更適用于復(fù)雜的數(shù)據(jù)處理和分析任務(wù),如數(shù)據(jù)挖掘、數(shù)據(jù)分析、實(shí)時(shí)數(shù)據(jù)處理等。一、HBaseJavaAPI概述使用IDEA新建Java項(xiàng)目的方法。步驟1啟動(dòng)IDEA,在打開(kāi)的窗口右側(cè)選擇“新建項(xiàng)目”選項(xiàng)。使用JavaAPI操作HBase前,須先安裝并配置Java集成開(kāi)發(fā)環(huán)境。目前較為常用的Java集成開(kāi)發(fā)環(huán)境為IntelliJIDEA(以下簡(jiǎn)稱IDEA),它提供了豐富的功能和工具,可以幫助開(kāi)發(fā)者更加高效地編寫(xiě)和管理Java應(yīng)用程序。一、HBaseJavaAPI概述步驟2新建項(xiàng)目。打開(kāi)“新建項(xiàng)目”對(duì)話框,輸入項(xiàng)目名稱“HBaseTest”,設(shè)置項(xiàng)目的位置、語(yǔ)言、構(gòu)建系統(tǒng),并添加指定版本的JDK;最后單擊“創(chuàng)建”按鈕。新建項(xiàng)目小提示新建Java項(xiàng)目前,須先在Windows計(jì)算機(jī)中下載并安裝JDK,或者在“JDK”下拉列表中選擇“下載JDK”選項(xiàng),下載指定版本的JDK如圖所示,JDK版本要與虛擬機(jī)中安裝的JDK一致。下載完JDK后,在“JDK”下拉列表中選擇“添加JDK”選項(xiàng),接著選擇JDK在Windows計(jì)算機(jī)中的安裝路徑,將JDK添加到項(xiàng)目中。一、HBaseJavaAPI概述步驟3<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.4.14</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>2.4.14</version> </dependency></dependencies>添加使用Java訪問(wèn)HBase的相關(guān)依賴包。打開(kāi)HBaseTest項(xiàng)目中的XML文件“pom.xml”,在該文件的<project></project>標(biāo)簽中添加如下依賴項(xiàng)。一、HBaseJavaAPI概述步驟4單擊代碼編輯區(qū)中的“加載Maven更改”按鈕,或者在代碼編輯區(qū)中右擊,在彈出的快捷菜單中選擇“Maven”/“重新加載項(xiàng)目”選項(xiàng),將更改加載到Maven。小提示如果下載依賴的時(shí)間較長(zhǎng),讀者可以參考本書(shū)配套素材中的“前置環(huán)境的搭建”文檔,設(shè)置鏡像下載地址,加快下載速度。步驟5以記事本方式打開(kāi)本地計(jì)算機(jī)“C:\Windows\System32\drivers\etc”目錄中的“hosts”文件,在文件末尾添加HBase集群的IP地址與主機(jī)名映射關(guān)系。1Master2Worker13Worker2小提示如果“C:\Windows\System32\drivers\etc”目錄中沒(méi)有“hosts”文件,新建該文件即可。使用IDEA連接虛擬機(jī)中的集群時(shí),需要將虛擬機(jī)的網(wǎng)絡(luò)連接模式設(shè)置為“橋接模式”。二、表的基本操作在HBaseJavaAPI中,Admin類提供了許多操作HBase表的方法,創(chuàng)建表通過(guò)Admin類的createTable()方法實(shí)現(xiàn)。創(chuàng)建表的基本步驟如下。//創(chuàng)建HBase配置對(duì)象Configurationconf=HBaseConfiguration.create();conf.set("hbase.master","HMaster主機(jī)名"); //指定HMaster//指定Zookeeper集群conf.set("hbase.zookeeper.quorum","主機(jī)名1,主機(jī)名2,主機(jī)名3");//指定Zookeeper端口號(hào)conf.set("perty.clientPort","端口號(hào)");//創(chuàng)建HBase連接對(duì)象Connectionconnection=ConnectionFactory.createConnection(conf);1、創(chuàng)建表(1)獲取HBase連接,基本方法如下。二、表的基本操作Adminadmin=connection.getAdmin();(2)獲取Admin對(duì)象,基本方法如下。(3)定義HBase表的結(jié)構(gòu),基本方法如下。//創(chuàng)建TableName對(duì)象,指定表的名稱TableNametableName=TableName.valueOf("表名");//創(chuàng)建表描述符對(duì)象TableDescriptorBuildertableDescriptor=TableDescriptorBuilder.newBuilder(tableName);TableDescriptorBuilder類提供了一系列方法,用于設(shè)置表的屬性、配置和列族信息。高手點(diǎn)拔TableDescriptorBuilder類提供了一系列方法,有什么作用?二、表的基本操作//創(chuàng)建列族描述符對(duì)象,并指定要添加的列族的名稱ColumnFamilyDescriptorBuildercolumnFamily=ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("列族名"));//調(diào)用setColumnFamily()方法將指定的列族添加到表結(jié)構(gòu)中tableDescriptor.setColumnFamily(columnFamily.build());(4)添加列族,基本方法如下。(5)創(chuàng)建表。調(diào)用Admin類的createTable()方法創(chuàng)建表,基本方法如下。admin.createTable(tableDescriptor.build());(6)釋放資源和關(guān)閉連接。調(diào)用close()方法釋放資源和關(guān)閉連接,基本方法如下。admin.close();connection.close();二、表的基本操作在HBaseJavaAPI中,禁用表通過(guò)Admin類的disableTable()方法實(shí)現(xiàn),啟用表通過(guò)Admin類的enableTable()方法實(shí)現(xiàn)。禁用表和啟用表的核心步驟如下。TableNametableName=TableName.valueOf("表名");admin.disableTable(tableName); //禁用表admin.enableTable(tableName); //啟用表2、禁用表和啟用表在HBaseJavaAPI中,刪除表通過(guò)Admin類的deleteTable()方法實(shí)現(xiàn)。刪除表的核心步驟如下。(1)禁用表。(2)刪除表,基本方法如下。admin.deleteT

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論