国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hadoop(05) HBase2.5.5安裝和編程實(shí)踐指南

這篇具有很好參考價(jià)值的文章主要介紹了Hadoop(05) HBase2.5.5安裝和編程實(shí)踐指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

HBase是一個(gè)基于Apache Hadoop的分布式、可擴(kuò)展、面向列的NoSQL數(shù)據(jù)庫(kù)系統(tǒng)。它被設(shè)計(jì)用于處理大規(guī)模數(shù)據(jù)集,并提供快速的讀寫訪問性能。

以下是HBase的一些關(guān)鍵特點(diǎn)和概念:

  1. 列存儲(chǔ)結(jié)構(gòu):HBase使用列存儲(chǔ)結(jié)構(gòu),意味著數(shù)據(jù)被組織成行和列的形式。每個(gè)表可以有靈活的列族定義,而不需要預(yù)定義的模式。這使得HBase非常適合存儲(chǔ)稀疏的、結(jié)構(gòu)多變的數(shù)據(jù)。

  2. 分布式架構(gòu):HBase是一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng),可以在多個(gè)服務(wù)器上水平擴(kuò)展。數(shù)據(jù)被分割成多個(gè)區(qū)域(Regions),每個(gè)區(qū)域由一個(gè)RegionServer管理。這種分布式架構(gòu)提供了高可用性和容錯(cuò)性,并允許處理大規(guī)模數(shù)據(jù)集。

  3. 強(qiáng)一致性:HBase提供強(qiáng)一致性的讀寫操作。一旦數(shù)據(jù)寫入成功,它就會(huì)立即對(duì)所有客戶端可見。這對(duì)于需要實(shí)時(shí)訪問最新數(shù)據(jù)的應(yīng)用程序非常重要。

  4. 高性能:HBase具有優(yōu)化的讀寫性能。它使用內(nèi)存中的塊緩存(Block Cache)來(lái)加速讀取操作,并支持批量寫入和異步寫入操作,以提高寫入吞吐量。

  5. 自動(dòng)分區(qū)和負(fù)載均衡:HBase自動(dòng)管理數(shù)據(jù)的分區(qū)和負(fù)載平衡。當(dāng)數(shù)據(jù)量增加或節(jié)點(diǎn)發(fā)生故障時(shí),HBase會(huì)自動(dòng)重新平衡數(shù)據(jù),確保數(shù)據(jù)在集群中均勻分布。

  6. 彈性擴(kuò)展:HBase可以根據(jù)需求進(jìn)行水平擴(kuò)展。通過添加更多的RegionServer和節(jié)點(diǎn),可以擴(kuò)展存儲(chǔ)容量和處理能力,以適應(yīng)不斷增長(zhǎng)的數(shù)據(jù)需求。

HBase適用于需要處理大量結(jié)構(gòu)靈活、實(shí)時(shí)訪問和高可擴(kuò)展性的數(shù)據(jù)場(chǎng)景,如日志分析、實(shí)時(shí)數(shù)據(jù)處理、社交媒體應(yīng)用、物聯(lián)網(wǎng)等。它的緊密集成和兼容性與Apache Hadoop生態(tài)系統(tǒng)的其他組件(如Hadoop Distributed File System - HDFS和Apache Spark)使得它成為大數(shù)據(jù)處理和分析的重要工具之一。

一、HBase介紹

HBase是基于HDFS分布式文件系統(tǒng)去構(gòu)建的。換句話說,HBase的數(shù)據(jù)其實(shí)也是存儲(chǔ)在HDFS上的。

1.1 HDFS和HBase的區(qū)別

HDFS是文件系統(tǒng),而HBase是數(shù)據(jù)庫(kù),其實(shí)也沒啥可比性?!?span style="color:#ff9900;">可以把HBase當(dāng)做是MySQL,把HDFS當(dāng)做是硬盤。HBase只是一個(gè)NoSQL數(shù)據(jù)庫(kù),把數(shù)據(jù)存儲(chǔ)在HDFS上」。

數(shù)據(jù)庫(kù)是一個(gè)以某種 有組織的方式存儲(chǔ)的數(shù)據(jù)集合

扯了這么多,那我們?yōu)樯兑肏Base呢?HBase在HDFS之上提供了高并發(fā)的隨機(jī)寫和支持實(shí)時(shí)查詢,這是HDFS不具備的。HBase可以以低成本來(lái)存儲(chǔ)海量的數(shù)據(jù)并且支持高并發(fā)隨機(jī)寫和實(shí)時(shí)查詢。

1.2 Hbase的表結(jié)構(gòu)

如果以我們現(xiàn)有的數(shù)據(jù)庫(kù),比如MySQL舉例。存儲(chǔ)的結(jié)構(gòu)我們很容易看懂,其實(shí)就是一行一行數(shù)據(jù)。

id 姓名 年齡 職業(yè) 年薪 婚姻 身高
1 張三 24 180
2 李四 瓦工 500¥

如果將MySQL數(shù)據(jù)庫(kù)轉(zhuǎn)換成列式的數(shù)據(jù)庫(kù)來(lái)進(jìn)行存儲(chǔ),它的表現(xiàn)形式為:

id:1 姓名:張三
id:1 年齡:24
id:1 身高:180
id:2 姓名:李四
id:2 職業(yè):瓦工
id:2 年薪:500¥

通過以上的示例可以簡(jiǎn)單的發(fā)現(xiàn),無(wú)非就是把每列抽出來(lái),然后關(guān)聯(lián)上Id。?很明顯以前我們一行記錄多個(gè)屬性(列),有部分的列是空缺的,但是我們還是需要空間去存儲(chǔ)?,F(xiàn)在把這些列全部拆開,有什么我們就存什么,這樣空間就能被我們充分利用。這種形式的數(shù)據(jù)更像是Key-Value,那我們?cè)撛趺蠢斫釮Base所謂的列式存儲(chǔ)和Key-Value結(jié)構(gòu)呢?

1.4 Hbase的數(shù)據(jù)模型

在看HBase數(shù)據(jù)模型的時(shí)候,其實(shí)最好還是不要用「關(guān)系型數(shù)據(jù)庫(kù)」的知識(shí)去理解它。

HBase里邊也有表、行和列的概念。

  • 表沒什么好說的,就是一張表
  • 一行數(shù)據(jù)由一個(gè)行鍵一個(gè)或多個(gè)相關(guān)的列以及它的值所組成

在HBase里邊,定位一行數(shù)據(jù)會(huì)有一個(gè)唯一的值,這個(gè)叫做行鍵(RowKey)。而在HBase的列不是我們?cè)陉P(guān)系型數(shù)據(jù)庫(kù)所想象中的列。

HBase的列(Column)都得歸屬到列族(Column Family)中。在HBase中用列修飾符(Column Qualifier)來(lái)標(biāo)識(shí)每個(gè)列。

在HBase里邊,先有列族,后有列。

什么是列族?可以簡(jiǎn)單理解為:列的屬性類別

什么是列修飾符?先有列族后有列,在列族下用列修飾符來(lái)標(biāo)識(shí)一列。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

可以通過在里面放入更加具體的值來(lái)觀察:

?hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

數(shù)據(jù)寫到HBase的時(shí)候都會(huì)被記錄一個(gè)時(shí)間戳,這個(gè)時(shí)間戳被我們當(dāng)做一個(gè)版本。比如說,我們修改或者刪除某一條的時(shí)候,本質(zhì)上是往里邊新增一條數(shù)據(jù),記錄的版本加一了而已。?在讀的時(shí)候按照時(shí)間戳讀最新的記錄。在外界「看起來(lái)」就是把這條記錄改了。

1.3 Hbase的運(yùn)行模式

HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),源于Google的一篇論文《BigTable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)》。HBase以表的形式存儲(chǔ)數(shù)據(jù),表有行和列組成,列劃分為若干個(gè)列族/列簇(column family)。欲了解HBase的官方資訊,請(qǐng)?jiān)L問[HBase官方網(wǎng)站](http://hbase.apache.org/)。
HBase的運(yùn)行有三種模式:?jiǎn)螜C(jī)模式、偽分布式模式、分布式模式。
單機(jī)模式:在一臺(tái)計(jì)算機(jī)上安裝和使用HBase,不涉及數(shù)據(jù)的分布式存儲(chǔ);

偽分布式模式:在一臺(tái)計(jì)算機(jī)上模擬一個(gè)小的集群;

分布式模式:使用多臺(tái)計(jì)算機(jī)實(shí)現(xiàn)物理意義上的分布式存儲(chǔ)。

這里出于學(xué)習(xí)目的,我們只重點(diǎn)討論單機(jī)模式和偽分布式模式。

本教程運(yùn)行環(huán)境是在Debain-64位系統(tǒng)下(此教程為Debian11-7),HBase版本為Hbase-2.5.5,這是目前已經(jīng)發(fā)行的已經(jīng)編譯好的穩(wěn)定的版本,帶有src的文件是未編譯的版本,這里我們只要下載bin版本Hbase-2.5.5-bin.tar.gz就好了。

點(diǎn)擊此處下載 Hbase2.5.5 穩(wěn)定版本

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

?hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

文件區(qū)別:

  1. hbase-2.5.5-bin.tar.gz: 這是 HBase 的二進(jìn)制發(fā)行版。它包含了編譯好的二進(jìn)制文件,可以直接使用,而無(wú)需進(jìn)行編譯。這個(gè)發(fā)行版適用于大多數(shù)用戶,尤其是那些只需要運(yùn)行 HBase 而不需要進(jìn)行源代碼級(jí)別的修改的用戶。

  2. hbase-2.5.5-client-bin.tar.gz: 這是 HBase 的客戶端二進(jìn)制發(fā)行版。它包含了僅限客戶端使用的二進(jìn)制文件,沒有包含 HBase 的服務(wù)端組件。這個(gè)發(fā)行版適用于那些只需要在客戶端進(jìn)行 HBase 操作的用戶,而不需要在本地運(yùn)行 HBase 服務(wù)。

  3. hbase-2.5.5-hadoop3-bin.tar.gz: 這是 HBase 針對(duì) Hadoop 3.x 版本的二進(jìn)制發(fā)行版。它適用于與 Hadoop 3.x 版本集成使用的用戶。這個(gè)發(fā)行版包含了與 Hadoop 3.x 版本兼容的二進(jìn)制文件。

  4. hbase-2.5.5-hadoop3-client-bin.tar.gz: 這是 HBase 針對(duì) Hadoop 3.x 版本的客戶端二進(jìn)制發(fā)行版。它適用于只需要在客戶端與 Hadoop 3.x 版本集成使用的用戶,不需要在本地運(yùn)行 HBase 服務(wù)。

  5. hbase-2.5.5-src.tar.gz: 這是 HBase 的源代碼發(fā)行版。它包含了 HBase 的完整源代碼,可以用于進(jìn)行修改、編譯和調(diào)試。這個(gè)發(fā)行版適用于那些需要在源代碼級(jí)別進(jìn)行擴(kuò)展或修改 HBase 的用戶。

在下載此文件之后,可以使用xftp工具將該文件上傳到虛擬機(jī)系統(tǒng)中即可。?

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

二、安裝并配置HBase2.5.5?

在安裝HBase之前,請(qǐng)確保你的電腦已經(jīng)安裝了Hadoop3.3.5,由于HBase對(duì)Hadoop具有版本依賴性,所以,在安裝HBase2.5.4時(shí),一定要首先安裝Hadoop3.3.6。(點(diǎn)擊此處?查看Hadoop3.3.6的安裝方法)因?yàn)楦鶕?jù)之前的學(xué)習(xí)路線,我已經(jīng)安裝 Hadoop集群 ,此處是在master節(jié)點(diǎn)上進(jìn)行安裝(即前面學(xué)習(xí)中提到的 hadoop01 主機(jī))。

在將HBase2.5.5 通過xftp上傳到虛擬機(jī)的hadoop01 的/software文件夾之后。

2.1 解壓安裝包HBase-2.5.5-bin.tar.gz至路徑 /usr/local

命令如下:

cd /software/
ls -l
sudo tar -zvxf hbase-2.5.5-bin.tar.gz -C /usr/local   # 如果此時(shí)是非特權(quán)用戶的身份,需要在命令前面加上sudo

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

2.2 切換目錄命令,把hbase-2.5.5目錄權(quán)限賦予給hadoop用戶

命令如下:?

