Hbase入门
[TOC]
Hbase是干嘛的?
- HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。其主要作用是通过分布式的集群系统进行海量数据的存储与处理。其主要的优点有:
- 线性扩展,随着数据量增多可以通过节点扩展进行支撑
- 数据存在hdfs上面,备份机制健全
- 通过zookeeper协调查找数据,读取速度快。
- 良好的数据备份与恢复机制,数据安全性由保障。
Hbase的安装与配置
下载安装包并解压,然后修改环境变量
修改hbase-env.sh配置文件
12345678# The java implementation to use. Java 1.7+ required.export JAVA_HOME=/usr/local/soft/jdk1.8.0_144# Extra Java CLASSPATH elements. Optional.export HBASE_CLASSPATH=/usr/local/soft/hbase/confexport JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport HBASE_OPTS="-XX:+UseConcMarkSweepGC"# 告诉habse用我们自己配置的zookeeperexport HBASE_MANAGES_ZK=false修改hbase-site.xml
123456789101112131415161718192021222324252627282930313233<configuration><property><name>hbase.master</name><value>mini1:60000</value></property><property><name>hbase.master.maxclockskew</name><value>180000</value></property><property><name>hbase.rootdir</name><value>hdfs://mini1:9000/hbase</value></property><property><name>hbase.zookeeper.property.clientPort</name><value>2181</value><description>Property from ZooKeeper's config zoo.cfg.</description></property><!--是否采用分布式策略--><property><name>hbase.cluster.distributed</name><value>true</value></property><!--zookeeper所在位置--><property><name>hbase.zookeeper.quorum</name><value>mini5,mini6,mini7</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/hadoop/hbase/tmp/zookeeper</value></property></configuration>启动hbase
1start-hbase.sh打开shell交互式命令行
12hbase shellweb管理打开地址 http://mini1:16030
常见错误
发现
ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
,一般是hdfs正处于安全模式,可以直接关闭(感觉不太好):1hadoop dfsadmin -safemode leave
基本数据模型
Row Key
key是用来检索记录的主键,,通过row key来定位数据。是最重要的数据模型,当插入数据的时候,数据会按照row key进行排序,插入到合适的位置。
Columns Family
HBASE表中的每个列,都归属于某个列族。列族是表的schema的一部 分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如 courses:history,courses:math都属于courses 这个列族。
Cell
由{row key, columnFamily, version} 唯一确定的单元。cell中 的数据是没有类型的,全部是字节码形式存贮。
TimeStamp
HBASE中通过rowkey和columns确定的为一个存贮单元称为cell。每个 cell都保存 着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由HBASE(在数据写入时自动 )赋值。
Hbase的常用命令
名称 | 命令表达式 |
---|---|
创建表 | create ‘表名’, ‘列族名1’,’列族名2’,’列族名N’ |
查看所有表 | list |
描述表 | describe ‘表名’ |
判断表存在 | exists ’表名‘ |
判断是否禁用启用表 | is_enabled ‘表名’ is_disabled ‘表名’ |
添加记录 | put ‘表名’, ‘rowKey’, ‘列族 :列‘ , ‘值’ |
查看记录rowkey下的所有数据 | get ‘表名’ , ‘rowKey’ |
查看表中的记录总数 | count ‘表名’ |
获取某个列族 | get ‘表名’,’rowkey’,’列族’ |
获取某个列族的某个列 | get ‘表名’,’rowkey’,’列族:列’ |
删除记录 | delete **‘表名’ ,‘行名’ , ‘列族:列’ |
删除整行 | deleteall ‘**表名’,’rowkey’ |
删除一张表 | 先要屏蔽该表,才能对该表进行删除 第一步 disable ‘表名’ ,第二步 drop ‘表名’ |
清空表 | truncate ‘表名’ |
查看所有记录 | scan “表名” |