- HBASE是用Java语言编写的,因此在安装HBASE时,必须安装jdk
- 安装HBASE是必须有hadoop平台
- HBASE和jdk的版本存在兼容性,必定注意
jdk:
hadoop:缓存
① 上传安装包(hbase-1.2.6-bin.tar.gz)
②解压:tar zxvf hbase-1.2.6-bin.tar.gz -C /application/
③配置环境变量:服务器
export HBASE_HOME=/application/hbase-1.2.6 export PATH=$PATH:$ZOOKEEPER_HOME/bin:$SQOOP_HOME/bin:$HBASE_HOME/bin
source /etc/profie #刷新配置文件 hbase version #查看是否配置成功
④修改hbase的配置文件
cd /application/hbase-1.2.6/conf
hbase-env.sh:架构
export JAVA_HOME=/application/jdk1.8 #配置jdk export HBASE_MANAGES_ZK=false #配置使用本身的zookeeper #psHBASE中必须依赖zookeeper,zookeeper做用是存储HBASE的寻址入口HBASE自带的是单机版的,全部须要开启使用本身的
hbase-site.xml:app
<configuration> <property> <!-- 指定 hbase 在 HDFS 上存储的路径 --> <name>hbase.rootdir</name> <value>hdfs://zzy/hbase</value> </property> <property> <!-- 指定 hbase 是分布式的 --> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <!-- 指定 zk 的地址,多个用“,”分割 --> <name>hbase.zookeeper.quorum</name> <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value> </property> </configuration>
regionservers:分布式
hadoop01 hadoop02 hadoop03
backup-masters(自行建立):ide
#配置备份主节点的节点 hadoop02
⑤要把 hadoop 的 hdfs-site.xml 和 core-site.xml 放到 hbase-1.2.6/conf 下
由于hadoop集群是HA模式,因此须要配置:oop
cp /application/hadoop-2.7.6/etc/hadoop/core-site.xml . cp /application/hadoop-2.7.6/etc/hadoop/hdfs-site.xml .
⑥分发安装到各节点3d
cd /application/ scp -r hbase-1.2.6 hadoop02:$PWD scp -r hbase-1.2.6 hadoop03:$PWD
⑦时间同步:
HBase 集群对于时间的同步要求的比 HDFS 严格,因此,集群启动以前千万记住要进行时间同步,要求相差不要超过 30s。在定时任务中配置定时更新时间。日志
① 先在每个节点zookeeper 集群:zkServer.sh start
②启动hdfs集群:start-dfs.sh
③启动hbase:start-hbase.sh(启动) / stop-hbase.sh(关闭) 最好在主节点启动,在哪一个节点启动哪一个节点就是hmaster。
④ 检测是否正常启动:jps
Web界面访问:http://HBASE主节点:16010
注意:若是有节点相应的进程没有启动,那么能够手动启动:code
hbase-daemon.sh start master hbase-daemon.sh start regionserver
在HBASE集群中:有多个主(hmaster)、多个从(RegionServer),每个从节点中存储的是多个Region,每个Region,是HBASE一张表中分出来的(默认的Region大小为10G)。
集群角色介绍:
是HBASE将一个表中的全部数据按照RowKey的不一样范围进行切割的逻辑单元,每个region负责必定范围数据的读写访问。Region由RegionServer负责管理。HBASE中的region的概念就和hdfs中的数据块的概念差很少。Region 是 HBase 表切分出来的一个分片。Region的大小在1.x版本的时候是1G,在2.X版本的时候是10G。
Region的工做机制:
当客户端发送命令(delete/put)的时候,region接收到请求的时候,首先会将数据更新到内存中,同时将操做记录到日志(追加),不论作的是什么操做,就会记录到操做日志中,为了进行数据恢复,由于region接收请求的时候,只是将数据同步到内存,若是节点一宕机则数据丢失,因此经过日志的方式进行数据恢复(或者说是持久化)。固然这个日志记录到必定大小的时候会进行切分,切分出来的叫Hfile,最后到有不少Hfile的时候,会进行日志合并,会将这些Hfile合并一个storeFile,在进行合并的时候,会将日志中的delete和put进行抵消删除(即一个put操做,若是有一个对应有一个delete操做,则这两条记录抵消,在合并的时候不会记录),最终合并出来的storefile中就会只有put操做而没有delete操做。
HBASE的主节点,负责整个集群的状态感知、负载分配、负责用户表的元数据 (schema)管理(能够配置多个用来实现 HA),只有hmaster才有权利去修改元数据。
HBase 的 HMaster 其实就算是宕机一段时间也能够正常对外提供服务的,由于在HMaster在宕机的时候,集群仍然能够进行查询可是不能进行读写。
HMaster的负载:当第一次创建表的时候,只有一个Region,而后当region的值超过1G的时候,此时HBASE的HMaster会将region进行拆分(若是是2G,一份为二,每个是1G),拆分后的region可能不存在一个节点上。因为HBASE是搭建在hadoop之上的,因此region的副本会在hdfs操做。
hmaster的节点的上下线感知:当若是有一台Reginaservers宕机了,hmaster会自动将这个宕机节点中存储的region经过其余的副本在另外的节点上复制出来(基于hdfs的副本),当宕机的节点从新恢复的时候,hmaster又会进行负载,保证每个Reginaservers中的region的个数大体相同,(只能保证集群的region的个数进行负载,若是region的大小不一样,不能根据数据的大小进行负载)。
HBase 中真正负责管理 Region 的服务器,也就是负责为客户端进行表数据读 写的服务器。每一台 RegionServer 会管理不少的 Region,一个 RegionServer 上面管理的全部 的region不属于同一张表。负责Region的拆分,负责和底层的HDFS的存储交互,负责StoreFile 的合并。
整个 HBase 中的主从节点协调,元数据的入口,主节点之间的选举,集群节点 之间的上下线感知……都是经过 ZooKeeper 来实现
Client 包含了访问 HBase 的接口,另外 Client 还维护了对应的 Cache 来加速 HBase 的 访问,好比 Cache 的.META.元数据的信息。(缓存上一个查询的rowkey的具体位置,方便快速一次查询)。