cd /usr/local/
sudo chown -R hadoop ./hbase-2.5.5/

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

2.3 配置環(huán)境變量
將hbase-2.5.5下的bin目錄添加到path中,這樣,啟動(dòng)hbase就無(wú)需到/usr/local/hbase目錄下,大大的方便了hbase的使用。教程下面的部分還是切換到了/usr/local/hbase-2.5.5目錄操作,有助于初學(xué)者理解運(yùn)行過程,熟練之后可以不必切換。
編輯~/.bashrc文件

cd ~
vim ~/.bashrc

如果沒有引入過PATH請(qǐng)?jiān)趡/.bashrc文件尾行添加如下內(nèi)容:

export HBASE_HOME=/usr/local/hbase-2.5.5
export PATH=$PATH:$HBASE_HOME/bin

由于在之前的教程中安裝過Java和Hadoop,并且配置過PATH,因此只需要在原本的export PATH的基礎(chǔ)上添加 $HBASE_HOME/bin:,這里的“:”是分隔符。如下圖:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)?添加之后的如下圖所示:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

保存并退出?

2.3 執(zhí)行source命令使上述配置在當(dāng)前終端立即生效

命令如下:

source ~/.bashrc

2.4 查看Hbase 的版本

命令如下:

hbase version

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)此處出現(xiàn)一條警告信息(SLF4J: Class path contains multiple SLF4J bindings.),可以點(diǎn)擊此處查看解決辦法。

看到輸出版本消息表示HBase已經(jīng)安裝成功,接下來(lái)將分別進(jìn)行HBase單機(jī)模式和偽分布式模式的配置。

三、HBase配置

HBase作為一個(gè)分布式的開源NoSQL數(shù)據(jù)庫(kù),它有三種運(yùn)行模式,分別是單機(jī)模式(Standalone Mode)、偽分布式模式(Pseudo-Distributed Mode)和完全分布式模式(Fully-Distributed Mode)。

  1. 單機(jī)模式(Standalone Mode):
    在單機(jī)模式下,HBase運(yùn)行在單個(gè)節(jié)點(diǎn)上,所有的HBase組件(包括HMaster和HRegionServer)都在同一個(gè)JVM進(jìn)程中運(yùn)行。這種模式適用于在開發(fā)和測(cè)試環(huán)境中快速搭建和運(yùn)行HBase,但不具備分布式的優(yōu)勢(shì)和可擴(kuò)展性。

  2. 偽分布式模式(Pseudo-Distributed Mode):
    在偽分布式模式下,HBase模擬了分布式環(huán)境,但實(shí)際上仍然在單個(gè)節(jié)點(diǎn)上運(yùn)行。每個(gè)HBase組件都在獨(dú)立的JVM進(jìn)程中運(yùn)行,包括一個(gè)HMaster和一個(gè)或多個(gè)HRegionServer。這種模式適用于在本地機(jī)器上模擬和測(cè)試分布式的HBase環(huán)境,通常用于開發(fā)和學(xué)習(xí)目的。

  3. 完全分布式模式(Fully-Distributed Mode):
    在完全分布式模式下,HBase運(yùn)行在一個(gè)真正的分布式環(huán)境中,通過多臺(tái)物理或虛擬機(jī)器組成。HBase集群包括一個(gè)HMaster節(jié)點(diǎn)和多個(gè)HRegionServer節(jié)點(diǎn),數(shù)據(jù)被分布存儲(chǔ)在不同的RegionServer上。這種模式適用于生產(chǎn)環(huán)境,可以提供高可用性、容錯(cuò)性和水平擴(kuò)展性,并支持大規(guī)模數(shù)據(jù)存儲(chǔ)和處理。

選擇適當(dāng)?shù)哪J饺Q于你的使用場(chǎng)景和需求。在開發(fā)和測(cè)試階段,可以使用單機(jī)模式或偽分布式模式進(jìn)行快速驗(yàn)證和開發(fā)。在實(shí)際生產(chǎn)環(huán)境中,通常會(huì)使用完全分布式模式來(lái)構(gòu)建可靠的、高性能的HBase集群。

作為學(xué)習(xí),我們將重點(diǎn)討論單機(jī)模式和偽分布式模式。
以下先決條件很重要,比如沒有配置JAVA_HOME環(huán)境變量,就會(huì)報(bào)錯(cuò)。
- jdk
- Hadoop( 單機(jī)模式不需要,偽分布式模式和分布式模式需要)
- SSH

以上三者如果沒有安裝,請(qǐng)回到?Hadoop(01) Hadoop3.3.6安裝教程,單機(jī)/偽分布式配置?參考如何安裝。

3.1 單機(jī)模式

3.1.1 配置/usr/local/hbase-2.5.5/conf/hbase-env.sh

配置JAVA環(huán)境變量,并添加配置HBASE_MANAGES_ZK為true。如果此前配置過JAVA_HOME可以輸入下列命令顯示其路徑。

echo $JAVA_HOME

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

配置HBASE_MANAGES_ZK為true,表示由hbase自己管理zookeeper,不需要單獨(dú)的zookeeper。hbase-env.sh中本來(lái)就存在該變量的配置,只需要?jiǎng)h除前面的#并修改配置內(nèi)容即可(#代表注釋),用vi命令打開并編輯hbase-env.sh,命令如下:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

保存后退出。

3.1.2?配置/usr/local/hbase-2.5.5/conf/hbase-site.xml

打開并編輯hbase-site.xml,命令如下:

vim /usr/local/hbase-2.5.5/conf/hbase-site.xml

在啟動(dòng)HBase前需要設(shè)置屬性hbase.rootdir,用于指定HBase數(shù)據(jù)的存儲(chǔ)位置,因?yàn)槿绻辉O(shè)置的話,hbase.rootdir默認(rèn)為/tmp/hbase-${user.name},這意味著每次重啟系統(tǒng)都會(huì)丟失數(shù)據(jù)。此處設(shè)置為HBase安裝目錄下的hbase-tmp文件夾即(/usr/local/hbase-2.5.5/hbase-tmp),添加配置如下:?

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase-2.5.5/hbase-tmp</value>
        </property>
</configuration>

?修改前:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

?修改后:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

3.1.3 測(cè)試運(yùn)行

首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動(dòng)HBase。命令如下:

