1.先决条件(HBase 依赖的一些重要的中间件、系统服务或配置)
1)运行时环境JDK
2)SSH 服务
集群模式的HBase 的启动或关闭依赖于SSH 服务,所以操作系统必须安装该服务,sshd进程必须处于运行状态,可执行以下命令查看服务状态:service sshd status。HBase 通过SSH 管理所有节点的守护进程,和Hadoop 的NameNode 一样,HMaster 必须能够免密登录到集群的所有节点,配置“ SSH 免密登录”。
3. 域名系统DNS
HBase 通过本地主机名(Host Name)或域名(Domain Name)来获取IP 地址,因此要确保正向和反向DNS 解析是正常的。在进行DNS 解析时会首先查询本地/etc/hosts 文件,因此建议通过配置该文件指定主机名或域名到IP 地址的映射关系而不使用域名解析服务,这样做将更易于维护,当出现主机无法识别的异常时也更加容易定位问题出现的位置,并且通过本地/etc/hosts 文件解析IP 地址速度也会更快一些。当决定使用DNS 服务的时候,还可以通过如下设置更加精确地控制HBase 的行为。
4. 本地环回地址Loopback IP
HBase 要求将本地回环接口配置成127.0.0.1,可以在/etc/hosts 文件配置,通常系统安装后都已经包含了该配置。127.0.0.1 localhost
5. 网络时间协议NTP
HBase 要求集群中节点间的系统时间要基本一致,可以容忍一些偏差,默认相差30s 以内。可以通过设置参数hbase.master.maxclockskew 属性值修改最大容忍偏差时间。偏差时间较多时集群会产生一些奇怪的行为。用户需要在集群中运行NTP 服务来同步集群的时间,如果在运行正常的集群中读取数据发生了一些莫名其妙的问题,例如读到的不是刚写进集群的数据而是旧的数据,这时需要检查集群各节点间时间是否同步。
6. 资源限制命令:ulimit 和nproc
HBase 和其他的数据库软件一样会同时打开很多文件。Linux 中默认的ulimit 值是1024,这对HBase 来说太小了。当使用诸如bulkload 这种工具批量导入数据的时候会得到这样的异常信息:java.io.IOException:Too many open files。我们需要改变这个值,注意,这是对操作系统的参数调整,而不是通过HBase 配置文件完成的,我们可以大致估算ulimit 值需要配置为多大。
7. 操作系统Windows
和Hadoop 一样,HBase 在Windows 系统下没有经过严格的测试,因此不建议在生产环境中将HBase 运行在Windows 下,如果想在Windows 下安装HBase,需要安装Cygwin。从0.96 版本开始,HBase 提供了一套.cmd 的Windows 运行脚本。
8. Hadoop 版本选择不同
9. HBase 安全
HBase 运行在Hadoop 上,在Hadoop 1.0.0 版本中已经加入最新的安全机制和授权机制(Simple 和Kerberos)。
10. 安装ZooKeeper
ZooKeeper 是HBase 集群的“协调器”,负责解决HMaster 的单点问题,以及root 表的路由,所以一个独立的ZooKeeper 服务是必需的。要确保事先安装好一个ZooKeeper集群。
2.HBase 运行模式
单机模式和分布式模式:在默认情况下HBase 运行在单机模式下,如果要运行分布式模式的HBase,需要编辑安装目录下conf 文件夹中相关的配置文件。
单机模式:
HBase 默认的运行模式,在单机模式中,HBase 使用本地文件系统,而不是HDFS,所有的服务和ZooKeeper 都运行在一个JVM 中。ZooKeeper 监听一个端口,这样客户端就可以连接HBase 了。
1)在conf 目录下的hbase-env.sh 文件中配置HBase Java 的安装路径
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export HBASE_MANAGES_ZK=false Hbase自带的zookeeper,不用
2)配置conf目录下的hbase-site.xml 文件
配置临时目录 先创建目录 mkdir datas
hbase.tmp.dir /opt/modules/hbase-0.98.6-hadoop2/datas
存储hbase数据的目录
hbase.rootdir hdfs://xxxxxxxx/hbase
ZooKeeper 数据存放的位置
hbase.zookeeper.property.dataDir
�hbase.rootdir 代表 HBase 数据存放的位置,单机模式下存储到本地目录。
��hbase.zookeeper.property.dataDir 代表 ZooKeeper 数据存放的位置。
3)启动HBase
运行如下脚本启动HBase:bin/start-hbase.sh
分布式模式
HBase 分布式模式有两种:伪分布式模式和分布式模式
伪分布式模式是把所有进程运行在一台机器上,但不是一个JVM 上;而完全分布式模式就是把整个服务分布在各个节点上。无论采用哪种分布式模式,都需要使用HDFS。在操作HBase 之前,要确认HDFS 可以正常运行。
伪分布式模式:用于测试
配置hbase-site.xml
启动HBase bin/start-hbase.sh
也可以在同一服务器启动额外备份HMaster: bin/local-master-backup.sh start 1
“1”表示使用端口60001 和60011,该备份的HMaster 及其日志文件放在logs/hbase-
${USER}-1-master-${HOSTNAME}.log 中。
启动多个备份HMaster: bin/local-master-backup.sh start 2 3
可以启动9 个备份HMaster,最多可以有10 个HMaster。
如果要启动更多RegionServer bin/local-regionservers.sh start 1
“1”表示使用端口60201 和60301,日志文件存放在logs/hbase-${USER}-1-regionserver$-
{HOSTNAME}.log 中。
在刚运行的RegionServer 上增加4 个额外RegionServer,最多可以支持100 个。
bin/local-regionservers.sh start 2 3 4 5
停止HBase
假设想停止备份HMaster 1 cat /${PID_DIR}/hbase-${USER}-1-master.pid |xargs kill -9
停止RegionServer bin/local-regionservers.sh stop 1
分布式模式
安装ZooKeeper
配置conf/hbase-env.sh
HBASE_MANAGES_ZK 的默认值是true, 作用是让HBase 启动的同时也启动ZooKeeper。
使用HBase 管理ZooKeeper export HBASE_MANAGES_ZK=true
配置hbase-site.xml
hbase.rootdir hdfs://host1:9000/hbase
hbase.cluster.distributed true
hbase.zookeeper.property.clientPort 2181
hbase.zookeeper.quorum host1,host2,host3
hbase.zookeeper.property.dataDir /home/hadoop/zookeeperdata
�hbase.rootdir :这个目录是 RegionServer 的共享目录,用来持久化 HBase
�hbase.cluster.distributed HBase 的运行模式。为 false 表示单机模式,为 true 表示分布式模式
hbase.zookeeper.quorumzookeeper 地址多台用逗号分割
�hbase.zookeeper.property.clientPort 表示客户端连接 ZooKeeper 的端口
�base.zookeeper.property.dataDir 这个参数用于设置 ZooKeeper 快照的存储位置。
配置regionservers 文件 conf 目录下的regionservers 文件,一行一个主机名
替换jar包 删掉原来的包,hadoop15个,zookper1个
运行HBase
先启动hadoop,再启动zookeeper,最后启动hbase
当ZooKeeper 由HBase 托管的时候,Zookeeper 集群的启动是Hbase 启动脚本的一部分。首先确认HDFS 是运行着的,然后启动HBase bin/start-hbase.sh
或启动hbase进程
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver