1,HBase是什么?

1,概念

HBase是一个高可靠性、高性能、可伸缩、分布式、基于列存储的非关系型(NoSQL)数据库。

  • 列式存储和行式存储?
  • 非关系型数据库与关系型数据库?

2,与Google Bigtable的不同之处

服务

Google Bigtables

HBase

文件存储系统

Google Bigtable:GFS

HBase:HDFS

海量数据计算框架

Google Bigtable:MapReduce

HBase:MapReduce

应用程序协调服务

Google Bigtable:Chubby

HBase:ZooKeeper

3, 何时采用 HBase?

  • (1)需适应不同种类数据格式和数据源,不能预先严格定义模式
  • (2)需处理大规模数据
  • (3)不强调数据之间的关系,需存储半结构化和非结构化数据
  • (4)数据非常稀疏,有大量为 NULL 的字符串
  • (5)想要更好的进行扩展

4,HBase 集群结构

集群的Namespace_hadoop


集群的Namespace_集群的Namespace_02

HBase 分布式集群搭建

1,前期装备

  • (1)同步网络时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   #修改时区
  ntpdate cn.pool.ntp.org    #同步网络时间
  date   #检查时间是否修改成功

2,HBase1.3.1 分布式集群搭建

  • 1,下载安装包
    下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/ 版本号: hbase-1.3.1-bin.tar.gz
  • 2,上传并解压
    将 HBase 安装包上传到 Linux 服务器
    解压命令:tar -zxvf hbase-1.3.1-bin.tar.gz
  • 3,修改配置文件
  • hbase-env.sh 1,修改JDK安装路径
    export JAVA_HOME=/home/shiny/Desktop/software/jdk1.8.0_73
  • 集群的Namespace_集群的Namespace_03

  • 2,不引用HBase自带的ZooKeeper,使用自己安装的
  • 集群的Namespace_集群的Namespace_04

  • hbase-site.xml
    1,指定 HBase 在 HDFS 上存储的路径
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://hadoop01:9000/hbase</value>
  </property>

2,指定 HBase 是分布式的

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
  </property>

3,指定 ZooKeeper 节点,多个用“,”分割

<property>
  	<name>hbase.zookeeper.quorum</name>
  	<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
  	</property>

4,ZooKeeper配置文件zoo.cfg中的dataDir。ZooKeeper存储数据库快照的位置

<property>
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/home/shiny/zkdata</value>
  </property>
  • 4,分发到其它节点
scp -r hbase-1.3.1/ shiny@hadoop02:$PWD
  scp -r hbase-1.3.1/ shiny@hadoop03:$PWD
  • 5,配置环境变量
    1,编辑.bash_profile文件
vim /home/theone/.bash_profile

2,添加环境变量:

export HBASE_HOME=/home/theone/Desktop/software/hbase-1.3.1/
  export PATH=$PATH:$HBASE_HOME/bin

3,立即执行文件

source /home/theone/.bash_profile
  • 6,启动 HBase 集群
    1,启动hadoop集群,(在主节点上执行命令)
start-dfs.sh
  start-yarn.sh

2,启动 ZooKeeper 集群,(在所有节点上执行命令)

zkServer.sh start

3,启动 HBase 集群,(在哪个节点启动哪个节点就是主节点)

start-hbase.sh

启动页面有警告信息:

解决方案:
1,将 JDK 修改为 1.7 版本
2,修改 HBase 的配置文件hbase-env.sh

关闭 HBase 集群,命令:stop-hbase.sh修改配置文件hbase-env.sh,将以下两行配置注释掉(每个节点)

集群的Namespace_Google_05


再次启动 HBase 集群,警告信息消失

  • 7,验证 HBase 集群
    检查进程,命令:jps

    登录Web UI 页面:主节点:16010
  • 8,单步启动

主节点:hbase-daemon.sh start master
从节点:hbase-daemon.sh start regionserver

3,常见异常

HRegionServer 进程启动后立即退出
多台服务器之间 HBase 默认的容忍时间差为 30s

原因:由于HBase 集群服务器时间不同步