cd /usr/local/hbase-2.5.5/bin/
./start-hbase.sh  # 啟動(dòng)HBase
./hbase shell   # 打開shell命令行模式,用戶可以通過輸入shell命令操作HBase數(shù)據(jù)庫(kù)

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

使用exit可以退出shell命令行模式。

停止HBase運(yùn)行,命令如下:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

注意:如果在操作HBase的過程中發(fā)生錯(cuò)誤,可以通過{HBASE_HOME}目錄(/usr/local/hbase-2.5.5)下的logs子目錄中的日志文件查看錯(cuò)誤原因。?

3.2 偽分布式模式

3.2.1?配置/usr/local/hbase-2.5.5/conf/hbase-env.sh

配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK。HBASE_CLASSPATH設(shè)置為本機(jī)HBase安裝目錄下的conf目錄(即/usr/local/hbase-2.5.5/conf)命令如下:

cd /usr/local/hbase-2.5.5/conf/
vim hbase-env.sh 

在hbase-env.sh中添加下列命令:

 export HBASE_MANAGES_ZK=true
 export JAVA_HOME=/usr/local/java/jdk-11.0.20.1+1
 export HBASE_CLASSPATH=/usr/local/hbase-2.5.5/conf

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

3.2.2 配置/usr/local/hbase-2.5.5/conf/hbase-site.xml

用命令vi打開并編輯hbase-site.xml,命令如下:

/usr/local/hbase-2.5.5/conf/hbase-site.xml

修改hbase.rootdir,指定HBase數(shù)據(jù)在HDFS上的存儲(chǔ)路徑;將屬性hbase.cluter.distributed設(shè)置為true。假設(shè)當(dāng)前Hadoop集群運(yùn)行在偽分布式模式下,在本機(jī)上運(yùn)行,且NameNode運(yùn)行在9000端口。

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <!-- value 的 URL 地址請(qǐng)與hadoop配置文件core-site.xml
                 中的 fs.default.name 保持一致,然后再加上 /hbase。
                 此處建議用主機(jī)名(不建議直接填寫 IP 地址,否則可能出錯(cuò))-->
                <value>hdfs://hadoop01:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
</configuration>

修改前:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

修改后:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

hbase.rootdir指定HBase的存儲(chǔ)目錄;

hbase.cluster.distributed設(shè)置集群處于分布式模式.
另外,上面配置文件中,hbase.unsafe.stream.capability.enforce這個(gè)屬性的設(shè)置,是為了避免出現(xiàn)啟動(dòng)錯(cuò)誤。也就是說,如果沒有設(shè)置hbase.unsafe.stream.capability.enforce為false,那么,在啟動(dòng)HBase以后,會(huì)出現(xiàn)無(wú)法找到HMaster進(jìn)程的錯(cuò)誤,啟動(dòng)后查看系統(tǒng)啟動(dòng)日志(/usr/local/hbase-2.5.5/logs/hbase-hadoop-master-ubuntu.log),會(huì)發(fā)現(xiàn)如下錯(cuò)誤:

?2023-10-23?11:05:53,916 ERROR [master/localhost:16000:becomeActiveMaster] master.HMaster: Failed to become active master
java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.

3.3.3 測(cè)試運(yùn)行HBase

①?登陸ssh,由于之前設(shè)置了無(wú)密碼登陸,因此這里不需要密碼;再切換目錄至/usr/local/hadoop-3.3.6 ;再啟動(dòng)hadoop,如果已經(jīng)啟動(dòng)hadoop請(qǐng)?zhí)^此步驟。命令如下:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

一般來(lái)說,輸入命令jps,如果能看到NameNode,DataNode和SecondaryNameNode都已經(jīng)成功啟動(dòng),表示Hadoop啟動(dòng)成功。但是由于我們?cè)诖饲暗?Hadoop(01) Hadoop3.3.6安裝教程,單機(jī)/偽分布式配置 教程中的 偽分布式配置的小節(jié)中 僅將hadoop01作為namenode來(lái)進(jìn)行的配置,所以在hadoop01主機(jī)上運(yùn)行 jps 命令并不會(huì)顯示datanode,因?yàn)閐atanode是配置在hadoop02 主機(jī)上。如果想要查看datanode是否正常啟動(dòng),可以hadoop02主機(jī)上輸入 jps,如下所示:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

②?切換目錄至/usr/local/hbase-2.5.5 ;再啟動(dòng)HBase.命令如下:?

cd /usr/local/hbase-2.5.5/bin/
./start-hbase.sh 
jps

輸入jps后,看到一下界面表示啟動(dòng)hbase成功。?

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

以上的提示信息表示:

  1. 首先,看到一個(gè)關(guān)于主機(jī)身份驗(yàn)證的提示,要求確認(rèn)連接。這是SSH連接到本地主機(jī)(127.0.0.1)時(shí)的一般行為??梢暂斎?code>yes以繼續(xù)連接。

  2. 接下來(lái),輸出顯示成功連接到主機(jī)(127.0.0.1),并開始了一系列操作。

    running zookeeper 啟動(dòng)了ZooKeeper服務(wù),它是HBase的依賴組件之一。ZooKeeper用于協(xié)調(diào)和管理HBase集群中的各個(gè)節(jié)點(diǎn)。
    running master 啟動(dòng)了HBase的Master節(jié)點(diǎn),Master節(jié)點(diǎn)負(fù)責(zé)管理和協(xié)調(diào)整個(gè)HBase集群的操作。
    running regionserver 啟動(dòng)了HBase的RegionServer節(jié)點(diǎn),RegionServer節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)和處理HBase表中的數(shù)據(jù)。
  3. 啟動(dòng)過程中的日志輸出被重定向到了相應(yīng)的日志文件中,例如hbase-hadoop-zookeeper-hadoop01.out、hbase-hadoop-master-hadoop01.outhbase-hadoop-regionserver-hadoop01.out。你可以查看這些日志文件以獲取更多關(guān)于啟動(dòng)過程的詳細(xì)信息。

進(jìn)入hbase的shell界面,命令如下:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

3.3.4 停止HBase運(yùn)行

啟動(dòng)關(guān)閉Hadoop和HBase的順序一定是:
啟動(dòng)Hadoop—>啟動(dòng)HBase—>關(guān)閉HBase—>關(guān)閉Hadoop

