Resumen hbase

(A) .Hbase básica introducción

1.hbase hdfs anterior se estableció para proporcionar una alta fiabilidad, alto rendimiento, las columnas de almacenamiento, sistema de base de datos escalable en tiempo real a leer y escribir

2.hbase Características:
  HBase Todo se almacena en bytes
  de HBase rowKey ser ordenada orden de bytes, y se suma el índice
  hbase corta automáticamente de acuerdo con el número de fila Región, manteniendo el equilibrio de carga y redundancia

almacenamiento 3.hbase estructura:
  rowKey: una matriz de bytes, cada registro de la tabla es la "llave maestra", fácil de encontrar de forma rápida, diseño rowKey es muy importante;
  Columna familiar: familias de columna, tiene un nombre (cadena), contiene uno o más de columna de correlación; la columna bajo el mismo grupo de columnas que tienen las mismas propiedades de
  la columna: pertenecer a un columnfamily, familyName:, cada registro se puede añadir dinámicamente columnName;
  la célula: en la que la marca de tiempo es una marca de tiempo, el valor es el valor de la correspondiente rowKey columna

  hbase (principal): 009: 0> Barrido 'Usuario'

  ROW COLUMNA + CELL

  id001 columna = personInfo: nombre, marca de tiempo = 1502368030841, valor = xiaoming
  id001 columna = personInfo: edad, marca de tiempo = 1502368069926, valor = 18
  id001 columna = personInfo: sexo, marca de tiempo = 1502368093636, valor = hombre

 

(B) comandos comunes .Hbase

1. Introducir el shell: shell hbase

[Hadoop @ INDB-3-136-hzifc bin] $ echo $ HBASE_HOME

/ Datos / programa / hbase

[Hadoop bin @ INDB-3-136-hzifc] $ / datos / programa / hbase / bin / shell hbase


2. Comprobar todas las tablas: lista

hbase (principal): 003: 0> lista
T
TABLA
S
SYSTEM.CATALOG
S
SYSTEM.FUNCTION
S
SYSTEM.SEQUENCE
S
SYSTEM.STATS
T
TEST.USER
U
Usuario

6 fila (s) en 0,0340 segundos


3. Para ver una tabla de abajo para más detalles: describir

