Ubuntu安装HBase2.2.4并进行单机/伪分布式配置
Ubuntu安裝HBase2.2.4并進行單機/偽分布式配置
文章目錄
- Ubuntu安裝HBase2.2.4并進行單機/偽分布式配置
- 前言
- 版本兼容性
- 詳細流程
- 安裝HBase2.2.4
- HBase單機配置
- HBase偽分布式配置
- Web訪問HBase信息
- 常見問題
- 參考文章
前言
Hadoop安裝以后,只包含 HDFS和 Mapreduce,并不包含 HBase,因此我們需要在 Hadoop之上繼續安裝 HBase。
HBase的運行同樣有三種模式:單機模式、偽分布式模式、分布式模式。
- 單機模式:在一臺計算機上安裝和使用 HBase,使用 Ubuntu本地文件系統保存數據,不涉及數據的分布式存儲 HDFS;
- 偽分布式模式:在一臺計算機上模擬一個小的集群,數據使用分布式文件系統 HDFS存儲;
- 分布式模式:使用多臺計算機實現物理意義上的分布式存儲。
因為個人電腦不具備集群環境,我們僅介紹在個人電腦上進行單機模式和偽分布式模式的配置。
我個人的操作環境是:
- 操作系統:Ubuntu 16.04
- JDK 版本:1.8
- Hadoop 版本:Hadoop 3.1.3
我選擇安裝的HBase版本是 HBase 2.2.4。
版本兼容性
HBase一般是運行在 HDFS之上,這里我們默認個人電腦上已經安裝了 Java環境,安裝了 Hadoop并且已經配置好了偽分布式模式。如果還沒有安裝 Hadoop環境的請參考這篇博客進行安裝 Ubuntu系統安裝Hadoop3.1.3并進行單機/偽分布式配置
Hadoop對 Java的兼容性要求并不高,只要 Java版本在 JDK1.7以上基本上都可以進行兼容。但是 HBase對 Java、Hadoop的版本要求比較嚴格,如果版本不對就要安裝指定版本才能保證穩定使用。
現在是2020年4月,Apache HBase官網上對 Java、Hadoop的兼容性如下
三種圖標的意義如下:
- 綠色的√:當前版本通過了完整的功能測試,可以穩定使用
- 紅色的×:當前版本沒有通過完整的功能測試,部分功能不可用
- 黃色的 !:當前版本未經過測試,功能可用性未知
從這里我們可以看出,標出紅色的和黃色的版本都是不夠安全的,我們如果安裝這些版本可能會出很多的錯誤,因此我們應該選擇安裝綠色安全的版本。
綜合比較之后,我們看到,Java版本當然是選擇 JDK1.8最好,Hadoop版本可以選擇2.7.1+、2.8.5+、3.1.1+等。
這也怪不得現在都版本都發行到 Java14了,大家現在都喜歡用 JDK1.8,畢竟新版本對這些軟件不兼容還是得回到舊版本啊。
如果想知道 HBase最新的版本兼容性消息,可以自己去 Apache HBase官網進行查看 Apache HBase官網配置版本要求
詳細流程
接下來我們對 HBase的整個安裝配置流程進行詳細介紹。
簡單提一句,關于 HBase需要不要安裝外置 Zookeeper的問題。因為我們現在是偽分布式配置,直接使用 HBase中內置的 Zookeeper即可;如果要進行全分布式配置,建議安裝外置的 Zookeeper,將Zookeeper和 HBase分開部署,運營起來會方便很多。
安裝HBase2.2.4
在 Apache HBase官網上為我們推薦了兩個國內的鏡像站:北理工和清華。我們使用北理工的鏡像站下載 HBase的穩定版本 HBase北理工鏡像
鏡像站提供了幾個 HBase的穩定版本,根據自己的意愿選擇即可。這里我們選擇 2.2.4。
進入目錄后,我們選擇下載 hbase-2.2.4-bin.tar.gz,大小是213M。
下載完成后,通過 WinSCP等軟件傳輸到自己的虛擬機或者服務器中,就放在 /usr/local目錄下。然后我們進行解壓安裝,并把 HBase目錄權限賦予給 hadoop用戶。
cd /usr/local/ sudo tar -zxvf hbase-2.2.4-bin.tar.gz //解壓 sudo mv ./hbase-2.2.4 ./hbase //文件夾改名為hbase sudo chown -R hadoop ./hbase //修改文件權限hbase-2.2.4已經解壓完成,在開始使用之前,我們先測試一下 hbase是否可用。
/usr/local/hbase/bin/hbase version成功顯示 hbase版本信息,hbase可用。
HBase單機配置
在 HBase單機模式下,我們需要配置 Java環境變量,啟動內置的 Zookeeper。同時,為了方便訪問,我們配置一下 HBase的環境變量。
如果已經忘記了 JAVA_HOME的值,請在修改之前查看一下
echo $JAVA_HOME第一步,我們去配置 Java環境變量,并啟動內置的 Zookeeper。
在 HBase的文件目錄下,conf文件夾中放的是配置文件。我們需要更改 hbase-env.sh文件,把 JAVA_HOME環境變量指定到本機的JDK目錄。
cd /usr/local/hbase/conf sudo vim hbase-env.sh這里要注意的是,hbase-env.sh中本來就存在這些變量的配置,我們只需要耐心找到該配置,刪除前面的‘#’并修改配置內容即可。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241 export HBASE_MANAGES_ZK=true編輯完成后,使用 source命令使配置生效
source hbase-env.sh第二步, 編輯配置文件 /etc/profile,添加 hbase環境變量 HBASE_HOME。
cd ~ sudo vim /etc/profile在配置文件中輸入以下代碼:
export HBASE_HOME=/usr/local/hbase export PATH=$PATH:$HBASE_HOME/sbin:$HBASE_HOME/bin編輯完成后保存并退出,使用 source命令使配置生效
source /etc/profile接下來,我們測試環境是否配置成功
hbase version成功顯示 HBase的版本信息,HBase單機模式配置成功。
HBase偽分布式配置
在 HBase偽分布式模式下,我們需要配置 Java環境變量,HBase配置項目錄,啟動內置的 Zookeeper。以及指定 HBase數據在 HDFS上的存儲路徑等。
第一步和單機模式下的配置基本一致,打開 hbase-env.sh文件,找到對應配置,去掉前面的‘#’,并修改為對應路徑。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241 export HBASE_CLASSPATH=/usr/local/hbase/conf export HBASE_MANAGES_ZK=true第二步,編輯 hbase-site.xml文件,將需要配置的信息寫入 configuration標簽內。
cd /usr/local/hbase/conf sudo vim hbase-site.xml假設當前 Hadoop集群運行在偽分布式模式下,在本機上運行,且NameNode運行在9000端口的情況下。修改 hbase.rootdir,指定 HBase數據在 HDFS上的存儲路徑;將屬性 hbase.cluter.distributed設置為 true。
<configuration><property><name>hbase.rootdir</name><value>hdfs://localhost:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property> </configuration>- hbase.rootdir指定 HBase的存儲目錄
- hbase.cluster.distributed設置集群處于分布式模式
接下來,我們測試偽分布式模式是否配置成功。
輸入 jps命令,看到 NameNode、DataNode、SecondaryNameNode結點,則 Hadoop啟動成功。
輸入 jps命令,看到 HMaster、HRegionServer、HQuorumPeer結點,則 HBase啟動成功。
如果要退出 HBase Shell交互式執行環境,在 HBase Shell的命令提示符后面輸入 exit 即可。
可以看到,在 HDFS中,自動生成了一個“hbase”目錄,用來保存 HBase的數據。
到這一步,HBase偽分布式模式已經配置成功,我們關閉 Hadoop就行了。
注意,操作 Hadoop和 HBase的執行順序是:啟動Hadoop—>啟動HBase—>關閉HBase—>關閉Hadoop。
Web訪問HBase信息
啟動 HBase之后,我們可以通過 Ubuntu的圖形界面來查看 HBase的信息,打開 FireFox瀏覽器,在地址欄輸入“localhost:16010”即可查看。
如果是云服務器,請先在云控制臺打開修改安全組,開放 16010端口,再通過“localhost : 16010”的形式訪問。
注意,在 HBase 0.98.x 以上,,HBase Web UI 的端口已經從主節點的 60010 和 RegionServer 的 60030 變化為 16010 和 16030。
常見問題
1、關閉 HBase和 Hadoop之后,執行 jps命令居然發現 HRegionServer沒有關閉。
再次執行關閉 HBase的命令,發現 HRegionServer還是沒有關閉。這個原因暫時我也沒搞明白。
解決方法有兩個:
因為 HBase中的每個 RegionServer節點可以自由啟動或停止,可以不隨 HBase整體一起。所以我們可以直接啟動或者 RegionServer。
cd $HBASE_HOME ./bin/hbase-daemon.sh stop regionserver RegionServer //停止regionserver ./bin/hbase-daemon.sh start regionserver RegionServer //啟動regionserverkill進程的意思很簡單,就是直接將進程終結掉。這樣 RegionServer也就相當于關掉了。這種方式不是正常的關閉進程的方式,但是簡單粗暴效果好。
我們輸入 jps命令查看的時候,進程前面的數字就是進程的 pid碼。比如上圖中 HRegionServer的 pid碼是8096。
kill xxxx //關閉pid為xxxx的進程 kill -9 xxxx //強制終止并關閉pid為xxxx的進程2、啟動 HBase后,過了十幾秒,HMaster自動關閉
在進行 Web訪問 HBase時一直顯示被拒絕,仔細檢查了配置文件也沒有任何錯誤。最后在關閉 HBase時發現找不到 HMaster,重新啟動后發現 HMaster過了十幾秒就會自動關閉。
對于這種無法找到 HMaster的錯誤,我們先關閉 HBase,然后在 hbase-site.xml中設置 hbase.unsafe.stream.capability.enforce屬性值為 false,這樣可以避免啟動錯誤。
接著重新啟動 HBase,HMaster就不會自動關閉了。
<property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value> </property>參考文章
Ubuntu系統安裝Hadoop3.1.3并進行單機/偽分布式配置
Hbase入門(二)——安裝與配置
在ECS實例的Ubuntu系統中安裝HBase
Hadoop與HBase的最新版本兼容性
hbase 停止regionserver
總結
以上是生活随笔為你收集整理的Ubuntu安装HBase2.2.4并进行单机/伪分布式配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Day04-经典卷积神经网络解读
- 下一篇: LeetCode5382. HTML 实