hbase 操作
视频地址:hbase教程
分布式 单机
列动态增减 建表时候指定
只有字符串一种数据类型 数值,字符
空值不被存储 存储
不支持SQL
查询方式单一,通过rowkey,或rowkey范围,或全表扫描
列式 行式
非结构化,json 结构化
分布式
快速随机写,基于key简单读 是否支持单挑更新?
亿级行,百万列 关系型数据库对列数有限制
列式存储
不支持sql,java api,(套一个壳通过SQL访问)
不支持事务,交易数据mysql
不能提供丰富的查询,join等
只能作为补充
1.管理regionserver
2.管理ddl,源数据定义
1.dml
2.wal(write ahead log)
DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。
如insert,delete,update,select等都是DML.
1.table = n个region 按照rowkey水平切分
2.Region = n store 一个column family 一个store
3.store = 1个 memstore (内存) + n 个 hfile(hdfs文件) ,memstore 中的数据flush一次会产生一个hfile
1.自己定义一个anmespace(database)
2.定义合理的schema
3.建表时设置合理预分区 pre-split auto-split force-split
4.选择合适的字段做rowkey,比如手机号,imsi
5.column family 和column的名字短一些,节省存储空间
6.设置合适的版本数量,建议保留3份
1.put 单条/批量操作,无update方法,类似map
2.delete 单条/批量操作
./hbase shell
1).简单状态查询
hbase(main)::> status
active master, backup masters, servers, dead, 1.0000 average load
Took 0.0175 seconds hbase(main)::> whoami
hadoop (auth:SIMPLE)
groups: hadoop
Took 0.0006 seconds
2).查看某一具体命令用法
hbase(main)::> help "status"
Show cluster status. Can be 'summary', 'simple', 'detailed', or 'replication'. The
default is 'summary'. Examples:
hbase> status
hbase> status 'simple'
hbase> status 'summary'
hbase> status 'detailed'
hbase> status 'replication'
hbase> status 'replication', 'source'
hbase> status 'replication', 'sink'
hbase(main)::>
3)查看namespace 可以用tab补全功能
hbase(main)::> list_namespace
NAMESPACE
default
hbase
row(s)
Took 0.1524 seconds
hbase(main)::>
4).创建namespace
reate create_namespace
hbase(main)::> create_namespace 'gp'
Took 0.2463 seconds
hbase(main)::>
hbase(main)::> list_namespace
NAMESPACE
default
gp
hbase
row(s)
Took 0.0270 seconds
5)创建带预分区的表:
create ‘namespace:表名’,'列族',...
hbase(main)::> create 'gp:test','info',{NUMREGIONS => , SPLITALGO => 'HexStringSplit'}
Created table gp:test
Took 2.6835 seconds
=> Hbase::Table - gp:test
hbase(main)::> desc 'gp:test'
Table gp:test is ENABLED
gp:test
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', VERSIONS => '', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_
BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'fals
e', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '', REPLIC
ATION_SCOPE => '', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_ME
MORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'f
alse', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => ''}
row(s)
Took 0.3126 seconds
hbase(main)::>
6)修改表属性,将存储的version由一个 改为 3个
hbase(main)::> alter 'gp:test',{NAME=>'info',VERSIONS=>''}
Updating all regions with the new schema...
/ regions updated.
Done.
Took 2.3734 seconds
hbase(main)::> desc 'gp:test'
Table gp:test is ENABLED
gp:test
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', VERSIONS => '', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_
BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'fals
e', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '', REPLIC
ATION_SCOPE => '', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_ME
MORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'f
alse', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => ''}
row(s)
Took 0.0597 seconds
hbase(main)::>
7)插入数据:
语法 put ‘namespace:tablename’,‘rowkey’,‘columnfamily:column’,‘value’,version(版本可不指定,默认是时间戳)
hbase(main)::> put 'gp:test','','info:col1','v1'
Took 0.2623 seconds
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
column=info:col1, timestamp=, value=v1
row(s)
Took 0.1840 seconds
8)用get查询数据:
hbase(main)::> put 'gp:test','','info:col1','v2',
Took 0.0188 seconds
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
column=info:col1, timestamp=, value=v1
column=info:col1, timestamp=, value=v2
row(s)
Took 0.0526 seconds
hbase(main)::> get 'gp:test',''
COLUMN CELL
info:col1 timestamp=, value=v1
row(s)
Took 0.0783 seconds
hbase(main)::>
9)get rowkey=‘123’ 的指定列
hbase(main)::> put 'gp:test','','info:col2','v3'
Took 0.0487 seconds
hbase(main)::> get 'gp:test','','info:col1'
COLUMN CELL
info:col1 timestamp=, value=v1
row(s)
Took 0.0104 seconds
hbase(main)::>
10)删除某一行的指定列:
hbase(main)::> delete 'gp:test','','info:col1'
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
column=info:col2, timestamp=, value=v3
column=info:col1, timestamp=, value=v2
row(s)
Took 0.0606 seconds
hbase(main)::>
11)删除整行记录:
hbase(main)::> deleteall 'gp:test',''
Took 0.0225 seconds
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
column=info:col2, timestamp=, value=v3
row(s)
Took 0.0687 seconds
hbase(main)::> 执行delete操作之后并未马上删除数据,只是打上了delete标志
可以通过如下命令查看
hbase(main)::> scan 'gp:test', {RAW => true, VERSIONS => }
ROW COLUMN+CELL
column=info:col1, timestamp=, type=Delete
column=info:col1, timestamp=, value=v1
column=info:col2, timestamp=, value=v3
column=info:, timestamp=, type=DeleteFamily
column=info:col1, timestamp=, value=v2
row(s)
Took 0.1143 seconds
hbase(main)::>
delete其实是一个put操作,插入了type=Deletexxx
目前数据还在memstore 中,未flush到hfile中
12)执行flush,major_compact后数据会被删掉
hbase(main)::> flush 'gp:test'
Took 0.8562 seconds
hbase(main)::> scan 'gp:test', {RAW => true, VERSIONS => }
ROW COLUMN+CELL
column=info:col1, timestamp=, type=Delete
column=info:col2, timestamp=, value=v3
column=info:, timestamp=, type=DeleteFamily
row(s)
Took 0.0718 seconds
hbase(main)::> major_compact 'gp:test'
Took 0.3532 seconds
hbase(main)::> scan 'gp:test', {RAW => true, VERSIONS => }
ROW COLUMN+CELL
column=info:col2, timestamp=, value=v3
row(s)
Took 0.8065 seconds
hbase(main)::>
生产中很少进行compact ,会阻塞读写
13)清空表和namespace
hbase(main)::> truncate 'gp:test'
Truncating 'gp:test' table (it may take a while):
Disabling table...
Truncating table...
Took 2.1177 seconds
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
row(s)
Took 1.1058 seconds
hbase(main)::> disable 'gp:test'
Took 0.5193 seconds
hbase(main)::> scan 'gp:test'
ROW COLUMN+CELL
org.apache.hadoop.hbase.TableNotEnabledException: gp:test is disabled.
at org.apache.hadoop.hbase.client.ConnectionImplementation.relocateRegion(ConnectionImplementation.java:)
at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:)
at org.apache.hadoop.hbase.client.ScannerCallable.prepare(ScannerCallable.java:)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.prepare(ScannerCallableWithReplicas.java:)
at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:)
at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
at java.lang.Thread.run(Thread.java:)
ERROR: Table gp:test is disabled!
For usage try 'help "scan"'
Took 0.1323 seconds
hbase(main)::> drop 'gp:test'
Took 0.3581 seconds
hbase(main)::> drop
drop drop_all drop_namespace
hbase(main)::> list
list list_deadservers
list_labels list_locks
list_namespace list_namespace_tables
list_peer_configs list_peers
list_procedures list_quota_snapshots
list_quota_table_sizes list_quotas
list_regions list_replicated_tables
list_rsgroups list_security_capabilities
list_snapshot_sizes list_snapshots
list_table_snapshots
hbase(main)::> list_namespace
list_namespace list_namespace_tables
hbase(main)::> list_namespace 'gp'
NAMESPACE
gp
row(s)
Took 0.1517 seconds
hbase(main)::> drop
drop drop_all drop_namespace
hbase(main)::> drop_namespace 'gp'
Took 0.2719 seconds
hbase(main)::> list
list list_deadservers
list_labels list_locks
list_namespace list_namespace_tables
list_peer_configs list_peers
list_procedures list_quota_snapshots
list_quota_table_sizes list_quotas
list_regions list_replicated_tables
list_rsgroups list_security_capabilities
list_snapshot_sizes list_snapshots
list_table_snapshots
hbase(main)::> list_namespace
list_namespace list_namespace_tables
hbase(main)::> list_namespace
NAMESPACE
default
hbase
row(s)
Took 0.0322 seconds
hbase(main)::>
hbase 操作的更多相关文章
- HBase操作(Shell与Java API)
版权声明:本文为博主原创文章,未经博主允许不得转载. 转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...
- Oracle数据迁移至HBase操作记录
Oracle数据迁移至HBase操作记录 @(HBase) 近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄 ...
- 实验3- 熟悉常用的 HBase 操作
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 熟悉常用的 HBase ...
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...
- HBase篇--HBase操作Api和Java操作Hbase相关Api
一.前述. Hbase shell启动命令窗口,然后再Hbase shell中对应的api命令如下. 二.说明 Hbase shell中删除键是空格+Ctrl键. 三.代码 1.封装所有的API pa ...
- 熟悉常用的HBase操作,编写MapReduce作业
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student) 学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age) 201 ...
- Oracle数据导入Hbase操作步骤
——本文非本人原创,为公司同事整理,发布至此以便查阅 一.入库前数据准备 1.入hbase详细要求及rowkey生成规则,参考文档“_入HBase库要求 20190104.docx”. 2.根据标准库 ...
- Hbase操作table常见方法示例
首先上我的输出类: /** * 功能:电池历史数据数据结构 * Created by liuhuichao on 2016/12/5. */ public class ResBatteryDataHi ...
- 第9章 HBase操作
目录 9.1 集群环境搭建 1.上传解压HBase安装包 2.hbase-env.sh文件配置 3.hbase-site.xml文件配置 4.regionservers文件配置 5.拷贝hbase到其 ...
- spark 对hbase 操作
本文将分两部分介绍,第一部分讲解使用 HBase 新版 API 进行 CRUD 基本操作:第二部分讲解如何将 Spark 内的 RDDs 写入 HBase 的表中,反之,HBase 中的表又是如何以 ...
随机推荐
- You Can Customize Synthesized Instance Variable Names @property
As mentioned earlier, the default behavior for a writeable property is to use an instance variable c ...
- swift语法之常量 变量 类型
常量和变量: 在swift中声明变量或者声明常量的时候可以不用写变量或者常量类型 因为系统会自动推导出对应的类型. 变量:可以更改值 swift中每句代码后面不需要加 ; 号 var num = 5 ...
- str2int HDU - 4436 (后缀自动机)
str2int \[ Time Limit: 3000 ms\quad Memory Limit: 131072 kB \] 题意 给出 \(n\) 个串,求出这 \(n\) 个串所有子串代表的数字的 ...
- 为什么很多人坚信“富贵险中求”?
之家哥 2017-11-15 09:12:31 微信QQ微博 下载APP 摘要 网贷之家小编根据舆情频道的相关数据,精心整理的关于<为什么很多人坚信"富贵险中求"?>的 ...
- IIS服务器部署web应用《一》
最近了解到开发用iis部署环境,于是了解了下. IIS用于部署web应用,其简单,配置方便,可以用作本地机器作为服务器进行部署.且所在部署系统为windows,便于使用iis. 端口80需要修改为别的 ...
- Android Studio 屏幕方向以及UI界面状态的保存
package com.example.orientation; import android.os.Bundle; import android.util.Log; import android.v ...
- 记一次MyBatisPlus问题(如果表名是数据库关键字怎么办)
问题信息:如果表名是数据库关键字怎么办? 正常来说,如果是我们自己写sql的话,给表名加反引号即可解决问题. 但是由于我们使用MyBatisPlus,相关的sql基本上都是封装并自动生成的.如果是这种 ...
- [Gamma阶段]第四次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第四次Scrum Meeting 基本信息 名称 时间 地点 时长 第四次Scrum Meeting 19/05/30 大运村寝室6楼 35min ...
- hbuilderx - 常用快捷键操作
常用的操作有(缺少一个快捷键,就是选中行) 1. ctrl+/ 注释代码 2. ctrl+y 恢复撤销 3. ctrl+x 剪切 4. ctrl+z 撤销 5. ctrl+c 复制 6. ctrl+p ...
- 使用Sabaki和Leela Zero配置AI围棋对弈环境
求 李昌镐儿童围棋课堂 的pdf. 一.下载Sabaki和Leela Zero最新版本 二.安装Sabaki 三.安装leela zero 四.Sabaki配置leela zero引擎 五.Sabak ...