Comandos de shell de HBase con ejemplos

Tabla de contenido:

Anonim

Después de la instalación exitosa de HBase sobre Hadoop, obtenemos un shell interactivo para ejecutar varios comandos y realizar varias operaciones. Usando estos comandos, podemos realizar múltiples operaciones en tablas de datos que pueden brindar una mejor eficiencia de almacenamiento de datos y una interacción flexible por parte del cliente.

Podemos interactuar con HBase de dos formas,

  • Modo shell interactivo HBase y
  • A través de la API de Java

En HBase, el modo de shell interactivo se utiliza para interactuar con HBase para operaciones de tabla, gestión de tablas y modelado de datos. Al utilizar el modelo de API de Java, podemos realizar todo tipo de operaciones de tabla y datos en HBase. Podemos interactuar con HBase usando ambos métodos.

La única diferencia entre estos dos es que la API de Java usa código java para conectarse con HBase y el modo shell usa comandos de shell para conectarse con HBase.

Superposición rápida de HBase antes de proceder.

  • HBase utiliza archivos Hadoop como sistema de almacenamiento para almacenar grandes cantidades de datos. Hbase consta de servidores maestros y servidores de regiones
  • Los datos que se van a almacenar en HBase estarán en forma de regiones. Además, estas regiones se dividirán y almacenarán en varios servidores de regiones.
  • Estos comandos de shell permiten al programador definir esquemas de tablas y operaciones de datos utilizando la interacción completa del modo de shell
  • Cualquiera que sea el comando que usemos, se reflejará en el modelo de datos de HBase
  • Usamos comandos de shell HBase en intérpretes de scripts del sistema operativo como Bash shell
  • Bash shell es el intérprete de comandos predeterminado para la mayoría de las distribuciones operativas de Linux y Unix
  • Las versiones avanzadas de HBase proporcionan comandos de shell, referencias orientadas a objetos de estilo jruby para tablas
  • Las variables de referencia de tabla se pueden utilizar para realizar operaciones de datos en el modo de shell de HBase

Por ejemplo ,

  • En este tutorial, hemos creado una tabla en la que 'educación' representa el nombre de la tabla y corresponde al nombre de la columna "guru99".
  • En algunos comandos, "guru99", en sí mismo, representa un nombre de tabla.

En este tutorial, aprenderá,

  • Comandos generales
  • Comandos de gestión de tablas
  • Comandos de manipulación de datos
  • Comandos de replicación de clúster

Comandos generales

En Hbase, los comandos generales se clasifican en los siguientes comandos

  • Estado
  • Versión
  • Table_help (escanear, soltar, obtener, colocar, deshabilitar, etc.)
  • Quién soy

Para ingresar al comando de shell de HBase, en primer lugar, tenemos que ejecutar el código como se menciona a continuación

hbase Shell

Una vez que entremos en el shell de HBase, podemos ejecutar todos los comandos del shell que se mencionan a continuación. Con la ayuda de estos comandos, podemos realizar todo tipo de operaciones de tabla en el modo de shell de HBase.

Veamos todos estos comandos y su uso uno por uno con un ejemplo.

Estado

Syntax:status

Este comando proporcionará detalles sobre el estado del sistema, como la cantidad de servidores presentes en el clúster, el número de servidores activos y el valor de carga promedio. También puede pasar cualquier parámetro en particular dependiendo del estado detallado que desee conocer sobre el sistema. Los parámetros pueden ser 'resumen', 'simple' o 'detallado' , el parámetro predeterminado proporcionado es "resumen".

A continuación, mostramos cómo puede pasar diferentes parámetros al comando de estado.

Si observamos la captura de pantalla a continuación, tendremos una mejor idea.

hbase(main):001:0>statushbase(main):002:0>status 'simple'hbase(main):003:0>status 'summary'hbase(main):004:0> status 'detailed'

Cuando ejecutamos el estado de este comando, dará información sobre el número de servidores presentes, inactivos y la carga promedio del servidor, aquí en la captura de pantalla muestra la información como: 1 servidor en vivo, 1 servidor inactivo y carga promedio de 7.0000.

Versión

Syntax: version

  • Este comando mostrará la versión de HBase utilizada actualmente en el modo de comando
  • Si ejecuta el comando de versión, dará la salida como se muestra arriba

Ayuda de mesa

Syntax:table_help

Este comando guía

  • Qué y cómo usar los comandos referenciados a tablas
  • Proporcionará diferentes usos de comandos de shell de HBase y sus sintaxis
  • Aquí, en la captura de pantalla anterior, muestra la sintaxis del comando " crear" y " get_table" con su uso. Podemos manipular la tabla a través de estos comandos una vez que se crea la tabla en HBase.
  • Dará comandos de manipulación de tablas como put, get y toda la información de los demás comandos.