hbase (principal): 004: 0> describir 'Usuario'
T
Tabla de usuario está habilitada
U
usuario
C
FAMILIAS columna Descripción
{
{NAME => 'info', BLOOMFILTER => 'ROW', versiones => '1', in_memory => 'falso', KEEP_DELETED_CELLS => 'fALSO',

DATA_BLOCK_ENCODING => 'NONE', TTL => 'FORE
V
, compresión => 'NONE' VER', MIN_VERSIONS => '0', BLOCKCACHE => 'verdadero', BLOCKSIZE => '65536', REPLICATION_SCOPE =>

'0'}

. Fila 1 (S) en 0,1410 segundos El



4. Crear una tabla: crear

Sintaxis: crear <table>, {NOMBRE => <familia>, versiones => <VERSIONES>}
Crear una tabla de usuario, columnas puede ser uno o más aromático información

hbase (principal): 002: 0 > crear 'Usuario', ' la INFO1 '
0 Row (S) en 1.5890 segundos los


5. Retire la familia columna especificada: delete

语法: alter表名, 'delete' => '列族'

hbase (principal): 002: 0> alter 'Usuario', 'delete' => 'info'
T
Actualización de todas las regiones con el nuevo esquema de ...

1/1 regiones actualizan.
D
Listo.

Fila 0 (S) en 2.5340 segundos El



6. Los datos de inserción: put

语法: put <table>, <rowKey>, <familia: la columna>, <valor>

hbase (principal): 005: 0> put 'Usuario', 'fila1', 'información: Nombre', 'Xiaoming'
0 fila ( s) en 0,1200 segundos

hbase (principal): 006: 0> put 'Usuario', 'fila2', 'información: edad', '18'
0 fila (s) en 0,0170 segundos

hbase (principal): 007: 0> put 'Usuario', ' Row3' , 'Info: sexo', 'hombre'
0 fila (s) en 0,0030 segundos




El rowKey consulta un registro: get

语法: get <table>, <rowKey>, [<familia: la columna>, ....]

hbase (principal): 008: 0> get 'Usuario', 'fila2'

COLUMNA CELL

Info: timestamp edad = 1502368069926, valor = 18
1 fila (s) en 0,0280 segundos

 

hbase (principal): 028: 0> get 'Usuario', 'Row3', 'información: el sexo'

COLUMNA DE CÉLULAS

información: fecha y hora del sexo = 1502368093636, valor = hombre

 

hbase (principal): 036: 0> get 'Usuario', 'fila1', {COLUMNA => 'información: nombre'}

COLUMNA DE CÉLULAS

información: nombre de marca de tiempo = 1502368030841, valor = xiaoming

1 fila (s) en 0,0120 segundos



8. consulta todos los registros: Tomografía

Sintaxis: exploración <table>, {COLUMNAS => [<familia: columna>, ....], LIMIT => num}

escanea registró
hbase (principal): 009: 0 > scan 'Usuario'

FILA DE COLUMNA + CELULAR

columna fila1 = información: nombre, fecha y hora = 1502368030841, valor = Xiaoming

columna fila2 = Info: edad, fecha y hora = 1502368069926, valor = 18
columna Row3 = Info: sexo, fecha y hora = 1502368093636, valor = hombre

3 fila (s) en 0,0380 segundos

扫描前2条
hbase (principal): 037: 0> scan 'Usuario', {LIMIT => 2}
R
ROW COLUMNA + CELL

columna row1 = info: nombre, marca de tiempo = 1502368030841, valor = xiaoming

columna fila2 = info: edad, marca de tiempo = 1502368069926, valor = 18
2 fila (s) en 0,0170 segundos

范围查询
hbase (principal): 011: 0> scan 'usuario', {StartRow => 'fila2'}
R
cOLUMNA ROW + CELL

columna fila2 = info: edad, marca de tiempo = 1502368069926, valor = 18
columna Row3 = Info: sexo, marca de tiempo = 1502368093636, valor = hombre

2 fila (s) en 0,0170 segundos

hbase (principal): 012: 0> scan 'Usuario', {StartRow => 'fila2', EndRow => 'fila2'}
R
COLUMNA ROW + CELL

columna fila2 = info: edad, marca de tiempo = 1502368069926, valor = 18
1 fila (s) en 0,0110 segundos

 

HBase (principal): 013: 0> Scan 'del usuario, {StartRow => 'ROW2', Filafinal => 'Row3'}
R ^
el ROW el COLUMNA + el CELL

columna ROW2 = Info: Edad, marca de tiempo = 1502368069926, valor = 18 es
. 1 Fila (s) en 0,0120 segundos

, además, también puede agregar características avanzadas tales como TimeRange y fitler
StartRow, EndRow debe ser capitalizada, de lo contrario un error; los resultados de la consulta no incluyen el conjunto de resultados iguales EndRow
 

9. Estadísticas Número de registros: recuento

Sintaxis: COUNT <Tabla>, {la INTERVAL => intervalNum, el CACHE =>} cacheNum

los espectáculos fila INTERVALO un número determinado y la correspondiente predeterminado rowKey 1000; CACHE cada podido recuperar tamaño del área de memoria intermedia, por defecto es 10, los parámetros se puede ajustar acelerar la búsqueda
HBase (principal): 020: 0> count 'usuario'
de 3 filas (S) en 0,0360 segundos el.




10. el borrar: borrar

la columna Quitar
HBase (principal): 008: 0> Borrar 'del usuario', 'ROW1', 'información: Edad'
0 Fila (S) en 0,0290 segundos Las

filas de eliminación
hbase (principal): 014: 0 > deleteall 'Usuario', 'ROW2'
0 Fila (S) en 0,0090 segundos, el

borrar todos los datos en
HBase (principal): 016: 0> TRUNCATE 'del usuario'
T
Truncar 'el usuario' mesa (TI pueden tardar al mismo tiempo que a):

- mesa de Desactivación de ...

- truncar la tabla ...

Fila 0 (S) en 3.6610 segundos El


11. comprobar si existe tabla: existe

hbase (principal): 022: 0> existe 'Usuario'
T
tabla de usuarios qué existe

Fila 0 (S) en 0,0150 segundos El


12. La mesa Desactivar: desactivar

hbase (principal): 014: 0> desactivar 'Usuario'
0 fila (s) en 2.2660 segundos



Tabla 13. Activar: activar

hbase (principal): 017: 0> enable 'Usuario'
0 fila (s) en 1.3470 segundos



14. Eliminar la tabla: gota

Antes de borrar, primero debe desactivar

hbase (principal): 031: 0> disable 'TEST.USER'
0 fila (s) en 2.2640 segundos
hbase (principal): 033: 0> drop 'TEST.USER'
0 fila (s) en 1.2490 segundos

 

(C) .scala hbase funcionamiento de api

import org.apache.hadoop.hbase.{HTableDescriptor,HColumnDescriptor,HBaseConfiguration,TableName}
import org.apache.hadoop.hbase.client.{ConnectionFactory,Put,Get,Delete,Scan}
import org.apache.hadoop.hbase.util.Bytes
import scala.collection.JavaConversions._
import java.util



val conf=HBaseConfiguration.create()
//Connection 的创建是个重量级的工作,线程安全,是操作hbase的入口
val conn=ConnectionFactory.createConnection(conf)
//从Connection获得 Admin 对象(相当于以前的 HAdmin)
val admin=conn.getAdmin
//本例将操作的表名
val userTable=TableName.valueOf("user_score_table")


val cf1="scoreInfo"
val cf2="addressInfo"
val cn1="math"
val cn2="physics"
val cn3="Addr"


if(admin.tableExists(userTable)){
  println("Table exists!")
  //admin.disableTable(userTable)
  //admin.deleteTable(userTable)
  //exit()
}else{
  val tableDesc=new HTableDescriptor(userTable)
  tableDesc.addFamily(new HColumnDescriptor("scoreInfo".getBytes))
  tableDesc.addFamily(new HColumnDescriptor("addressInfo".getBytes))
  admin.createTable(tableDesc)
  println("Create table success!")
}



//插入一条rowkey 为 IromMan 的数据
val p=new Put("IromMan".getBytes())
//为put操作指定 column 和 value (以前的 put.add 方法被弃用了)
p.addColumn(cf1.getBytes,cn1.getBytes,"98".getBytes) // scoreInfo:math  98
p.addColumn(cf1.getBytes,cn2.getBytes,"87".getBytes) // scoreInfo:physics  87
p.addColumn(cf2.getBytes,cn3.getBytes,"Beijing".getBytes) // addressInfo
table.put(p)


//按rowkey查询数据
val listGet=new util.ArrayList[Get]
val get=new Get(Bytes.toBytes("id002_Thor"))
val get2=new Get(Bytes.toBytes("id003_jack"))
listGet.add(get)
listGet.add(get2)
val resultArr=myTable.get(listGet).flatMap(z=>{
  val cellArr=z.rawCells()
  val valueArr=cellArr.map(n=>(Bytes.toString(z.getRow()),(Bytes.toString(CellUtil.cloneQualifier(n)),Bytes.toString(CellUtil.cloneValue(n)))))
  valueArr
})


userTable.close()
conn.close()

 

Publicado 53 artículos originales · alabanza won 40 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/u012761191/article/details/105311437
Recomendado
Clasificación