Hbase学习笔记


一,Hbase概述

  HBase是建 立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。

  HBase 依赖于 HDFS 做底层的数据存储, 依赖于 MapReduce 做数据计算, 依赖于 ZooKeeper 做服务协调。

  它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据。HBase 查询数据功能很简单,不支持 join 等复杂操作。 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)主要用来存储结构化和半结构化的松散数据。

  HBase 中的表特点
  大:一个表可以有上十亿行,上百万列。
  面向列:面向列(族)的存储和权限控制,列(簇)独立检索。
  稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一 张表中不同的行可以有截然不同的列。

二,Hbase的结构

  Rowkey的概念和mysql中的主键是完全一样的,Hbase使用Rowkey来唯一的区分某一行的数据。

  Column的概念,列,可理解成MySQL列。

  ColumnFamily的概念,列族, HBase引入的概念。Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取
  TimeStamp的概念,TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
  单元格(Cell),由{rowkey, column( = + ), version} 唯一确定的单元。 Cell 中的数据是没有类型的,全部是字节码形式存贮。
 
三,hbase单机部署
  1,安装hadoop,jdk,zookeeper环境。
  2,下载,解压hbase。
  3,环境配置:vi /etc/profile。
  4,在root目录下:
 
mkdir  /root/hbase 
mkdir  /root/hbase/tmp  
mkdir  /root/hbase/pids

  5,修改/conf/hbase-env.sh

export JAVA_HOME=/home/java/jdk1.8
export HADOOP_HOME=/home/hadoop/hadoop2.8
export HBASE_HOME=/home/hbase/hbase-1.2.6
export HBASE_CLASSPATH=/home/hadoop/hadoop2.8/etc/hadoop
export HBASE_PID_DIR=/root/hbase/pids
export HBASE_MANAGES_ZK=false

  6,修改hbase-site.xml

<!-- 存储目录 -->
<property>  
<name>hbase.rootdir</name>  
<value>hdfs://server1:9000/hbase</value>  
<description>The directory shared byregion servers.</description>  </property> 
<!-- hbase的端口 -->
<property>  
<name>hbase.zookeeper.property.clientPort</name>  
<value>2181</value>  
<description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.  
</description>  </property>  
<!--  超时时间 -->
<property>  
<name>zookeeper.session.timeout</name>  
<value>120000</value>  </property>  
<!--  zookeeper 集群配置。如果是集群,则添加其它的主机地址 --><property>  
<name>hbase.zookeeper.quorum</name>  
<value>server1</value>  </property>  
<property>  
<name>hbase.tmp.dir</name>  
<value>/root/hbase/tmp</value>  </property>  
<!-- false是单机模式,true是分布式模式  如果是单机模式则调用自身的zookeeper--><property>  
<name>hbase.cluster.distributed</name>  
<value>true</value>
</property>

  7,在成功启动Hadoop之后

  切换到HBase目录下

  cd /home/hbase/hbase-1.2.6/bin

  输入:./start-hbase.sh

  在浏览器输入:http://server1:16010/

 
 
三,Hbase shell操作入门
  
进入shell客户端:hbase shell
  推出shell客户端:exit
   HBase表的操作:  
  创建表:create '表名',{NAME => '列簇名',VERSIONS => 版本号}
  查看表:list
  查看表的详细信息:desc '表名'
  修改表的定义alter:
  添加一个列簇:alter '表名',NAME => '列簇名'
  删除一个列簇:alter '表名',NAME => '列簇名', METHOD => 'delete'
  或者:alter '表名','delete' => 'myCard'
  添加列簇的同时修改列簇:alter '表名',{NAME => '列簇'},{NAME => '列簇',METHOD => 'delete'}
  清空表:truncate '表名'  
  删除表:先停用表:disable '表名'  再删除表:drop '表名'
  HBase表中数据的操作:
  增put: put '表名' ,'rowkey','列簇名:字段名','字段值'
  查get + scan:get '表名','rowkey','列簇名'
  查询表中的所有信息:scan '表名'   scan '表名',{COLUMNS => '列簇名'}
  删delete:delete '表名','rowkey','列簇名:字段名' 

  

 
原文地址:https://www.cnblogs.com/songweideboke/p/9874068.html