quién soy

Sintaxis:

Syntax: Whoami

Este comando "whoami" se utiliza para devolver la información de usuario actual de HBase desde el clúster de HBase.

Proporcionará información como

  • Grupos presentes en HBase
  • La información del usuario, por ejemplo, en este caso "hduser", representa el nombre de usuario como se muestra en la captura de pantalla.

TTL (tiempo de vida): atributo

En HBase, las familias de columnas se pueden establecer en valores de tiempo en segundos usando TTL. HBase eliminará automáticamente las filas una vez que se alcance el tiempo de vencimiento. Este atributo se aplica a todas las versiones de una fila, incluso a la versión actual.

El tiempo TTL codificado en HBase para la fila se especifica en UTC. Este atributo se utiliza con los comandos de gestión de tablas.

A continuación se muestran las diferencias importantes entre el manejo de TTL y los TTL de la familia de columnas.

  • Los TTL de celda se expresan en milisegundos en lugar de segundos.
  • Los TTL de una celda no pueden extender la vida útil efectiva de una celda más allá de una configuración de TTL de nivel de familia de columnas.

Comandos de gestión de tablas

Estos comandos permitirán a los programadores crear tablas y esquemas de tablas con filas y familias de columnas.

Los siguientes son comandos de administración de tablas

  • Crear
  • Lista
  • Describir
  • Desactivar
  • Desactivar todo
  • Habilitar
  • Permitir a todos
  • Soltar
  • Drop_all
  • Mostrar filtros
  • Alterar
  • Alter_status

Veamos varios usos de comandos en HBase con un ejemplo.

Crear

Syntax: create 
, 

Ejemplo:-

hbase(main):001:0> create 'education' ,'guru99'0 rows(s) in 0.312 seconds=>Hbase::Table - education

El ejemplo anterior explica cómo crear una tabla en HBase con el nombre especificado según el diccionario o las especificaciones según la familia de columnas. Además de esto, también podemos pasarle algunos atributos de alcance de tabla.

Para verificar si la tabla 'educación' está creada o no, tenemos que usar el comando "lista" como se menciona a continuación.

Lista

Syntax:list

  • El comando "Lista" mostrará todas las tablas que están presentes o creadas en HBase
  • La salida que se muestra en la captura de pantalla anterior muestra actualmente las tablas existentes en HBase
  • Aquí, en esta captura de pantalla, muestra que hay un total de 8 tablas presentes dentro de HBase
  • Podemos filtrar los valores de salida de las tablas pasando parámetros de expresión regular opcionales

Describir

Syntax:describe 

hbase(main):010:0>describe 'education'

Este comando describe la tabla nombrada.

  • Dará más información sobre las familias de columnas presentes en la tabla mencionada.
  • En nuestro caso, da la descripción sobre la tabla "educación".
  • Dará información sobre el nombre de la tabla con familias de columnas, filtros asociados, versiones y algunos detalles más.

desactivar

Syntax: disable 

hbase(main):011:0>disable 'education'
  • Este comando comenzará a deshabilitar la tabla nombrada
  • Si la tabla debe eliminarse o eliminarse, primero debe deshabilitarse

Aquí, en la captura de pantalla anterior, estamos deshabilitando la educación de la tabla.

Desactivar todo

 Syntax: disable_all<"matching regex"
  • Este comando deshabilitará todas las tablas que coincidan con la expresión regular dada.
  • La implementación es la misma que el comando de eliminación (excepto agregar expresiones regulares para hacer coincidir)
  • Una vez que la tabla se desactiva, el usuario puede eliminar la tabla de HBase
  • Antes de eliminar o soltar la tabla, primero debe deshabilitarse

Habilitar

Syntax: enable 

hbase(main):012:0>enable 'education'
  • Este comando comenzará a habilitar la tabla nombrada
  • Cualquiera que sea la tabla que esté deshabilitada, para volver a su estado anterior usamos este comando
  • Si una tabla está deshabilitada en la primera instancia y no se elimina ni se quita, y si queremos reutilizar la tabla deshabilitada, entonces tenemos que habilitarla usando este comando.
  • Aquí, en la captura de pantalla anterior, habilitamos la tabla "educación".

mostrar filtros

Syntax: show_filters

Este comando muestra todos los filtros presentes en HBase como ColumnPrefix Filter, TimestampsFilter, PageFilter, FamilyFilter, etc.

