Hbase集群安裝指南
HBase – Hadoop Database,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。
Hadoop HDFS為HBase提供了高可靠性的底層存儲(chǔ)支持,Hadoop MapReduce為HBase提供了高性能的計(jì)算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機(jī)制。
Pig和Hive還為HBase提供了高層語(yǔ)言支持,使得在HBase上進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理變的非常簡(jiǎn)單。 Sqoop則為HBase提供了方便的RDBMS數(shù)據(jù)導(dǎo)入功能,使得傳統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)向HBase中遷移變的非常方便。
Hbase基于Hadoop,所以安裝Hbase之前,需要安裝好Hadoop集群,包含Java、ssh免密登錄、Zookeeper、Hadoop。
基礎(chǔ)配置
安裝Hadoop之間,給各節(jié)點(diǎn)創(chuàng)建用戶,盡量不要在root用戶下進(jìn)行環(huán)境搭建。
涉及到集群部署,虛擬機(jī)或服務(wù)器都被稱(chēng)為主節(jié)點(diǎn)、子節(jié)點(diǎn)。基礎(chǔ)配置,集群中每個(gè)節(jié)點(diǎn)都需要做。
-
/etc/hosts和/etc/hostname配置
配置hostname時(shí),不要使用“.”“_"等特殊字符,這些字符會(huì)導(dǎo)致hadoop啟動(dòng)失敗。
hosts配置格式為集群機(jī)器ip 機(jī)器hostname,比如:
192.168.100.10 hadoopa 192.168.100.11 hadoopb 192.168.100.12 hadoopc
-
ssh免密登錄配置
- 生成ssh公鑰
ssh-keygen -t rsa
當(dāng)前用戶Home目錄下的.ssh目錄會(huì)生成公鑰文件(id_rsa.pub)和私鑰文件(id_rsa)
-
分發(fā)公鑰
將生成的公鑰分發(fā)給其他節(jié)點(diǎn),本機(jī)也要復(fù)制一份。
進(jìn)入個(gè)人/home/.ssh下執(zhí)行如下命令:
ssh-copy-id xxx(節(jié)點(diǎn)名稱(chēng))
Java安裝與環(huán)境變量配置
安裝jdk 1.8
yum -y install java-1.8.0-openjdk*
查詢java安裝路徑
ls -l rt /usr/bin/java
ls -l rt /etc/alternatives/java
Zookeeper安裝
安裝Zookeeper之間需要先安裝Java
下載解壓
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz
cp zookeeper-3.4.14 /usr/local/zookeeper -r
配置conf文件夾下zoo.cfg
cp zoo_sample.cfg zoo.cfg
修改或新增內(nèi)容
dataDir=/usr/local/zookeeper/data
server.1=192.168.1.91:2888:3888
server.2=192.168.1.92:2888:3888
server.3=192.168.1.93:2888:3888
在/usr/local/zookeeper/data下創(chuàng)建文件并寫(xiě)入內(nèi)容
touch myid
echo "1">>myid
復(fù)制zookeeper到其他節(jié)點(diǎn),主節(jié)點(diǎn)名稱(chēng)hadoopa, 目標(biāo)節(jié)點(diǎn)名稱(chēng)hadoopb
scp -r /usr/local/zookeeper hadoopb:/usr/local/
修改hadoopb節(jié)點(diǎn)文件myid
echo "2">myid
復(fù)制到其他節(jié)點(diǎn)步驟一致。
啟動(dòng),停止和查看狀態(tài)
各個(gè)節(jié)點(diǎn)都要執(zhí)行啟動(dòng)或者停止命令
/usr/local/zookeeper-3.4.6/bin/zkServer.sh start
/usr/local/zookeeper-3.4.6/bin/zkServer.sh stop
/usr/local/zookeeper-3.4.6/bin/zkServer.sh status
zookeeper啟動(dòng)之后會(huì)自動(dòng)選擇leader和follwer
Hadoop安裝
下載
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
解壓到 個(gè)人/home/hadoop下
tar -zxvf download/hadoop-3.1.2.tar.gz
文件配置
配置文件都在hadoop解壓目錄的etc/hadoop/下
-
hadoop-env.sh配置
找到 export JAVA_HOME= .....這行改為我們實(shí)際配置的 JAVA_HOME 路徑,并去掉 # 號(hào)注釋
-
core-site.xml配置
configuration標(biāo)簽里添加如下配置,其中hadoopa為主機(jī)名,xiaoming為用戶文件夾
<property> <name>fs.defaultFS</name> <value>hdfs://hadoopa:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/xiaoming/hadoopdata</value> </property>
-
hdfs-site.xml配置
指定 HDFS 副本數(shù)量
注意:Hadoop3.1的namenode節(jié)點(diǎn)端口從50070改為9870端口了
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
-
mapred-site.xml配置
指定 MapReduce運(yùn)行在yarn上
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
yarn-site.xml配置
指定 ResourceManager 服務(wù)節(jié)點(diǎn)
<configuration> <property> <name>yarn.resourcemanger.hostname</name> <value>hadoopa</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
-
workers配置
之前我使用hadoop-2.6 這個(gè)文件名為 slaves ,現(xiàn)在3.0版本為 workers
在此文件添加 我們作為DataNode節(jié)點(diǎn)的兩臺(tái)臺(tái)機(jī)器的主機(jī)名,如果我們只將hadoopa 作為 namenode不做為datanode的話,就不用在此文件中添加hadoopa 了,我這里三臺(tái)機(jī)器都做為 DataNode 節(jié)點(diǎn)
hadoopa hadoopb hadoopc
分發(fā)配置完成的Hadoop文件夾
將Hadoop發(fā)到另外兩臺(tái)機(jī)器
scp -r /home/用戶名/hadoop/ 用戶名@hadoopb:/home/用戶名/
scp -r /home/用戶名/hadoop/ 用戶名@hadoopc:/home/用戶名/
配置Hadoop 環(huán)境變量
三臺(tái)機(jī)器都需要配置
root 賬戶下執(zhí)行:vi /etc/profile
export HADOOP_HOME=/home/xiaoming/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后保存退出
執(zhí)行 source /etc/profile 使配置生效
初始化操作
完成以上步驟后,需要先格式化文件系統(tǒng)
在 NameNode 節(jié)點(diǎn)上執(zhí)行,我上面的配置是將 hadoopa 作為 NameNodde 節(jié)點(diǎn),hadoopb,hadoopc 作為 DataNode 節(jié)點(diǎn)
在 hadoopa 下執(zhí)行格式化
普通賬戶下 執(zhí)行:hdfs namenode -format
啟動(dòng)hadoop
start-all.sh 啟動(dòng)Hadoop集群
stop-all.sh 關(guān)閉Hadoop集群
驗(yàn)證hadoop
在namenode節(jié)點(diǎn)下執(zhí)行jps,可以看到如下進(jìn)程:NodeManager、ResourceManager、DataNode、NameNode、SecondaryNameNode。
在datanode節(jié)點(diǎn)下執(zhí)行jps,可以看到如下進(jìn)程:DataNode、NodeManager
如果發(fā)現(xiàn)缺少進(jìn)程,進(jìn)入logs文件夾,查看相應(yīng)進(jìn)程對(duì)應(yīng)的日志文件。
通過(guò)瀏覽器訪問(wèn)WEB UI:http://ip:9870
Hbase安裝
版本對(duì)應(yīng)關(guān)系:Hadoop 3.1.2 \ Hbase-2.2.x \ ZooKeeper 3.4.x
版本不對(duì)應(yīng)會(huì)導(dǎo)致軟件無(wú)法正常工作。
沒(méi)有做特殊說(shuō)明,操作都是在普通用戶下進(jìn)行。
下載及安裝
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.2.0/hbase-2.2.0-bin.tar.gz
將下載的文件解壓到用戶目標(biāo)目錄,這里是/home/xiaoming/
tar xvzf hbase-2.2.0-bin.tar.gz /home/xiaoming/
管理員用戶下設(shè)置環(huán)境變量
vi /etc/profile
# 在 /etc/profile 文件末尾添加如下內(nèi)容
export HBASE_HOME=/home/xiaoming/hbase-2.2.0
export PATH=$HBASE_HOME/bin:$PATH
# 使配置生效
source /etc/profile
配置Hbase
-
修改hbase-2.2.0/conf下hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0 #禁用Hbase自帶的zookeeper export HBASE_MANAGES_ZK=false
-
修改hbase-2.2.0/conf下hbase-site.xml
<configuration> <!-- 指定hbase在HDFS上存儲(chǔ)的路徑 --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoopa:9000/hbase</value> </property> <!-- 指定hbase是分布式的 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定zk的地址,多個(gè)用“,”分割 --> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.100.10:2181,192.168.100.11:2181,192.168.100.12:2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/xiaoming/data/zookeeper</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration>
-
修改hbase-2.2.0/conf下regionservers
添加節(jié)點(diǎn)hostname
hadoopa
hadoopb
hadoopc
-
拷貝hadoop配置文件core-site.xml和hdfs-site.xml到hbase-2.2.0/conf下
cp $HADOOP_HOME/etc/hadoop/core-site.xml $HBASE_HOME/conf/ cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/
-
分發(fā)Hbase文件到其他節(jié)點(diǎn)
scp -r hbase-2.2.0/ hadoopb:/home/xiaoming/ scp -r hbase-2.2.0/ hadoopc:/home/xiaoming/
啟動(dòng)Hbase
在啟動(dòng)Hbase之前,先啟動(dòng)zookeeper和hadoop。
在哪個(gè)節(jié)點(diǎn)上輸入啟動(dòng)命令start-hbase.sh
,哪個(gè)節(jié)點(diǎn)就是Hmaster。啟動(dòng)完成后可以通過(guò)jps
查看進(jìn)程。
Hmaster節(jié)點(diǎn)進(jìn)程:
SecondaryNameNode
NodeManager
ResourceManager
HRegionServer
Jps
DataNode
QuorumPeerMain
HMaster
NameNode
子節(jié)點(diǎn)進(jìn)程:
QuorumPeerMain
HRegionServer
DataNode
Jps
NodeManager
啟動(dòng)完成后,可以通過(guò)WEB UI查看Hbase集群情況,http://ip:16010
如果發(fā)現(xiàn)子節(jié)點(diǎn)啟動(dòng)HRegionServer失敗,通常是因?yàn)樽庸?jié)點(diǎn)系統(tǒng)的時(shí)間不同步造成的。調(diào)整系統(tǒng)時(shí)間即可解決。