./stop-hbase.sh 
cd /usr/local/hadoop-3.3.6/sbin/
./stop-dfs.sh 

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

注意:如果在操作HBase的過程中發(fā)生錯(cuò)誤,可以通過{HBASE_HOME}目錄(/usr/local/hbase)下的logs子目錄中的日志文件查看錯(cuò)誤原因。

四、編程實(shí)踐

4.1 Hbase 的shell命令

在使用hbase shell命令之前,要先啟動(dòng)hadoop和hbase,啟動(dòng)命令如上述。

4.1.1 創(chuàng)建表

hbase中用create命令創(chuàng)建表,具體如下:

create 'student','Sname','Ssex','Sage','Sdept','course'

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

?參數(shù)說明:創(chuàng)建一個(gè)名為student的表,以及定義一些列族(Sname、Ssex、Sage、Sdeptcourse

因?yàn)镠Base的表中會(huì)有一個(gè)系統(tǒng)默認(rèn)的屬性作為行鍵,無(wú)需自行創(chuàng)建,默認(rèn)為put命令操作中表名后第一個(gè)數(shù)據(jù)。創(chuàng)建完“student”表后,可通過describe命令查看“student”表的基本信息。命令執(zhí)行截圖如下:

describe 'student'

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

4.1.2 hbase數(shù)據(jù)庫(kù)的基本操作

本小節(jié)主要介紹HBase的增、刪、改、查操作。在添加數(shù)據(jù)時(shí),HBase會(huì)自動(dòng)為添加的數(shù)據(jù)添加一個(gè)時(shí)間戳,故在需要修改數(shù)據(jù)時(shí),只需直接添加數(shù)據(jù),HBase即會(huì)生成一個(gè)新的版本,從而完成“改”操作,舊的版本依舊保留,系統(tǒng)會(huì)定時(shí)回收垃圾數(shù)據(jù),只留下最新的幾個(gè)版本,保存的版本數(shù)可以在創(chuàng)建表的時(shí)候指定。

①?添加數(shù)據(jù)

hbase中用put命令添加數(shù)據(jù),注意:一次只能為一個(gè)表的一行數(shù)據(jù)的一個(gè)列,也就是一個(gè)單元格添加一個(gè)數(shù)據(jù),所以直接用shell命令插入數(shù)據(jù)效率很低,在實(shí)際應(yīng)用中,一般都是利用編程操作數(shù)據(jù)。
當(dāng)運(yùn)行命令:put ‘student’,’95001’,’Sname’,’LiYing’時(shí),即為student表添加了學(xué)號(hào)為95001,名字為L(zhǎng)iYing的一行數(shù)據(jù),其行鍵為95001。

put 'student','95001','Sname','LiYing'

參數(shù)說明:?在student表的行鍵為95001的行中,插入一個(gè)名為Sname的列,并設(shè)置其值為LiYing。此處的行鍵可以代指學(xué)生的學(xué)號(hào),也可表示為student表添加了學(xué)號(hào)為95001,名字為L(zhǎng)iYing的一行數(shù)據(jù),其行鍵為95001。

補(bǔ)充:在HBase中,行鍵是用于唯一標(biāo)識(shí)表中每一行數(shù)據(jù)的標(biāo)識(shí)符。行鍵是一個(gè)字節(jié)數(shù)組,可以是任意長(zhǎng)度的二進(jìn)制數(shù)據(jù)。在HBase表中,行鍵是按照字典順序進(jìn)行排序的。

put 'student','95001','course:math','80'

?參數(shù)說明:在student表的行鍵為95001的行中,在?course?列族下存儲(chǔ)一個(gè)名為math的列,并設(shè)置其屬性值為80。

put 'student','95001','course:English','98'

參數(shù)說明:在?student?表的行鍵為95001的行中,在?course?列族下存儲(chǔ)一個(gè)名為?English?的列,并將其屬性值設(shè)置為?98。

put 'student','95001','Ssex','Male'

?參數(shù)說明:在student表的行鍵為95001的行中,插入一個(gè)名為Ssex的列,并設(shè)置其值為Male。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

② 查看數(shù)據(jù)

HBase中有兩個(gè)用于查看數(shù)據(jù)的命令:1. get命令,用于查看表的某一行數(shù)據(jù);2. scan命令用于查看某個(gè)表的全部數(shù)據(jù)

get命令:

get 'student','95001'

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

?scan命令:

scan 'student'

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

③ 刪除數(shù)據(jù)

在HBase中用delete以及deleteall命令進(jìn)行刪除數(shù)據(jù)操作,它們的區(qū)別是:1. delete用于刪除一個(gè)數(shù)據(jù),是put的反向操作;2. deleteall操作用于刪除一行數(shù)據(jù)。

delete命令:

delete 'student','95001','course:English'

刪除之前:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

刪除之后:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

deleteall命令:

deleteall 'student','95001'

刪除之前:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

刪除之后:

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

④ 刪除表

刪除表有兩步,第一步先讓該表不可用,第二步刪除表。

disable 'student'  
drop 'student'

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

⑤ 查詢表的歷史數(shù)據(jù)?

在 Hbase 中,表的歷史數(shù)據(jù)通常是通過版本控制來(lái)實(shí)現(xiàn)的。每次對(duì)表執(zhí)行寫操作時(shí),HBase 會(huì)為每個(gè)單元格(cell)維護(hù)多個(gè)版本的數(shù)據(jù)。可以通過設(shè)置適當(dāng)?shù)陌姹緮?shù)來(lái)控制保存的歷史數(shù)據(jù)量。

注意:保存的歷史數(shù)據(jù)數(shù)量可能會(huì)影響存儲(chǔ)空間的使用和查詢性能。因此,應(yīng)根據(jù)實(shí)際需求和系統(tǒng)資源進(jìn)行適當(dāng)?shù)呐渲谩?

step1

在創(chuàng)建表的時(shí)候,指定保存的版本數(shù)(假設(shè)指定為5)

create 'teacher',{NAME=>'username',VERSIONS=>5}

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

step2

插入數(shù)據(jù)然后更新數(shù)據(jù),使其產(chǎn)生歷史版本數(shù)據(jù),注意:這里插入數(shù)據(jù)和更新數(shù)據(jù)都是用put命令