soltar

Syntax:drop 

hbase(main):017:0>drop 'education'

Tenemos que observar los puntos siguientes para el comando de caída.

  • Para eliminar la tabla presente en HBase, primero tenemos que deshabilitarla
  • Para eliminar la tabla presente en HBase, primero tenemos que deshabilitarla
  • Entonces, o la tabla para eliminar o eliminar primero, la tabla debe deshabilitarse usando el comando deshabilitar
  • Aquí, en la captura de pantalla anterior, estamos eliminando la tabla "educación".
  • Antes de ejecutar este comando, es necesario que desactive la tabla "educación".

drop_all

Syntax: drop_all<"regex">
  • Este comando eliminará todas las tablas que coincidan con la expresión regular dada
  • Las tablas deben deshabilitarse primero antes de ejecutar este comando usando disable_all
  • Las tablas con expresiones de coincidencia de expresiones regulares se eliminarán de HBase

está habilitado

Syntax: is_enabled 'education'

Este comando verificará si la tabla nombrada está habilitada o no. Por lo general, existe una pequeña confusión entre la acción de comando "enable" y "is_enabled", que aclaramos aquí.

  • Supongamos que una tabla está deshabilitada, para usar esa tabla tenemos que habilitarla usando el comando enable
  • El comando is_enabled comprobará si la tabla está habilitada o no

alterar

Syntax: alter 
, NAME=>, VERSIONS=>5

Este comando altera el esquema de la familia de columnas. Para entender qué hace exactamente, lo hemos explicado aquí con un ejemplo.

Ejemplos:

En estos ejemplos, realizaremos operaciones de comando alter en tablas y sus columnas. Realizaremos operaciones como

  • Modificación de nombres de familias de columnas individuales y múltiples
  • Eliminando nombres de familias de columnas de la tabla
  • Varias otras operaciones que usan atributos de alcance con tabla
  1. Para cambiar o agregar la familia de columnas 'guru99_1' en la tabla 'educación' del valor actual para mantener un máximo de VERSIONES de 5 celdas ,
  • "educación" es el nombre de la tabla creado con el nombre de columna "guru99" anteriormente
  • Aquí, con la ayuda de un comando alter, estamos tratando de cambiar el esquema de la familia de columnas a guru99_1 de guru99

hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
  1. También puede operar el comando alter en varias familias de columnas. Por ejemplo, definiremos dos columnas nuevas para nuestra tabla existente "educación".
 hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}

  • Podemos cambiar los esquemas de más de una columna a la vez usando este comando
  • guru99_2 y guru99_3 como se muestra en la captura de pantalla anterior son los dos nuevos nombres de columna que hemos definido para la educación de la tabla
  • Podemos ver la forma de usar este comando en la captura de pantalla anterior.
  1. En este paso, veremos cómo eliminar la familia de columnas de la tabla. Para eliminar la familia de columnas 'f1' en la tabla 'educación'.

Utilice uno de estos comandos a continuación,

hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1' 
  • En este comando, estamos tratando de eliminar el nombre del espacio de columna guru99_1 que creamos previamente en el primer paso.

  1. Como se muestra en las capturas de pantalla a continuación, muestra dos pasos: cómo cambiar el atributo del alcance de la tabla y cómo eliminar el atributo del alcance de la tabla.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'

Paso 1) Puede cambiar los atributos del alcance de la tabla como MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, etc. Estos se pueden poner al final; por ejemplo, para cambiar el tamaño máximo de una región a 128 MB o cualquier otro valor de memoria usamos este mando.

Uso:

  • Podemos usar MAX_FILESIZE con la tabla como atributo de alcance como arriba
  • El número representado en MAX_FILESIZE está en términos de memoria en bytes

N OTA: El alcance de la tabla de atributos MAX_FILESIZE estará determinado por algunos atributos presentes en HBase. MAX_FILESIZE también se incluyen en los atributos de alcance de la tabla.

Paso 2) También puede eliminar un atributo de alcance de tabla utilizando el método table_att_unset. Si ves el comando

alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
  • La captura de pantalla anterior muestra el nombre de la tabla alterada con atributos de alcance
  • El método table_att_unset se utiliza para desarmar atributos presentes en la tabla
  • La segunda instancia estamos desarmando el atributo MAX_FILESIZE
  • Después de la ejecución del comando, simplemente anulará el atributo MAX_FILESIZE de la tabla "educación".

