1.概述
HBase 是一个基于Hadoop的分布式,可扩展,巨大数据仓库.当用户需要对海量数据进行实时(时效性)随机(记录级别数据)读/写,用户可以使用Hbase.Hbase设计目标是能够持有一张巨大的表,该表的规模能达到数十亿行 * 数百万列,并且可以运行在商用的硬件集群之上. Hbase是一个开源的,分布式,版本化的非关系化的数据库-NoSQL,改设计仿照了Google的BigTable设计.
1) Hdfs与Hbase的区别
Hbase是构建在HDFS之上的一个数据库服务,能够使得用户通过HBase数据库服务间接的操作HDFS,能够使得用户对HDFS上的数据实现CRUD操作(细粒度操作)。
2) Hbase官方特性
- 线性和模块化扩展
- 读写严格一致
- 表的自动和可配置分片(自动分区)
- RegionServers之间的自动故障转移支持。
- 方便的基类,用于使用Apache HBase表支持Hadoop MapReduce作业。
- 易于使用的Java API,用于客户端访问。
- Block cache 和 Bloom Filters 以进行实时查询。
2.列存储
常见的NoSQL数据库常见分类:Key-Value- Redis|SSDB Document - MongoDB|Elasticsearch|Solr 列存储 - HBase 图像关系 - Neo4j 等.和关系数据库不同,NoSQL不同种类产品之间不可相互替换.
RowKey:等价关系型数据库的主键ID
列簇:将IO操作特性相似的列归为一个簇,Hbase底层会以列簇为单位索引数据.
列:列簇/列名/列值/时间戳构成
时间戳:用于记录Hbase中数据的版本,一般系统会自动指定为插入数据时间
3.Hbase安装
1).hdfs环境
1.安装JDK,配置环境变量JAVA_HOME
[root@CentOS ~]# rpm -ivh jdk-8u171-linux-x64.rpm
[root@CentOS ~]# vi .bashrc
JAVA_HOME=/usr/java/latest
CLASSPATH=.
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export CLASSPATH
export PATH
[root@CentOS ~]# source .bashrc
2.关闭防火墙,禁止开机自启
[root@CentOS ~]# systemctl stop firewalld # 关闭 服务
[root@CentOS ~]# systemctl disable firewalld # 关闭开机自启动
3.配置主机名以及ip映射关系
[root@CentOS ~]# cat /etc/hostname
CentOS
[root@CentOS ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.150 CentOS
4.配置ssh免密登陆
[root@CentOS ~]# ssh-keygen -t rsa
[root@CentOS ~]# ssh-copy-id CentOS
[root@CentOS ~]# ssh CentOS
5.上传Hadoop安装包,并解压到/usr目录
[root@CentOS ~]# tar -zxf hadoop-2.9.2.tar.gz -C /usr/
6.配置HADOOP_HOME环境变量
[root@CentOS ~]# vi .bashrc
HADOOP_HOME=/usr/hadoop-2.9.2
JAVA_HOME=/usr/java/latest
CLASSPATH=.
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export CLASSPATH
export PATH
export HADOOP_HOME
[root@CentOS ~]# source .bashrc
7.修改core-site.xml
[root@CentOS ~]# vi /usr/hadoop-2.9.2/etc/hadoop/core-site.xml
<!--nn访问入口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://CentOS:9000</value>
</property>
<!--hdfs工作基础目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop-2.9.2/hadoop-${user.name}</value>
</property>
8.配置hdfs-site.xml
[root@CentOS ~]# vi /usr/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
<!--block副本因子-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--配置Sencondary namenode所在物理主机-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>CentOS:50090</value>
</property>
<!--设置datanode最大文件操作数-->
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
<!--设置datanode并行处理能力-->
<property>
<name>dfs.datanode.handler.count</name>
<value>6</value>
</property>
9.配置slaves
[root@CentOS ~]# vi /usr/hadoop-2.9.2/etc/hadoop/slaves
CentOS
10.,格式化NameNode,生成fsimage
[root@CentOS ~]# hdfs namenode -format
11.启动hdfs服务
start-dfs.sh
jps
2).Zookeeper安装(协调)
1,上传zookeeper的安装包,并解压在/usr目录下
[root@CentOS ~]# tar -zxf zookeeper-3.4.12.tar.gz -C /usr/
2,配置Zookepeer的zoo.cfg
[root@CentOS ~]# tar -zxf zookeeper-3.4.12.tar.gz -C /usr/
[root@CentOS ~]# cd /usr/zookeeper-3.4.12/
[root@CentOS zookeeper-3.4.12]# cp conf/zoo_sample.cfg conf/zoo.cfg
[root@CentOS zookeeper-3.4.12]# vi conf/zoo.cfg
#这里只需要修改一行
dataDir=/root/zkdata
3,创建zookeeper的数据目录
[root@CentOS ~]# mkdir /root/zkdata
4,启动zookeeper服务
[root@CentOS ~]# cd /usr/zookeeper-3.4.12/
[root@CentOS zookeeper-3.4.12]# ./bin/zkServer.sh start zoo.cfg
[root@CentOS zookeeper-3.4.12]# ./bin/zkServer.sh status zoo.cfg
3).Hbase配置与安装(数据库服务)
1,上传Hbase安装包,并解压到/usr目录下
[root@CentOS ~]# tar -zxf hbase-1.2.4-bin.tar.gz -C /usr/
2,配置Hbase环境变量HBASE_HOME
[root@CentOS ~]# vi .bashrc
HBASE_HOME=/usr/hbase-1.2.4
HADOOP_HOME=/usr/hadoop-2.9.2
JAVA_HOME=/usr/java/latest
CLASSPATH=.
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
export JAVA_HOME
export CLASSPATH
export PATH
export HADOOP_HOME
export HBASE_HOME
[root@CentOS ~]# source .bashrc
3,配置hbase-site.xml
[root@CentOS ~]# cd /usr/hbase-1.2.4/
[root@CentOS hbase-1.2.4]# vi conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://CentOS:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>CentOS</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
4,修改hbase-env.sh,将HBASE_MANAGES_ZK修改为false
[root@CentOS ~]# cd /usr/hbase-1.2.4/
[root@CentOS hbase-1.2.4]# grep -i HBASE_MANAGES_ZK conf/hbase-env.sh
# export HBASE_MANAGES_ZK=true
[root@CentOS hbase-1.2.4]# vi conf/hbase-env.sh
export HBASE_MANAGES_ZK=false
[root@CentOS hbase-1.2.4]# grep -i HBASE_MANAGES_ZK conf/hbase-env.sh
export HBASE_MANAGES_ZK=fals
export HBASE_MANAGES_ZK=false告知Hbase,使用外部Zookeeper
5.启动hbase
[root@CentOS hbase-1.2.4]# ./bin/start-hbase.sh
starting master, logging to /usr/hbase-1.2.4/logs/hbase-root-master-CentOS.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
starting regionserver, logging to /usr/hbase-1.2.4/logs/hbase-root-1-regionserver-CentOS.out
[root@CentOS hbase-1.2.4]# jps
3090 NameNode
5027 HMaster
3188 DataNode
5158 HRegionServer
3354 SecondaryNameNode
5274 Jps
3949 QuorumPeerMain
4.Shell命令
1). 基本命令
1、打开Hbase Shell
[root@CentOS hbase-1.2.4]# ./bin/hbase shell
2、获取帮助
hbase(main):004:0> help
hbase(main):005:0> help 'get'
3、查看服务器状态
hbase(main):002:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load
4、查看版本信息
hbase(main):003:0> version
1.2.4, rUnknown, Wed Feb 15 18:58:00 CST 2017