什么是Hbase
- 分布式、可扩展的Nosql数据库,用于存储结构化、半结构化数据
- 高可靠、高性能、面向列存储,适用稀疏数据,便于统计分析
- 可以利用廉价的PC机扩展---->存储、处理海量数据
Hbase特点
-
海量存储,PB级的数据存储
-
面向列的存储,这里的列指的是列族(可含多个列)
-
可靠性:HDFS副本冗余、WAL、replication(Region)
-
高可扩展性:
1.基于上层处理能力的扩展(RegionServer)
通过横向添加RegionServer机器,水平扩展,提高Hbase上层处理能力,提高Hbase服务更多region的能力
- 基于存储的扩展(HDFS)
-
高并发(多核)
并行,同时执行,异步独立,需要多核心
并发,一段时间内,两个或者多个程序同时执行,如python的多线程(串行执行),单核心 -
稀疏数据存储
主要针对Hbase列的灵活性
列簇中,可以指定任意多个列,列数据为空时,不占用内存空间
密集表,行存储,null 时也分配内存
稀疏表,列存储,null 时不占内存,连续存储,不会产生内存碎片
Hbase架构
HMaster,主节点,运行在NameNode节点上
HRegionServer,存储分区数据的PC–Slaves,运行 在DataNode节点上
HRegion,数据分区(大行)
Store,列簇
Mem Store,缓存区域
HLog,预写日志
Hbase安装
Hbase三种运行模式:单机、伪分布式、完全分布式
单机模式
单机版的HBase包括HMaster、HRegionServer、Zookeeper所有的进程,并都基于本地文件系统,运行于同一个JVM。
1.安装JDK
sudo apt-get update #更新源
sudo tar -zxvf xxxxjdk1.8xxx.tar.gz -C /usr/local
#rename
sudo mv xxxxxdjk/ jdk8
sudo chown -R user:user jdk8 #改变用户名、用户组
#config env
cd
sudo vim .bashrc
shift+g
export JAVA_HOME=/usr/local/jdk8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=.:$JAVA_HOME/bin:$PATH
#save esc--shift+zz
source .bashrc
#检查是否安装成功
java -version
2.安装HBase
sudo tar -zxvf hbase-1.4.13.tar.gz -C /usr/local
cd /usr/local
sudo mv hbase-1.4.13/ hbase1.4.13
sudo chown -R user:user hbase1.4.13 #change owner
sudo chmod -R u+w hbase1.4.13
#config env
cd
sudo vim .bashrc
export HBASE_HOME=/usr/local/hbase1.4.13
export PATH=.:$HBASE_HOME/bin:$PATH
source .bashrc
#检查是否安装成功
hbase version
3.配置hbase
hbase-env.sh
hbase-site.xml
cd /usr/local/hbase1.4.13/conf
sudo vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk8
sudo vim hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:/usr/local/hbase1.4.13/data</value>
<descriptor>使用本地文件系统</descriptor>
</property>
</configuration>
4.启动测试
start-hbase.sh
jps
#查看进程 有HMaster 则启动成功
stop-hbase.sh #停止
hbase shell 进入客户端
伪分布式模式
- Zookeeper集群正常部署或者伪分布式部署,并启动
zkServer.sh start #开启集群
zookeeper---->参考 - Hadoop集群正常部署或者伪分布式部署,并启动
start-all.sh
or start-dfs.sh, start-yarn.sh - 安装Hbase并配置
#下载的软件解压到/usr/local
sudo tar -zxvf hbase-1.4.13-bin.tar.gz -C /usr/local
#重命名
cd /usr/local
sudo mv hbase-1.4.13 hbase1.4.13
#更改权限、用户
sudo chown -R lauf hbase1.4.13
sudo chmod -R a+w hbase1.4.13
#配置环境变量
cd ~
sudo vim .bashrc
shift+g
export HBASE_HOME=/usr/local/hbase1.4.13
export PATH=.:$HBASE_HOME/bin:$PATH
#使配置文件生效
source .bashrc
- 配置hbase-env.sh
cd /usr/local/hbase1.4.13/conf
sudo vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk8
export HADOOP_HOME=/usr/local/hadoop2.10
export HBASE_HOME=/usr/loca/hbase1.4.13
export HBASE_CLASSPATH=/usr/local/hbase1.4.13/conf
export HBASE_PID_DIR=/usr/local/hbase1.4.13/pids
export HBASE_MANAGES_ZK=false #zookeeper与hbase独立
- 配置hbase-site.xml
localhost----若改为具体域名,则hadoop、hbase的配置文件均需更改,且hbase-site需配置zookeeper的地址
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
<description>hbase.rootdir是RegionServer的共享目录,用于持久化存储Hbase的数据,默认存储在/tmp,重启Hbase时数据会丢失。
一般配置HDFS目录
如HDFS配置的主机localhost:9000
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>
Hbase的运行模式,
false为单机模式
true为分布式模式,又分为伪分布式、完全分布式
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>example1,example2,example3</value>
<description>
Zookeeper集群的服务节点地址,不含端口
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/var/zookeeper</value>
<description>
存储zookeeper的元数据,默认存储在/tmp,重启数据会丢失
</description>
</property>
</configuration>
完全分布式
在完全分布式下,还要修改conf/regionservers,列出所有RegionServer的地址
sudo vim regionservers
slave1
slave2
...
- hbase-env.sh 不变,直接分发
- hbase-site.xml稍作更改,然后分发
localhost:9000–>master:9000
zookeeper.quorum:master,slave1,slave2 - 编辑regionservers,直接分发
所有节点 -->相同配置
每个节点进程运行在自己的服务器上。
同一台机器:(HDFS)NameNode+(HBase)HMaster+(ZK)Leader
同一台机器:(HDFS)DataNode+(HBase)HRegionServer+(ZK)Followers
web API:
hdfs, http://master:50070
yarn, http://master:8088
hbase, http://master:16010
增加RegionServer节点
(1) 增加HDFS的DataNode节点,并启动DataNode进程。
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
(2) 在Master上修改regionservers配置文件,加入新节点域名,并同步到所有集群机器。
(3) 在新节点进行同Master相同的HBase配置,并启动RegionServer进程,
hbase-daemon.sh start regionserver。
(4) 在HBase的web 页面中查看是否有新节点加入到集群。
http://master:16010
增加备份的HMaster
- 在master节点的conf下创建backup-masters
sudo vim backup-masters
slave1
- 在slave1节点启动backup-master进程
hbase-daemon.sh start backup-master
- 备份的master不断轮询,当前活跃的HMaster是否故障,若故障,则重新从备份的master中选出一个接管HBase集群。