一、前提说明
-
Hadoop已经完成安装(
如伪分布式、全分布式等
) -
zookeeper已经完成安装(
全分布式和HA模式需要
) -
环境对应关系如下:
hbase环境 对应hadoop环境 对应外部zookeeper环境 本地模式 不需要 不需要 伪分布式 伪分布式 单机安装(也可用hbase内置zookeeper) 全分布式 全分布式 集群模式(也可用hbase内置zookeeper) HA模式 HA模式 集群模式(也可用hbase内置zookeeper) 本教程都使用hbase内置的zookeeper,不需要另外单独安装部署zookeeper
二、具体安装步骤
-
本地模式(不需要HDFS,保存在Linux的文件系统)
-
事先需要在/training/hbase-1.3.1目录下创建data目录,执行:
mkdir /training/hbase-1.3.1/data
-
进入到/training/hbase-1.3.1/conf目录下,
编辑:vi hbase-env.sh,修改如下信息:
export JAVA_HOME=/training/jdk1.8.0_171
-
编辑:vi hbase-site.xml,在之间添加如下信息:
<property> <name>hbase.rootdir</name> <!--这个data事先需要创建--> <value>file:///training/hbase-1.3.1/data</value> </property>
-
启动HBase,执行:
start-hbase.sh
,看到正常启动日志如下:starting master, logging to /training/hbase-1.3.1/logs/hbase-root-master-niit00.out
jps查看进程:只有HMaster
-
启动hbase,执行:
hbase shell
,登录到hbase上,进行如下测试:- 创建学生表
create 'student','info','grade'
- 登录到web Console上查看:http://niit01:16010
- 创建学生表
-
-
伪分布模式(需要HDFS环境,即Hadoop已经启动了)
- 上传hbase-1.3.1-bin.tar.gz到/tools目录下
- 将hbase-1.3.1-bin.tar.gz文件解压并安装到/training目录下
tar -zvxf hbase-1.3.1-bin.tar.gz -C /training/
- 配置环境变量
vi ~/.bash_profile
在打开的.bash_profile文件中添加如下信息:export HBASE_HOME=/training/hbase-1.3.1 export PATH=$HBASE_HOME/bin:$PATH
- 让环境变量生效
source ~/.bash_profile
- 验证配置hbase的环境变量是否生效
hbase ----- 看看是否有Usage: hbase [] []信息,如果有则生效了,否则,配置有误 - 进入到/training/hbase-1.3.1/conf目录下
cd /training/hbase-1.3.1/conf
在该目录下找到如下文件进行修改:
(a) 编辑:vi hbase-env.sh
,修改如下信息:
1. 找到# export JAVA_HOME=/usr/java/jdk1.6.0/这句代码,将#号去掉,将/usr/java/jdk1.6.0改成你自己的JAVA_HOME路径。我本机的JAVA_HOME的路径是:/training/jdk1.8.0_171,所以我修改好之后的样子如下:
export JAVA_HOME=/training/jdk1.8.0_171
2. 找到# export HBASE_MANAGES_ZK=true 将#号去掉即可(不用单独安装zk)
3. 保存退出
(b). 编辑:vi hbase-site.xml
,在之间添加如下信息,注意下面的有IP的地址需要修改成你自己主机的IP地址或者主机名:
(c). 编辑:<!--HBase的数据保存在HDFS对应目录--> <property> <name>hbase.rootdir</name> <value>hdfs://niit06:9000/hbase</value> </property> <!--是否是分布式环境--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!--配置ZK的地址--> <property> <name>hbase.zookeeper.quorum</name> <value>niit06</value> </property> <!--冗余度--> <property> <name>dfs.replication</name> <value>1</value> </property>
vi regionservers
,配置从节点地址(伪分布只有一台主机,所以配置一个即可):将localhost改成IP地址或者主机名,如niit06
- 启动HBase:
start-hbase.sh
- 使用jps命令查看,是否已经启动了如下三个进程(如果以下上个进程存在,则说明安装配置hbase成功了):
HRegionServer HQuorumPeer HMaster
- 登录Web Console进程查看:
http://niit01:16010
-
全分布模式(有三台主机:master(主节点) slave01(从节点) slave02(从节点))
特别注意:如果没有特别说明的,以下所有的操作默认都是在主节点(niit01)上进行的
-
上传hbase-1.3.1-bin.tar.gz到/tools目录下
-
将hbase-1.3.1-bin.tar.gz文件解压并安装到/training目录下
tar -zvxf hbase-1.3.1-bin.tar.gz -C /training/ -
配置环境变量(这里需要在三台主机上都要配置.
vi ~/.bash_profile
在打开的.bash_profile文件中添加如下信息:export HBASE_HOME=/training/hbase-1.3.1 export PATH=$HBASE_HOME/bin:$PATH
-
让环境变量生效
source ~/.bash_profile -
验证配置hbase的环境变量是否生效
hbase ----- 看看是否有Usage: hbase [] []信息,如果有则生效了,否则,配置有误 -
进入到/training/hbase-1.3.1/conf目录下
cd /training/hbase-1.3.1/conf
在该目录下找到如下文件进行修改:
a. vi hbase-env.sh,修改如下信息:
1. 找到# export JAVA_HOME=/usr/java/jdk1.6.0/这句代码,将#号去掉,将/usr/java/jdk1.6.0改成你自己的JAVA_HOME路径
我本机的JAVA_HOME的路径是:/training/jdk1.8.0_171,所以我修改好之后的样子如下:
export JAVA_HOME=/training/jdk1.8.0_171
2. 找到# export HBASE_MANAGES_ZK=true 将#号去掉即可
3. 保存退出
b. vi hbase-site.xml,在之间添加如下信息,
注意下面的有IP的地址需要修改成你自己主机的IP地址:<!--HBase的数据保存在HDFS对应目录,hadoop是全分布式--> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <!--是否是分布式环境--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!--配置ZK的地址--> <property> <name>hbase.zookeeper.quorum</name> <value>master</value> </property> <!--冗余度--> <property> <name>dfs.replication</name> <value>2</value> </property> <!--主节点和从节点允许的最大时间误差--> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property>
c. vi regionservers,配置从节点地址:
将localhost改成IP地址或者主机名:
slave01
slave02
注意事项:使用主机名 必须在每台机器上配置 /etc/hosts -
进入到/training目录下,将hbase-1.3.1整个目录复制到其他两个从节点上:
scp -r hbase-1.3.1/ root@slave01:/training
scp -r hbase-1.3.1/ root@slave02:/training -
在主节点上启动HBase:
start-hbase.sh -
使用jps命令查看,是否已经启动了如下三个进程(如果以下上个进程存在,则说明安装配置hbase成功了):
从节点:HRegionServer
主节点:HMaster -
登录Web Console进程查看:
http://master:16010
如下图所示:
注意:如果你使用的jdk版本是1.8+以上的,当你在启动hbase集群时,会有如下警告
解决方法:需要到节点中所有的节点中对hbase-env.sh进行修改,按照下图所示注释掉如下两行代码即可
-
-
HBase实现HA(在以上全分布模式的基础上,任意选择niit02或者niit03作为HMaster即可)
假设我选择niit02作为备份的HMaster的话,我需要在niit02上手动启动一个HMaster进程即可:
hbase-daemon.sh start master
如果是HA模式下,需要将hdfs-site.xml和core-site.xml复制到hbase的conf目录下
具体参考如下配置:<!--HBase的数据保存在HDFS对应目录,hadoop是HA,其中ns1来自与hdfs-site.xml中的hdfs-site.xml的配置dfs.nameservices--> <property> <name>hbase.rootdir</name> <value>hdfs://ns1/hbase</value> </property> <!--是否是分布式环境--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!--配置ZK的地址--> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop002,hadoop003,hadoop004</value> </property> <!--冗余度--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--主节点和从节点允许的最大时间误差--> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property> <!-- 可选择配置 --> <property> <!-- 定义regionserver上用于等待响应用户表级请求的线程数,可配大点 --> <name>hbase.regionserver.handler.count</name> <value>12</value> </property> <property> <!-- 这里因为要HMaster的HA,不需要指定域名 --> <name>hbase.master</name> <value>60000</value> </property>