Comandos de HBase Shell con ejemplos
⚡ Resumen inteligente
Los comandos de la consola de HBase permiten administrar tablas y datos directamente desde una línea de comandos interactiva, agrupados en comandos generales, comandos de administración de tablas como crear y eliminar, comandos de manipulación de datos como poner y obtener, y comandos de replicación de clústeres.
Cómo interactuar con HBase usando comandos de shell y Java API
Tras una instalación exitosa de HBase sobre Hadoop, disponemos de una consola interactiva para ejecutar diversos comandos y realizar varias operaciones. Mediante estos comandos, podemos realizar múltiples operaciones en las tablas de datos, lo que proporciona una mayor eficiencia en el almacenamiento de datos y una interacción más flexible para el cliente.
Podemos interactuar con HBase de dos maneras:
- modo de consola interactiva de HBase y
- A través de la Java API.
En HBase, el modo de consola interactiva se utiliza para interactuar con HBase para operaciones de tabla, administración de tablas y modelado de datos. Utilizando el Java Modelo API, podemos realizar todo tipo de operaciones de tablas y datos en HBase. Podemos interactuar con HBase utilizando ambos métodos. La única diferencia entre los dos es que Java Usos de la API Java El modo shell utiliza código para conectarse con HBase, mientras que el modo shell utiliza comandos de shell para conectarse con HBase.
Breve repaso de HBase antes de continuar:
- Usos de HBase Hadoop HBase utiliza archivos como sistema de almacenamiento para guardar grandes cantidades de datos. HBase consta de servidores maestros y servidores de región.
- Los datos que se almacenarán en HBase estarán organizados en regiones. Posteriormente, estas regiones se dividirán y se almacenarán en varios servidores de regiones.
- Estos comandos de shell permiten al programador definir esquemas de tablas y operaciones de datos mediante la interacción completa en modo shell.
- Cualquier comando que utilicemos se reflejará en el modelo de datos de HBase.
- Utilizamos comandos de shell de HBase en intérpretes de scripts del sistema operativo, como el shell Bash.
- El intérprete de comandos Bash es el intérprete de comandos predeterminado para la mayoría de los sistemas operativos. Linux y distribuciones del sistema operativo Unix.
- Las versiones avanzadas de HBase proporcionan comandos de shell con referencias orientadas a objetos al estilo JRuby para las tablas.
- Las variables de referencia de tabla se pueden utilizar para realizar operaciones de datos en el modo shell de HBase.
Por ejemplo:
- En este tutorial, hemos creado una tabla en la que "education" representa el nombre de la tabla y corresponde al nombre de la columna "guru99".
- En algunos comandos, "guru99" representa el nombre de una tabla.
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 acceder al comando de la consola de HBase, primero debemos ejecutar el código que se menciona a continuación.
hbase Shell
Una vez que accedemos a la consola de HBase, podemos ejecutar todos los comandos que se mencionan a continuación. Con estos comandos, podemos realizar todo tipo de operaciones con tablas en el modo de consola de HBase. El indicador de la consola interactiva aparece como se muestra a continuación:
Analicemos todos estos comandos y su uso uno por uno con un ejemplo.
Estado
Syntax:status
Este comando proporciona detalles sobre el estado del sistema, como el número de servidores en el clúster, la cantidad de servidores activos y la carga promedio. También puede especificar parámetros según el nivel de detalle que desee para conocer el estado del sistema. Los parámetros pueden ser "summary", "simple" o "detailed"; el parámetro predeterminado es "summary".
A continuación, mostramos cómo se pueden pasar diferentes parámetros al comando status. Si observamos la siguiente captura de pantalla, lo entenderemos mejor.
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
A continuación se muestra el estado:
Al ejecutar este comando de estado, se muestra información sobre la cantidad de servidores activos, inactivos y la carga promedio del servidor. En la captura de pantalla se observa que hay 1 servidor activo, 1 inactivo y una carga promedio de 7.0000.
Versión
Syntax: version
La versión mostrada se presenta a continuación:
- Este comando mostrará la versión de HBase que se está utilizando actualmente en modo de línea de comandos.
- Si ejecuta el comando de versión, obtendrá una salida como la que se muestra arriba.
Tabla de ayuda
Syntax:table_help
A continuación se muestra la salida de table_help:
Esta guía de comandos:
- Qué son los comandos referenciados a tablas y cómo utilizarlos.
- Proporcionará diferentes ejemplos de uso de comandos de la consola de HBase y sus sintaxis.
- En la captura de pantalla anterior, se muestra la sintaxis de los comandos "create" y "get_table", junto con su uso. Podemos manipular la tabla mediante estos comandos una vez creada en HBase.
- Proporcionará comandos de manipulación de tablas como put, get y toda la demás información de comandos.
whoami
Syntax: Whoami
La salida de whoami se muestra a continuación:
El comando “whoami” se utiliza para obtener la información del 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 pueden configurarse con valores de tiempo en segundos mediante TTL. HBase eliminará automáticamente las filas una vez transcurrido el tiempo de expiración. 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 administración de tablas. A continuación se muestran las diferencias importantes entre el manejo de TTL y los TTL de las familias de columnas:
- Los TTL de las células se expresan en unidades de milisegundos en lugar de segundos.
- El TTL de una celda no puede extender la vida útil efectiva de una celda más allá de la configuración TTL a 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. A continuación se muestran los comandos de administración de tablas:
- Crear
- Lista
- Describir
- Deshabilitar
- Desactivar todo
- Activar
- Activar todo
- Necesario
- Drop_all
- Mostrar filtros
- Alterar
- Alterar_estado
Veamos algunos ejemplos de uso de comandos en HBase.
Crear
Syntax: create <tablename>, <columnfamilyname>
Ejemplo:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
El resultado del comando de creación se muestra a continuación:
El ejemplo anterior explica cómo crear una tabla en HBase con el nombre especificado según las especificaciones de cada familia de columnas. Además, también podemos pasarle algunos atributos de ámbito de tabla. Para comprobar si la tabla 'education' se ha creado o no, utilizamos el comando "list" que se muestra a continuación. Véase también crear tablas HBase con Java y concha.
Lista
Syntax:list
La lista resultante se muestra a continuación:
- El comando “list” mostrará todas las tablas que existen o que se han creado en HBase.
- La información que se muestra en la captura de pantalla anterior muestra actualmente las tablas existentes en HBase.
- En esta captura de pantalla se muestra que hay un total de 8 tablas presentes en HBase.
- Podemos filtrar los valores de salida de las tablas pasando parámetros de expresiones regulares opcionales.
Describir
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
La salida de la descripción se muestra a continuación:
Este comando describe la tabla nombrada.
- Proporcionará más información sobre las familias de columnas presentes en la tabla mencionada.
- En nuestro caso, proporciona la descripción de la tabla “educación”.
- Proporcionará información sobre el nombre de la tabla, las familias de columnas, los filtros asociados, las versiones y algunos detalles más.
inhabilitar
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
La salida de desactivación se muestra a continuación:
- Este comando comenzará a deshabilitar la tabla especificada.
- Si es necesario eliminar o borrar una tabla, primero hay que deshabilitarla.
Aquí, en la captura de pantalla anterior, estamos desactivando 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 la del comando drop (excepto por la adición de una expresión regular para la coincidencia).
- Una vez que la tabla se desactiva, el usuario puede eliminarla de HBase.
- Antes de eliminar o soltarping una tabla, primero debe deshabilitarse.
Activar
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
La salida de habilitación se muestra a continuación:
- Este comando comenzará a habilitar la tabla especificada.
- Para recuperar la tabla que esté deshabilitada y devolverla a su estado anterior, utilizamos este comando.
- Si una tabla está deshabilitada en primera instancia y no se elimina ni se borra, y si queremos reutilizar la tabla deshabilitada, entonces tenemos que habilitarla usando este comando.
- Aquí, en la captura de pantalla anterior, estamos habilitando la tabla "educación".
mostrar filtros
Syntax: show_filters
A continuación se muestra el resultado de show_filters:
Este comando muestra todos los filtros presentes en HBase, como ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter, etc.
caer
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
El resultado de la caída se muestra a continuación:
Debemos observar los siguientes puntos para el comando drop:
- Para eliminar la tabla presente en HBase, primero debemos deshabilitarla.
- Para eliminar la tabla presente en HBase, primero debemos deshabilitarla.
- Por lo tanto, para eliminar una tabla, primero se debe deshabilitar la tabla utilizando el comando disable.
- Aquí, en la captura de pantalla anterior, estamos cayendoping la tabla “educación”.
- Antes de ejecutar este comando, es necesario que desactive la tabla “education”.
soltar_todo
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 regulares que coincidan con las expresiones regulares se eliminarán de HBase.
está habilitado
Syntax: is_enabled 'education'
Este comando verificará si la tabla especificada está habilitada o no. Normalmente, existe cierta confusión entre las acciones de los comandos "enable" e "is_enabled", que aclararemos 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 <tablename>, NAME=><column familyname>, 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, vamos a realizar operaciones de comando ALTER en tablas y en sus columnas. Realizaremos operaciones como:
- Modificación de nombres de familias de columnas simples y múltiples.
- Eliminar los nombres de las familias de columnas de una tabla.
- Existen otras operaciones que utilizan atributos de ámbito con una tabla.
Para cambiar o agregar la familia de columnas 'guru99_1' en la tabla 'education' a partir del valor actual, manteniendo un máximo de 5 versiones de celda. Aquí, "education" es el nombre de la tabla creada previamente con el nombre de columna "guru99". Con la ayuda de un comando ALTER, intentamos cambiar el esquema de la familia de columnas de guru99 a guru99_1, como se muestra a continuación:
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
También puede aplicar el comando ALTER a varias familias de columnas. Por ejemplo, definiremos dos nuevas columnas para nuestra tabla existente "education", como se muestra a continuación:
hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
- Podemos cambiar el esquema 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 tabla education.
- Podemos ver la forma de usar este comando en la captura de pantalla anterior.
En este paso, veremos cómo eliminar una familia de columnas de la tabla. Para eliminar la familia de columnas 'f1' en la tabla 'education', utilice uno de los siguientes comandos. El resultado se muestra en la captura de pantalla a continuación:
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
En este comando, intentamos eliminar el espacio de columnas llamado guru99_1 que creamos previamente en el primer paso. Como se muestra en las capturas de pantalla a continuación, se muestran dos pasos: cómo modificar un atributo de ámbito de tabla y cómo eliminar dicho atributo.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
Paso 1) Puede cambiar atributos de ámbito de tabla como MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, etc. Estos se pueden colocar 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 comando.
Uso:
- Podemos usar MAX_FILESIZE con la tabla como atributo de ámbito, como se indicó anteriormente.
- El número representado en MAX_FILESIZE está expresado en términos de memoria en bytes.
NOTA: El ámbito de la tabla MAX_FILESIZE estará determinado por algunos atributos presentes en HBase. MAX_FILESIZE también se incluye dentro de los atributos de ámbito de tabla.
Paso 2) También puede eliminar un atributo de ámbito de tabla utilizando el método table_att_unset. Consulte el comando a continuación:
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- La captura de pantalla anterior muestra el nombre de la tabla modificado con los atributos de ámbito.
- El método table_att_unset se utiliza para eliminar los atributos presentes en la tabla.
- En el segundo caso, estamos eliminando el atributo MAX_FILESIZE.
- Tras la ejecución del comando, simplemente se eliminará el atributo MAX_FILESIZE de la tabla "education".
alterar_estado
Syntax: alter_status 'education'
La salida de alter_status se muestra a continuación:
- Mediante este comando, puede obtener el estado del comando alter.
- Indica el número de regiones de la tabla que han recibido el esquema actualizado. Se pasa el nombre de la tabla.
- En la captura de pantalla anterior, se muestra que se ha actualizado 1/1 regiones. Esto significa que se ha actualizado una región. Si la actualización se realiza correctamente, se mostrará el mensaje "Listo".
Comandos de manipulación de datos
Estos comandos funcionan en la tabla para manipulaciones de datos, como insertar datos en una tabla, recuperar datos de una tabla y eliminar esquemas, etc. Los comandos que se incluyen en estos son:
- Contar
- poner
- Obtén
- Eliminar
- Eliminar todos
- Truncar
- Escanear
Veamos el uso de estos comandos con un ejemplo. Véase también lectura y escritura de datos HBase.
Contar
Syntax: count <'tablename'>, CACHE =>1000
- Este comando recupera el número de filas de una tabla. El valor que devuelve es el número de filas.
- El recuento actual se muestra por cada 1000 filas de forma predeterminada.
- El intervalo de conteo puede especificarse opcionalmente.
- El tamaño predeterminado de la caché es de 10 filas.
- El comando count funcionará rápidamente cuando esté configurado con la caché adecuada.
Ejemplo:
hbase> count 'guru99', CACHE=>1000
El resultado del conteo se muestra a continuación:
Este ejemplo de conteo recupera 1000 filas a la vez de la tabla "guru99". Podemos reducir el tamaño de la caché si la tabla contiene más filas. Sin embargo, por defecto, recuperará una fila a la vez.
hbase>count 'guru99', INTERVAL => 100000 hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000
Supongamos que la tabla “guru99” tiene alguna referencia a otra tabla, como por ejemplo g. También podemos ejecutar el comando count en la referencia a la tabla, como se muestra a continuación:
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
poner
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Este comando se utiliza para lo siguiente:
- Pondrá un "valor" de celda en una tabla, fila o columna definida o especificada.
- Opcionalmente, coordinará una marca de tiempo.
Ejemplo: Aquí, estamos colocando valores en la tabla “guru99” en la fila r1 y la columna c1.
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Hemos introducido 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 a otra tabla, como por ejemplo g. También podemos ejecutar el comando en la referencia a la tabla, como por ejemplo:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
El resultado será el que se muestra en la captura de pantalla anterior tras introducir los valores en “guru99”. Para comprobar si el valor de entrada se ha insertado correctamente en la tabla, utilizamos el comando “scan”. En la siguiente captura de pantalla, podemos ver que los valores se han insertado correctamente.
Code Fragmento: Para practicar
create 'guru99', {NAME=>'Edu', VERSIONS=>213423443} put 'guru99', 'r1', 'Edu:c1', 'value', 10 put 'guru99', 'r1', 'Edu:c1', 'value', 15 put 'guru99', 'r1', 'Edu:c1', 'value', 30
A partir del fragmento de código, estamos haciendo lo siguiente:
- Aquí, estamos creando una tabla llamada 'guru99' con el nombre de columna "Edu".
- Al usar el comando “put”, estamos colocando valores en la fila llamada r1 en la columna “Edu” en la tabla “guru99”.
Obtén
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aquí, Incluye TIMERANGE, TIMESTAMP, VERSIONS y FILTERS. Al usar este comando, obtendrá el contenido de una fila o celda de la tabla. Además, puede agregar parámetros adicionales, como TIMESTAMP, TIMERANGE, VERSIONS, FILTERS, etc., para obtener el contenido de una fila o celda específica.
La siguiente salida devuelve los valores de la fila r1 y la columna c1:
Ejemplos: -
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Para la tabla “guru99”, los valores de la fila r1 y la columna c1 se mostrarán utilizando 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 r1 en el rango de tiempo ts1 a ts2 se mostrarán usando este comando.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Para la tabla “guru99”, los valores de la fila r1 y las familias de columnas c1, c2 y c3 se mostrarán utilizando este comando.
Eliminar
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- Este comando eliminará el valor de la celda en una fila o columna definida de una tabla.
- La función Eliminar debe coincidir exactamente con las coordenadas de la celda eliminada.
- Al escanear, la opción de eliminar una celda suprime las versiones anteriores de los valores.
Ejemplo: El comando delete que aparece a continuación elimina las celdas r1 y c1 de la tabla guru99:
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 a otra tabla, como por ejemplo g.
- También podemos ejecutar el comando en la referencia de tabla, 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 los nombres de las columnas y una marca de tiempo en la sintaxis.
Ejemplo: El comando deleteall que se muestra a continuación elimina todas las celdas de la fila r1:
hbase>deleteall 'guru99', 'r1', 'c1'
Esto eliminará todas las filas y columnas presentes en la tabla. Opcionalmente, podemos especificar los nombres de las columnas.
Truncar
Syntax: truncate <tablename>
El comando truncate que aparece a continuación vacía la tabla mientras se mantieneping su esquema:
Tras truncar una tabla de HBase, el esquema permanecerá, pero no los registros. Este comando realiza tres funciones, que se detallan a continuación:
- Deshabilita la tabla si ya existe.
- Elimina la tabla si ya existe.
- 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'
A continuación se muestra el resultado del escaneo:
En la captura de pantalla anterior:
- Muestra la tabla “guru99” con el nombre de la columna y los valores.
- Consta de tres valores de fila, r1, r2 y r3, para el único valor de columna c1.
- Muestra los valores asociados a las filas.
Ejemplos: - Los diferentes usos del comando scan:
| Comando | Uso |
|---|---|
| escanear '.META.', {COLUMNAS => 'info:regioninfo'} | Muestra toda la información de metadatos relacionada con las columnas presentes en las tablas de HBase. |
| escanear 'guru99', {COLUMNAS => ['c1', 'c2'], LÍMITE => 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', {COLUMNAS => 'c1', RANGO DE TIEMPO => [1303668804, 1303668904]} | Muestra el contenido de guru99 con su nombre de columna c1 con los valores presentes dentro del rango de tiempo mencionado en el atributo de valor. |
| 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. |
Code Ejemplo: Primero, crea una tabla e introduce valores en ella. La entrada se muestra en la siguiente captura de pantalla:
create 'guru99', {NAME=>'e', VERSIONS=>2147483647} put 'guru99', 'r1', 'e:c1', 'value', 10 put 'guru99', 'r1', 'e:c1', 'value', 12 put 'guru99', 'r1', 'e:c1', 'value', 14 delete 'guru99', 'r1', 'e:c1', 11
Si ejecutamos el comando de escaneo:
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
Mostrará el resultado que se muestra a continuación:
La información que se muestra en la captura de pantalla anterior es la siguiente:
- Escaneando la tabla guru99 con los atributos RAW=>true, VERSIONS=>1000.
- Mostrar filas con familias de columnas y valores.
- En la tercera fila, los valores mostrados indican el valor eliminado presente en la columna.
- El resultado que muestra es aleatorio; no puede estar en el mismo orden que los valores que insertamos en la tabla.
Cluster Comandos de replicación
- Estos comandos funcionan en el modo de configuración de clúster de HBase.
- Estos comandos se utilizan generalmente para agregar y eliminar nodos a un clúster, así como para iniciar y detener la replicación.
| Comando | Funcionalidad |
|---|---|
| agregar_peer | Agrega nodos pares a un clúster para replicarlos. hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod |
| eliminar_peer | Detiene el flujo de replicación definido y elimina toda la información de metadatos sobre el par. hbase> eliminar_peer '1' |
| inicio_replicación | Reinicia todas las funciones de replicación. hbase> inicio_replicación |
| detener_replicación | Desactiva todas las funciones de replicación. hbase>detener_replicación |
























