Hadoop集群搭建(六:HBase的安装配置)
| 實驗 目的 要求 | ? 目的: 1、HBase的高可用完全分布模式的安裝和驗證 要求:
? | ||||||||||||||||||
| ? ? ? ? ? ? ? ? ? 實 驗 環 境 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 實 驗 環 境 ? ? ? ? ? | ?
? 軟件版本: ??????? 選用HBase的1.2.3版本,軟件包名hbase-1.2.3-bin.tar.gz ? 集群規劃: ????? ????* HBase有主節點和Region節點2類服務節點,高可用完全分布模式中需要滿足主節點有備用的基本要求,所以需要兩臺或以上的主機作為主節點,而完全分布模式中需要滿足Region有備份和數據處理能夠分布并行的基本要求,所以要求兩臺或以上的主機作為Region節點,具體規劃如下:
? |
?
實驗內容
步驟一:HBase基本安裝配置
注:1、該項的所有操作步驟使用專門用于集群的用戶admin進行;
? ? ? ?2、此項只在一臺主機操作,然后在下一步驟進行同步安裝與配置;
?
1、首先,HBase軟件包“hbase-1.2.3-bin.tar.gz”我們已經上傳到用戶家目錄的“setups”目錄下。然后進行解壓和環境變量設置;
命令:
???? $mkdir ~/hbase
???? $cd ~/hbase
???? $tar -xzf ~/setups/hbase-1.2.3-bin.tar.gz
?
2、配置Hadoop相關環境變量;
命令:
???? $vi ~/.bash_prolife
?
2、使新配置的環境變量立即生效,查看新添加和修改的環境變量是否設置成功,以及環境變量是否正確,驗證Hadoop的安裝配置是否成功;
命令:
???? $source ~/.bash_profile
???? $echo $HBASE_HOME
???? $echo $PATH
???? $hbase version
?
步驟二:HBase高可用完全分布模式配置;
注:該項的所有操作步驟使用專門用于集群的用戶admin進行;
1、進入Hbase相關文件的目錄,分別創建Hbase的元數據文件目錄“tmp”和HDFS的日志文件目錄“logs”、進入Hbase的配置文件所在目錄;
命令:
???? $cd ~/hbase
???? $mkdir tmp logs
???? $cd ~/hbase/hbase-1.2.3/conf
2、進入Hbase的配置文件所在目錄,對配置文件進行修改。
a)找到配置項“JAVA_HOME”所在行,將其改為以下內容:
export
JAVA_HOME=/home/admin/java/jdk1.8.0_131
b)找到配置項“HBASE_CLASSPATH”,該項用于指定Hadoop的配置文件所在的路徑,將其值改為一下內容:
??export
??HBASE_CLASSPATH=/home/admin/Hadoop/Hadoop-2.7.3/etc/Hadoop
c)找到配置項“HBASE_LOG_DIR”,該項用于指定HBase的日志文件的本地存放路徑,將其值改為以下內容:
??export
??HBASE_LOG_DIR=/home/admin/hbase/logs
d)找到配置項“HBASE_MANAGES_ZK”,該項用于關閉HBase自帶的Zookeeper組件,將其值改為一下內容:
??export
??HBASE_MANAGES_ZK=false
3、對配置文件hbase-site.xml進行修改,找到標簽“<configuration>”所在位置,在其中添加如下紅色部分的內容:
<configuration><property><name>hbase.rootdir</name><value>hdfs://Cluster-01:9000/user/admin/hbase</value></property><property><name>hbase.tmp.dir</name><value>/home/admin/hbase/tmp</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>Cluster-01:2181,Cluster-02:2181,Cluster-03:2181,Cluster-04:2181,Cluster-05:2181</value></property><property><name>hbase.master.maxclockskew</name><value>60000</value></property></configuration>
4、對配置文件regionservers進行修改,刪除文件中原有的所有內容,然后添加集群中所有數據節點的主機名,每行一個主機的主機名,配置格式如下:
Cluster-03
Cluster-04
Cluster-05
5、創建配置文件“backup-masters”,并對配置文件進行修改。添加集群中所有備用節點的主機名,每行一個主機的主機名,配置格式如下:
Cluster-02
步驟三:同步安裝配置以及系統時間;
注:該項的所有操作不受使用準們用于集群的用戶admin進行。
1、將“hbase”目錄和“.bash_profile”文件發給集群中所有主機,發送目標用戶為集群專用用戶admin,即當前與登錄用戶同名的用戶,發送目標路徑為“/home/admin”,即集群專用用戶admin的家目錄。
2、使新配置的環境變量立即生效,查看新添加和修改的環境變量是否設置成功,以及環境變量是否正確,驗證Hbase的安裝配置是否成功;
命令:
???? $source ~/.bash_profile
???? $echo $HBASE_HOME
???? $echo $PATH
???? $hbase version
3、系統時間配置;
注:時間同步項的所有操作步驟需要使用root用戶進行。
在集群中所有主機上使用命令“date -s ‘yyyy-MM-dd HH:mm:ss(年-月-日 時:分:秒)’”對系統時間進行設置,并使用命令“hwclock -w”將設置的時間同步到硬件時鐘。
*該操作盡量在所有主機上同時進行,從而保證主機之間的時間誤差值設定的“hbase.master.maxclockskew”范圍內。
*如果是在VMware Workstation Pro虛擬平臺上安裝的,那么需要開啟時間同步。選中虛擬機節點->右鍵->設置->選項,開啟時間同步。
步驟四:HBase高可用完全分布模式啟動和驗證;
注:*該項的所有操作步驟使用專門用于集群的用戶admin進行。
*啟動HBase集群之前首先確保Zookeeper集群已被開啟狀態。(實驗5臺)Zookeeper的啟動需要分別在每個計算機的節點上手動啟動,如果家目錄下執行啟動報錯則需要進入Zookeeper/bin目錄執行啟動命令。
*啟動HBase集群之前首先確保Hadoop集群已被開啟狀態。(實驗5臺)Hadoop只需要在主節點執行啟動命令。
?
1、啟動Zookeeper集群:
命令:
???? ?$zkServer.sh status????? //查看Zookeeper狀態
????? $zkServer.sh start?????? //啟動Zookeeper
?
2、在主節點使用此命令,查看java進程信息,若有名為“NameNode”、“ResourceManager”、“DataNode”和“NodeManager”這幾個進程,則表示Hadoop集群的主節點及數據節點啟動成功。
命令:
???? $jps??? ??????????????????//查看進程狀態
???? $start-all.sh???????????? //啟動Hadoop
???? $yarn-daemon.sh start resourcemanager
主節點及備用主節點:
通信節點:
3、確定Hadoop集群已啟動狀態,然后再主節點使用此命令,啟動HBase集群;
命令:
???? $start-hbase.sh
?
4、如果每項啟動出錯,那么一次檢查相應的配置文件和環境變量。
$source ~/.bash_profile
$echo $ZOOKEEPER_HOME
$echo $PATH
$echo $HADOOP_HOME
$echo $PATH
$echo $HBASE_HOME
$echo $PATH
5、使用命令“ssh 目標主機名或IP地址”遠程登錄到集群中所有Region節點主機,在Region節點使用命令“jps”查看java進程信息,若有名為“HRegionServer”的進程,則表示HBase集群的Region節點啟動成功。
?
6、驗證使用HBase;
命令:
???? $hbase shell ????????????????????//進入HBase的控制臺
???? >create ‘tab1’,‘id’,‘name’ //創建表
???? >exit???????? ???????????????????//退出控制臺
?
?
出現的問題與解決方案
排錯一:
出現問題:Zookeeper啟動不正常;
原 ???因:查看Zookeeper日志,發現錯誤信息:
ClientCnxn$SendThread@966] -?Opening socket connection to server slave1. Will not attempt to authenticate using SASL
通過百度搜索發現集群環境中有個別主機通信不正常。
解決方案:排查每臺主機的網絡配置,并全部重新啟動。
?
排錯二:
??? 出現問題:啟動hbase,Error: JAVA_HOME is not set
原 ???因:配置hbase-env.sh時JAVA_HOME配置有誤
解決方案:進入目錄“~/hbase/hbase-1.2.3/conf”編輯文件hbase-env.sh
????????? 找到配置項“JAVA_HOME”所在行,將其修改為以下內容:
??export
JAVA_HOME=/home/admin/java/jdk1.8.0_131
?
知識拓展
-
HBase是什么?
Apache HBase是運行在Hadoop集群上的數據庫。為了實現更好的可擴展性(scalability),HBase放松了對ACID(數據庫的原子性,一致性,隔離性和持久性)的要求。因此HBase并不是一個傳統的關系型數據庫。另外,與關系型數據庫不同的是,存儲在HBase中的數據也不需要遵守某種嚴格的集合格式,這使得HBase是用來存儲結構不嚴格的數據的理想工具。
HBase在大數據應用的架構中應用非常廣泛。但是基于其與關系型數據庫迥異的設計模式,實現這些應用也與基于關系型數據庫來實現非常不同。下文將會對比HBase和關系型數據庫,并淺析HBase的特性。
?
2、關系型數據庫與HBase的對比。
2.1、先了解一下關系型數據庫的優勢和缺點。
- 關系型數據庫提供了標準的數據持久性模型
- SQL語言是事實上的數據操作標準語言
- 關系型數據庫內置了并發數據操作的管理機制
- 關系型數據庫提供全面的數據操作工具
2.2、HBase的高效,分布式,可擴展性。
由于HBase在設計上不支持關系和Join這樣的概念,需要一起查詢的數據就被存在一起。因此也就避免了關系型數據庫的一些局限性。下圖表現了HBase和關系型數據庫在數據存儲模型上的不同。
由于HBase將所有需要一起查詢到數據存儲在一起這一特性,HBase集群就自然能夠根據key來組織數據。在水平分割的時候,key值的范圍就可以被用來分割數據。每一個服務器存儲全部數據的一個子集。同時分布式的數據還可以被同時訪問。這大大增強了HBase的可擴展性。HBase實際上是Google Big Table的一個實現。Big Table是Google提出的一個用來存儲大規模數據的一個分布式系統。
HBase是基于Column family data store的理念設計的:每一行根據一個row key索引。也就是我們用來查詢的主鍵。同時每一行中有若干column family。每一個column family中有若干相關的column。如下圖所示。
HBase是一種Hadoop數據庫,經常被描述為一種稀疏的,分布式的,持久化的,多維有序映射,它基于行鍵、列鍵和時間戳建立索引,是一個可以隨機訪問的存儲和檢索數據的平臺。HBase不限制存儲的數據的種類,允許動態的、靈活的數據模型,不用SQL語言,也不強調數據之間的關系。HBase被設計成在一個服務器集群上運行,可以相應地橫向擴展。
?
3、HBase的基本操作。
a)Java友好提供了全面的java客戶端庫;
b)HBase中所有數據都是作為原始數據,使用數組的形式存儲;
c)行健是唯一標識符,類似數據庫的主鍵;
d)表中確定一個單元的坐標是[rowkey,cloumn fanmily,column qualifier];
e)5個基本命令來訪問HBase;Get(讀)、Put(寫)、Delete(刪除)、Scan(掃描)、Increment(遞增);
f)HFile是存儲文件,對應列族,一個列族可以有多少HFile文件,但是一個HFile不能存多個列族的數據;
g)寫的操作會寫入預寫式日志(WAL)和稱為MemStore的內存寫入緩沖區,當兩者都確認寫入后才認為寫的動作成功完成;
h)不建議禁用WAL,禁用后RegionServer故障時會導致數據丟失;
4、使用瀏覽器訪問https://192.168.100.111:16010
總結
以上是生活随笔為你收集整理的Hadoop集群搭建(六:HBase的安装配置)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop集群搭建(五:Hadoop
- 下一篇: Hadoop集群搭建(八:Hive的安装