put 'teacher','91001','username','Mary'
put 'teacher','91001','username','Mary1'
put 'teacher','91001','username','Mary2'
put 'teacher','91001','username','Mary3'
put 'teacher','91001','username','Mary4'  
put 'teacher','91001','username','Mary5'
hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)?step3

查詢時(shí),指定查詢的歷史版本數(shù)。默認(rèn)會(huì)查詢出最新的數(shù)據(jù)。(有效取值為1到5)?

要查詢表的歷史數(shù)據(jù),可以使用?get?命令并指定列族和列限定符,并在命令中添加?VERSIONS?關(guān)鍵字,后接要返回的版本數(shù)。例如:(有效取值為1到5)?

get 'teacher','91001',{COLUMN=>'username',VERSIONS=>5}

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

參數(shù)說明:返回 teacher 表中?91001?行的 username?列的最近 5 個(gè)版本的數(shù)據(jù)。?

也可以使用?scan?命令來(lái)掃描整個(gè)表或特定的行范圍,并通過設(shè)置?VERSIONS?選項(xiàng)來(lái)獲取多個(gè)版本的數(shù)據(jù)。例如:

scan 'student', {VERSIONS => 3}

參數(shù)說明:?掃描整個(gè)?student?表,并返回每個(gè)單元格的最近 3 個(gè)版本的數(shù)據(jù)。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

⑥?退出Hbase數(shù)據(jù)庫(kù)表操作

最后退出數(shù)據(jù)庫(kù)操作,輸入exit命令即可退出,注意:這里退出HBase數(shù)據(jù)庫(kù)是退出對(duì)數(shù)據(jù)庫(kù)表的操作,而不是停止啟動(dòng)HBase數(shù)據(jù)庫(kù)后臺(tái)運(yùn)行。

exit

4.2 Hbase Java API編程實(shí)踐

4.2.1 在Linux中安裝IDEA開發(fā)工具

本實(shí)例采用IDEA開發(fā)工具,虛擬機(jī)中如何安裝IDEA 開發(fā)工具,參考教程 Linux(04) Debian11中安裝IDEA教程(無(wú)GNOME)。

通過將IDEA安裝到 /opt/idea-IC-23.2/bin 路徑之后,可以通過以下命令啟動(dòng)IDEA

cd /opt/idea-IC-23.2/bin
./idea.sh

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)?啟動(dòng)之后,新建一個(gè)名為HBase_Example的java工程。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

4.2.2 為項(xiàng)目添加需要用到的JAR包??

為了編寫一個(gè)能夠與HBase交互的Java應(yīng)用程序,需要在這個(gè)界面中加載該Java工程所需要用到的JAR包,這些JAR包中包含了可以訪問HBase的Java API。這些JAR包都位于Linux系統(tǒng)的HBase安裝目錄的lib目錄下,也就是位于“/usr/local/hbase-2.5.5/lib”目錄下。

在 HBase 安裝目錄下的?/usr/local/hbase-2.5.5/lib?文件夾通常包含 HBase 的相關(guān)庫(kù)文件和依賴項(xiàng)。這些文件是 HBase 運(yùn)行所需的核心組件和第三方庫(kù)。除了上述提到的主要內(nèi)容外,還有另外六個(gè)目錄:

  1. client-facing-thirdparty:這個(gè)目錄通常包含 HBase 與客戶端交互時(shí)所需的第三方庫(kù)文件。這些庫(kù)文件用于支持與 HBase 進(jìn)行交互的客戶端應(yīng)用程序,例如 Java 應(yīng)用程序或其他編程語(yǔ)言的客戶端。

  2. jdk11:這個(gè)目錄可能包含適用于 JDK 11 的特定版本的 HBase 庫(kù)文件。由于不同的 JDK 版本可能存在兼容性差異,HBase 可能提供特定于某個(gè) JDK 版本的庫(kù)文件。

  3. ruby:這個(gè)目錄可能包含與 Ruby 編程語(yǔ)言相關(guān)的庫(kù)文件。HBase 提供了一些用于與 Ruby 客戶端進(jìn)行交互的接口和工具。

  4. shaded-clients:這個(gè)目錄通常包含 HBase 為不同的客戶端環(huán)境提供的 shaded(陰影)客戶端庫(kù)文件。這些庫(kù)文件將 HBase 的依賴項(xiàng)打包在一起,以便客戶端應(yīng)用程序可以更輕松地使用 HBase。

  5. trace:這個(gè)目錄可能包含與 HBase 分布式跟蹤功能相關(guān)的庫(kù)文件。HBase 的分布式跟蹤功能用于跟蹤和分析請(qǐng)求在集群中的執(zhí)行情況。

  6. zkcli:這個(gè)目錄可能包含與 HBase ZooKeeper 客戶端相關(guān)的庫(kù)文件和工具。ZooKeeper 用于 HBase 的協(xié)調(diào)和配置管理,zkcli?目錄可能包含與 ZooKeeper 客戶端交互的命令行工具和庫(kù)文件。

本次的編程實(shí)踐中我們僅引入 核心庫(kù) 和?client-facing-thirdparty ,其余幾個(gè)包均不涉及,如有需要可以按照下面的方法建立依賴。

① 創(chuàng)建libs文件夾

在該java工程中創(chuàng)建libs文件,如果已經(jīng)存在libs文件夾,則可以直接進(jìn)行下一步。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

② 復(fù)制JAR文件