alter_status

 Syntax: alter_status 'education'

  • A través de este comando, puede obtener el estado del comando alter
  • Lo que indica el número de regiones de la tabla que han recibido el nombre de la tabla de paso de esquema actualizado
  • Aquí, en la captura de pantalla anterior, muestra 1/1 regiones actualizadas. Significa que ha actualizado una región. Después de eso, si tiene éxito, se mostrará el comentario hecho.

Comandos de manipulación de datos

Estos comandos funcionarán en la tabla relacionados con la manipulación de datos, como poner datos en una tabla, recuperar datos de una tabla y eliminar esquemas, etc.

Los comandos vienen debajo de estos son

  • Contar
  • Poner
  • Obtener
  • Borrar
  • Eliminar todos
  • Truncar
  • Escanear

Veamos el uso de estos comandos con un ejemplo.

Contar

Syntax: count <'tablename'>, CACHE =>1000
  • El comando recuperará el recuento de varias filas en una tabla. El valor devuelto por este es el número de filas.
  • El recuento actual se muestra por cada 1000 filas de forma predeterminada.
  • El intervalo de recuento se puede especificar opcionalmente.
  • El tamaño de caché predeterminado es de 10 filas.
  • El comando Count funcionará rápido cuando esté configurado con la caché correcta.

Ejemplo:

hbase> count 'guru99', CACHE=>1000

Este recuento de ejemplo obtiene 1000 filas a la vez de la tabla "Guru99".

Podemos hacer caché a un valor más bajo si la tabla consta de más filas.

Pero, de forma predeterminada, buscará una fila a la vez.

hbase>count 'guru99', INTERVAL => 100000hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000

Si supongamos que la tabla "Guru99" tiene alguna referencia de tabla como, por ejemplo, g.

Podemos ejecutar el comando count en la referencia de la tabla también como se muestra a continuación

hbase>g.count INTERVAL=>100000hbase>g.count INTERVAL=>10, CACHE=>1000

Poner

Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

Este comando se usa para seguir cosas

  • Pondrá un 'valor' de celda en una tabla, fila o columna definida o especificada.
  • Opcionalmente, coordinará la marca de tiempo.

Ejemplo:

  • Aquí estamos colocando valores en la tabla "guru99" debajo de la fila r1 y la columna c1.
    hbase> put 'guru99', 'r1', 'c1', 'value', 10
  • Hemos colocado tres valores, 10, 15 y 30 en la tabla "guru99" como se muestra en la captura de pantalla a continuación.

  • Supongamos que la tabla "Guru99" tiene alguna referencia de tabla como, por ejemplo, g. También podemos ejecutar el comando en la referencia de la tabla también como

    hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
  • La salida será como se muestra en la captura de pantalla anterior después de colocar valores en "guru99".

Para comprobar si el valor de entrada está correctamente insertado en la tabla, usamos el comando "escanear". En la siguiente captura de pantalla, podemos ver que los valores están insertados correctamente

Fragmento de código: para la práctica

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}put 'guru99', 'r1', 'Edu:c1', 'value', 10put 'guru99', 'r1', 'Edu:c1', 'value', 15put 'guru99', 'r1', 'Edu:c1', 'value', 30

Desde el fragmento de código, estamos haciendo estas cosas

  • Aquí estamos creando una tabla llamada 'guru99' con el nombre de columna como "Edu".
  • Al usar el comando "poner", estamos colocando valores en el nombre de la fila r1 en la columna "Edu" en la tabla "guru99".

Obtener

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

Aquí incluyen TIMERANGE, TIMESTAMP, VERSIONS y FILTROS.

Al usar este comando, obtendrá un contenido de fila o celda presente en la tabla. Además de eso, también puede agregarle parámetros adicionales como TIMESTAMP, TIMERANGE, VERSIONS, FILTERS, etc. para obtener un contenido de fila o celda en particular.

Ejemplos: -

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

Para la tabla "guru99 ', los valores de la fila r1 y la columna c1 se mostrarán usando este comando como se muestra en la captura de pantalla anterior.

hbase> get 'guru99', 'r1'

Para la tabla "guru99", los valores de la fila r1 se mostrarán usando este comando

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

Para la tabla "guru99", los valores de la fila 1 en el rango de tiempo ts1 y ts2 se mostrarán usando este comando.

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

Para la tabla "guru99", la fila r1 y las familias de columnas, los valores c1, c2, c3 se mostrarán usando este comando

Borrar

Syntax:delete <'tablename'>,<'row name'>,<'column name'>
  • Este comando eliminará el valor de la celda en la tabla definida de fila o columna.
  • Eliminar debe y debe coincidir exactamente con las coordenadas de las celdas eliminadas.
  • Al escanear, eliminar celda suprime las versiones anteriores de los valores.

Ejemplo:

hbase(main):)020:0> delete 'guru99', 'r1', 'c1''. 
  • La ejecución anterior eliminará la fila r1 de la familia de columnas c1 en la tabla "guru99".
  • Supongamos que la tabla "guru99" tiene alguna referencia de tabla como, por ejemplo, g.
  • Podemos ejecutar el comando en la referencia de la tabla también como hbase> g.delete 'guru99', 'r1', 'c1' ".

eliminar todos

Syntax: deleteall <'tablename'>, <'rowname'>

  • Este comando eliminará todas las celdas de una fila determinada.
  • Opcionalmente, podemos definir nombres de columnas y marcas de tiempo en la sintaxis.

Ejemplo:-

hbase>deleteall 'guru99', 'r1', 'c1'

Esto eliminará todas las filas y columnas presentes en la tabla. Opcionalmente, podemos mencionar los nombres de las columnas en eso.

Truncar

Syntax: truncate 

Después de truncar una tabla hbase, el esquema presentará pero no los registros. Este comando realiza 3 funciones; esos se enumeran a continuación

  • Desactiva la tabla si ya está presente.
  • Deja la tabla si ya está presente
  • Recrea la tabla mencionada

Escanear

Syntax: scan <'tablename'>, {Optional parameters}

Este comando escanea toda la tabla y muestra su contenido.

  • Podemos pasar varias especificaciones opcionales a este comando de escaneo para obtener más información sobre las tablas presentes en el sistema.
  • Las especificaciones del escáner pueden incluir uno o más de los siguientes atributos.
  • Estos son TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW y STOPROW.
scan 'guru99' 

La salida como se muestra a continuación en la captura de pantalla

En la captura de pantalla anterior

  • Muestra la tabla "guru99" con el nombre y los valores de la columna.
  • Consta de tres valores de fila r1, r2, r3 para el valor de una sola columna c1
  • Muestra los valores asociados con las filas.

Ejemplos: -

Los diferentes usos del comando de escaneo

Mando

Uso

escanear '.META.', {COLUMNS => 'info: regioninfo'}

Muestra toda la información de metadatos relacionada con las columnas que están presentes en las tablas en HBase

escanear 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

Muestra el contenido de la tabla guru99 con sus familias de columnas c1 y c2 limitando los valores a 10

escanear 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}

Muestra el contenido de guru99 con su nombre de columna c1 con los valores presentes entre el valor del atributo de rango de tiempo mencionado

escanear 'guru99', {RAW => verdadero, VERSIONES => 10}

En este comando, RAW => true proporciona una función avanzada como mostrar todos los valores de celda presentes en la tabla guru99

Ejemplo de código:

Primero cree la tabla y coloque los valores en la tabla

create 'guru99', {NAME=>'e', VERSIONS=>2147483647}put 'guru99', 'r1', 'e:c1', 'value', 10put 'guru99', 'r1', 'e:c1', 'value', 12put 'guru99', 'r1', 'e:c1', 'value', 14delete 'guru99', 'r1', 'e:c1', 11

Captura de pantalla de entrada:

Si ejecutamos el comando de escaneo

Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}

Mostrará la salida que se muestra a continuación.

Captura de pantalla de salida:

El resultado que se muestra en la captura de pantalla anterior proporciona la siguiente información

  • Escaneando la tabla guru99 con atributos RAW => verdadero, VERSIONES => 1000
  • Visualización de filas con valores y familias de columnas
  • En la tercera fila, los valores mostrados muestran el valor eliminado presente en la columna
  • La salida que muestra es aleatoria; no puede ser el mismo orden que los valores que insertamos en la tabla

Comandos de replicación de clúster

  • Estos comandos funcionan en el modo de configuración de clúster de HBase.
  • Para agregar y eliminar pares al clúster y para iniciar y detener la replicación, estos comandos se utilizan en general.

Mando

Funcionalidad

add_peer

Agregue pares al clúster para replicar

hbase> add_peer '3', zk1, zk2, zk3: 2182: / hbase-prod

remove_peer

Detiene el flujo de replicación definido.

Elimina toda la información de metadatos sobre el par.

hbase> remove_peer '1'

start_replication

Reinicia todas las funciones de replicación.

hbase> start_replication

stop_replication

Detiene todas las funciones de replicación

hbase> stop_replication

Resumen :

El shell de HBase y los comandos generales brindan información completa sobre los diferentes tipos de comandos de manipulación de datos, administración de tablas y replicación de clústeres. Podemos realizar varias funciones usando estos comandos en tablas presentes en HBase.