將需要導(dǎo)入的jar(在 hbase的安裝目錄下lib文件中,包括核心庫(kù)的jar包和 client-facing-thirdparty?復(fù)制粘貼到libs文件夾中。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

復(fù)制到HBase_Example項(xiàng)目中的libs文件夾中

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

查看一下剛復(fù)制到libs文件夾中的狀態(tài),暫時(shí)不要點(diǎn)開

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

③ 建立該java工程對(duì)libs文件夾的依賴

在IDEA中右鍵單擊項(xiàng)目,選擇'Open Module Settings”(或者"Project Structure"”),在彈出的窗口中選擇'Modules”,然后選擇“Dependencies”選項(xiàng)卡。
點(diǎn)擊“+"按鈕,選擇"JARs or directories”,然后在彈出的窗口中選擇剛才放置jar包的libs文件夾,然后點(diǎn)擊OK(我在此處直接選擇的是文件夾)。

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

如果是這個(gè)狀態(tài)表示依賴建立成功:??

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

這樣,導(dǎo)入jar包的操作就完成了?,F(xiàn)在你可以直接編寫或運(yùn)行代碼了。如果需要進(jìn)一步優(yōu)化導(dǎo)包設(shè)置,可以根據(jù)IDEA的環(huán)境配置和插件進(jìn)行相應(yīng)的調(diào)整(如Maven)。?

4.2.3 新建java代碼程序?

ExampleForHBase.java代碼內(nèi)容具體如下:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
 
import java.io.IOException;
public class ExampleForHBase {
    public static Configuration configuration;
    public static Connection connection;
    public static Admin admin;
    public static void main(String[] args)throws IOException{
        init();
        createTable("student",new String[]{"score"});
        insertData("student","zhangsan","score","English","69");
        insertData("student","zhangsan","score","Math","86");
        insertData("student","zhangsan","score","Computer","77");
        getData("student", "zhangsan", "score","English");
        close();
    }
 
    public static void init(){
        configuration  = HBaseConfiguration.create();
        configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");
        try{
            connection = ConnectionFactory.createConnection(configuration);
            admin = connection.getAdmin();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void close(){
        try{
            if(admin != null){
                admin.close();
            }
            if(null != connection){
                connection.close();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void createTable(String myTableName,String[] colFamily) throws IOException {
        TableName tableName = TableName.valueOf(myTableName);
        if(admin.tableExists(tableName)){
            System.out.println("talbe is exists!");
        }else {
            TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
            for(String str:colFamily){
                ColumnFamilyDescriptor family = 
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build();
                tableDescriptor.setColumnFamily(family);
            }
            admin.createTable(tableDescriptor.build());
        } 
    }
 
    public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { 
        Table table = connection.getTable(TableName.valueOf(tableName));
        Put put = new Put(rowKey.getBytes());
        put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes());
        table.put(put);
        table.close(); 
    }
 
    public static void getData(String tableName,String rowKey,String colFamily, String col)throws  IOException{ 
        Table table = connection.getTable(TableName.valueOf(tableName));
        Get get = new Get(rowKey.getBytes());
        get.addColumn(colFamily.getBytes(),col.getBytes());
        Result result = table.get(get);
        System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes())));
        table.close(); 
    }
}

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

注意:在開始運(yùn)行程序之前,需要啟動(dòng)HDFS和HBase。?

然后開始編譯運(yùn)行

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

程序運(yùn)行成功以后,如上圖所示,會(huì)在運(yùn)行結(jié)果中出現(xiàn)“69”。

在上面的console控制臺(tái)中的警告信息為:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/home/hadoop/workspace/HBase_Example/libs/hadoop-auth-2.10.2.jar) to method sun.security.krb5.Config.getInstance()
WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

這些警告信息是關(guān)于非法反射訪問操作的提示。在 Java 9 及更高版本中,Java 引入了模塊化系統(tǒng),限制了對(duì)內(nèi)部 API 的訪問。當(dāng)使用反射訪問內(nèi)部 API 時(shí),可能會(huì)觸發(fā)這些警告。 解決方案可以參考?啟動(dòng)hadoop報(bào)出一串警告?,因?yàn)閷?duì)程序沒有太大的影響,此處并未測(cè)試該方案是否可行。

4.2.4 查看運(yùn)行的結(jié)果

在HBase Shell交互式環(huán)境中,使用如下命令查看student表是否創(chuàng)建成功:

hbase> list

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

在HBase Shell交互式環(huán)境中,使用如下命令查看student表中的數(shù)據(jù):?

hbase> scan ‘student’

hadoop the procedure wal relies on the ability to hsync for proper operation,Hadoop,hadoop,大數(shù)據(jù),分布式,1024程序員節(jié)

參考資料

HBase(Hadoop3.1.2 HBase2.2.4) 偽分布式安裝與配置-CSDN博客

我終于看懂了HBase,太不容易了... - 知乎 (zhihu.com)

Hbase 常用 shell 操作:增刪改查(create、put、delete、scan)_hbase shell put-CSDN博客

啟動(dòng)hadoop報(bào)出一串警告_please consider reporting this to the maintainers -CSDN博客?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-770769.html

到了這里,關(guān)于Hadoop(05) HBase2.5.5安裝和編程實(shí)踐指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Hadoop】創(chuàng)建Hadoop集群(3個(gè)節(jié)點(diǎn))—— 安裝部署一個(gè)3個(gè)節(jié)點(diǎn)構(gòu)成的hbase集群

    【Hadoop】創(chuàng)建Hadoop集群(3個(gè)節(jié)點(diǎn))—— 安裝部署一個(gè)3個(gè)節(jié)點(diǎn)構(gòu)成的hbase集群

    前言 此實(shí)驗(yàn)搭建3個(gè)虛擬節(jié)點(diǎn),一個(gè)mater,一個(gè)slave1,一個(gè)slave2 集群簡(jiǎn)介 HADOOP集群具體來(lái)說包含兩個(gè)集群:HDFS集群和YARN集群,兩者邏輯上分離,但在物理上常在一起。 HDFS集群負(fù)責(zé)海量數(shù)據(jù)的存儲(chǔ),集群中的角色主要有: NameNode、DataNode、SecondaryNode YARN集群負(fù)責(zé)海量數(shù)據(jù)運(yùn)算

    2024年02月08日
    瀏覽(21)
  • 虛擬機(jī)安裝hadoop,hbase(單機(jī)偽集群模式)

    虛擬機(jī)安裝hadoop,hbase(單機(jī)偽集群模式)

    工作中遇到了大數(shù)據(jù)方面的一些技術(shù)棧,沒有退路可言,只能去學(xué)習(xí)掌握它,就像當(dāng)初做爬蟲一樣(雖然很簡(jiǎn)單),在數(shù)據(jù)爆發(fā)的現(xiàn)在,傳統(tǒng)的數(shù)據(jù)庫(kù)mysql,oracle顯然在處理大數(shù)據(jù)量級(jí)的數(shù)據(jù)時(shí)顯得力不從心,所以有些特定的業(yè)務(wù)需要引進(jìn)能夠處理大數(shù)據(jù)量的數(shù)據(jù)庫(kù),hadoop提

    2024年02月04日
    瀏覽(17)
  • Hadoop安裝Hbase啟動(dòng)失敗報(bào)錯(cuò)解決方法

    Hadoop安裝Hbase啟動(dòng)失敗報(bào)錯(cuò)解決方法

    先進(jìn)入hbase文件目錄里看日志文件看看報(bào)什么錯(cuò)再具體解決: vim?/opt/module/hbase-1.3.3/logs/hbase-root-master-hadoop-single.log ?1.報(bào)錯(cuò)org.apache.hadoop.security.AccessControlException: Permission denied: user異常解決方法 1、第一種 在hdfs的配置文件中,將dfs.permissions修改為False(不推薦) 2、第二種 執(zhí)行

    2024年02月07日
    瀏覽(27)
  • 【hadoop】hbase的安裝部署以及相關(guān)操作(圖文詳解)

    【hadoop】hbase的安裝部署以及相關(guān)操作(圖文詳解)

    ? HBase是一種基于列存儲(chǔ)的分布式數(shù)據(jù)庫(kù)系統(tǒng),它能夠快速地存儲(chǔ)和處理大規(guī)模數(shù)據(jù)。與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)不同,HBase采用了分布式的架構(gòu),能夠?qū)崿F(xiàn)數(shù)據(jù)的高可靠性、高可擴(kuò)展性和高性能。在實(shí)際應(yīng)用中,正確地安裝和部署HBase集群是非常重要的。 在安裝hbase之前,需要虛

    2024年02月04日
    瀏覽(25)
  • 大數(shù)據(jù)技術(shù)原理與應(yīng)用實(shí)驗(yàn)指南——HBase編程實(shí)踐

    大數(shù)據(jù)技術(shù)原理與應(yīng)用實(shí)驗(yàn)指南——HBase編程實(shí)踐

    一、 實(shí)驗(yàn)?zāi)康?(1) 熟練使用HBase操作常用的Shell命令。 (2) 熟悉HBase操作常用的Java API。 二、 實(shí)驗(yàn)內(nèi)容 (1) 安裝HBase軟件。 (2) 編程實(shí)現(xiàn)指定功能,并利用Hadoop提供的Shell命令完成相同的任務(wù)(實(shí)現(xiàn)增、刪、改、查基本操作,統(tǒng)計(jì)表的行數(shù),打印表的記錄等操作)。

    2024年02月21日
    瀏覽(24)
  • HDFS編程實(shí)踐(Hadoop3.1.3)

    HDFS編程實(shí)踐(Hadoop3.1.3)

    1.目錄操作 在HDFS中為hadoop用戶創(chuàng)建一個(gè)用戶目錄 顯示HDFS中與當(dāng)前用戶hadoop對(duì)應(yīng)的用戶目錄下的內(nèi)容: 創(chuàng)建一個(gè)input目錄: 可以使用rm命令刪除一個(gè)目錄 上面命令中,“-r”參數(shù)表示如果刪除“input”目錄及其子目錄下的所有內(nèi)容,如果要?jiǎng)h除的一個(gè)目錄包含了子目錄,則必

    2023年04月13日
    瀏覽(17)
  • HDFS編程實(shí)踐(Hadoop3.1.3)

    HDFS編程實(shí)踐(Hadoop3.1.3)

    Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)是Hadoop核心組件之一,如果已經(jīng)安裝了 Hadoop,其中就已經(jīng)包含了 HDFS 組件,不需要另外安裝。 接下來(lái)介紹Linux操作系統(tǒng)中關(guān)于HDFS文件操作的常用Shell命令,利用Web界面查看和管理Hadoop文件系統(tǒng),以及利用Hadoop提供的Java API進(jìn)

    2024年02月07日
    瀏覽(21)
  • Linux安裝Zookeeper、Hadoop、Hive、Hbase全家桶系列

    Linux安裝Zookeeper、Hadoop、Hive、Hbase全家桶系列

    目錄 Linux安裝配置Zookeeper Linux安裝配置Hadoop Linux安裝Hbase 新建文件夾 下載到指定文件夾 官網(wǎng) Apache ZooKeeper 解壓到指定文件 查看 進(jìn)入目錄 創(chuàng)建日志/數(shù)據(jù)文件夾 復(fù)制配置文件 使用vim進(jìn)入zoo.cfg 修改為如下: ?記錄一下zookeeper的路徑然后 刷新資源 運(yùn)行 查看狀態(tài) 創(chuàng)建文件夾加

    2024年02月14日
    瀏覽(60)
  • Hadoop3.3.6安裝和配置hbase-2.5.5-hadoop3x,zookeeper-3.8.3

    Hadoop3.3.6安裝和配置hbase-2.5.5-hadoop3x,zookeeper-3.8.3

    vm設(shè)置 在安裝過程中推薦設(shè)置root用戶密碼為1234方面后續(xù)操作 1.設(shè)置主機(jī)名 以hadoop3為例 2.設(shè)置固定ip hadoop1 192.168.88.201 hadoop2 192.168.88.202 hadoop3 192.168.88.203 最后執(zhí)行 service network restart 刷新網(wǎng)卡 3.工具連接(三個(gè)機(jī)器都要設(shè)置) 4.主機(jī)映射 windows: C:WindowsSystem32driversetc 修改這個(gè)路

    2024年02月03日
    瀏覽(30)
  • 基于 HBase & Phoenix 構(gòu)建實(shí)時(shí)數(shù)倉(cāng)(1)—— Hadoop HA 安裝部署

    基于 HBase & Phoenix 構(gòu)建實(shí)時(shí)數(shù)倉(cāng)(1)—— Hadoop HA 安裝部署

    目錄 一、主機(jī)規(guī)劃 二、環(huán)境準(zhǔn)備 1. 啟動(dòng) NTP 時(shí)鐘同步 2. 修改 hosts 文件 3. 配置所有主機(jī)間 ssh 免密 4. 修改用戶可打開文件數(shù)與進(jìn)程數(shù)(可選) 三、安裝 JDK 四、安裝部署?Zookeeper 集群 1. 解壓、配置環(huán)境變量 2. 創(chuàng)建配置文件 3. 創(chuàng)建新的空 ZooKeeper 數(shù)據(jù)目錄和事務(wù)日志目錄 4

    2024年03月10日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包