sql >> Base de Datos >  >> NoSQL >> HBase

Cómo HBase en CDP puede aprovechar S3 de Amazon

Cloudera Data Platform (CDP) proporciona una solución lista para usar que permite que las implementaciones de Apache HBase usen Amazon Simple Storage Service (S3) como su capa de persistencia principal para guardar datos de tablas. Amazon S3 es una tienda de objetos que ofrece un alto grado de durabilidad con una estructura de costos de pago por uso. No hay ningún componente del lado del servidor para ejecutar o administrar para S3; todo lo que se necesita es la biblioteca de cliente de S3 y las credenciales de AWS. Sin embargo, HBase requiere un sistema de archivos consistente y atómico, lo que significa que no puede usar S3 directamente porque es un almacén de objetos finalmente consistente. Tanto CDH como HDP solo han proporcionado HBase utilizando únicamente HDFS porque ha habido impedimentos de larga data que impedían que HBase usara S3 de forma nativa. Para abordar estos problemas, hemos creado una solución lista para usar que estamos entregando por primera vez a través de CDP. Cuando lanza un clúster de base de datos operativa (HBase) en CDP, HBase StoreFiles (los archivos de respaldo para las tablas de HBase) se almacenan en S3 y los registros de escritura anticipada (WAL) de HBase se almacenan en una instancia de HDFS que se ejecuta junto con HBase como de costumbre.

Describiremos brevemente cada componente que forma parte de esta arquitectura y la función que cumple cada uno.

Hadoop proporciona el adaptador del sistema de archivos S3A para acceder a los datos en S3 a través de las API estándar del sistema de archivos. El adaptador S3A permite que las aplicaciones escritas en las API de Hadoop accedan a los datos en S3 mediante un URI con el formato "s3a://my_bucket/" en lugar de "hdfs://namenode:8020/" como con HDFS. La capacidad de especificar un "sistema de archivos" predeterminado para usar hace que las migraciones de estilo "elevar y cambiar" de clústeres locales con HDFS a clústeres basados ​​en la nube con S3 sean extremadamente simples. HBase se puede configurar con una ubicación de almacenamiento base (por ejemplo, un directorio en HDFS o un depósito S3) para todos los datos de la aplicación, lo que permite que HBase funcione de la misma manera, independientemente de si esos datos están en HDFS o S3.

S3Guard es parte del proyecto Apache Hadoop que proporciona una lista de directorios coherente y el estado de los objetos para el adaptador S3A, transparente para la aplicación. Para lograr esto, S3Guard utiliza una base de datos uniforme y distribuida para realizar un seguimiento de los cambios realizados en S3 y garantiza que un cliente siempre vea el estado correcto de S3. Sin S3Guard, es posible que HBase no vea un nuevo StoreFile que se agregó a una tabla de HBase. Si HBase no observó un archivo, aunque sea temporalmente, esto podría causar la pérdida de datos en HBase. Sin embargo, S3guard no proporciona todo lo que HBase requiere para usar S3.

HBase Object Store Semantics (o simplemente "HBOSS") es un nuevo proyecto de software bajo el proyecto Apache HBase creado específicamente para cerrar la brecha entre S3Guard y HBase. HBOSS es una fachada sobre el adaptador S3A y S3Guard que utiliza un bloqueo distribuido para garantizar que las operaciones de HBase puedan atómicamente manipular sus archivos en S3. Un ejemplo donde HBase requiere atomicidad es un cambio de nombre de directorio. Con el cliente S3, se implementa un cambio de nombre como una copia de los datos de origen en el destino seguido de una eliminación de los datos de origen. Sin el bloqueo que proporciona HBOSS, HBase podría ver la operación de cambio de nombre en curso, lo que podría causar una pérdida de datos. Para lograr este bloqueo distribuido, HBOSS usa Apache ZooKeeper. La reutilización de ZooKeeper es por diseño, ya que HBase ya requiere una instancia de ZooKeeper para garantizar que todos los servicios de HBase funcionen juntos. Por lo tanto, la incorporación de HBOSS no requiere una carga adicional de administración de servicios y cierra la brecha en lo que HBase requiere para usar S3 con S3Guard.

Configurar HBase para usar S3 para sus StoreFiles tiene muchos beneficios para nuestros usuarios. Uno de esos beneficios es que los usuarios pueden desacoplar su almacenamiento y computación. Si hay momentos en los que no es necesario acceder a HBase, HBase se puede cerrar limpiamente y recuperar todos los recursos informáticos para eliminar cualquier costo de operación. Cuando se necesita de nuevo el acceso a HBase, el clúster de HBase se puede volver a crear, apuntando a los mismos datos en S3. Al iniciarse, HBase puede reiniciarse solo a partir de los datos en S3.

El uso de S3 para almacenar HBase StoreFiles presenta algunos desafíos. Uno de esos problemas es el aumento de la latencia para una búsqueda aleatoria de un archivo en S3 en comparación con HDFS. El aumento de la latencia en el acceso a S3 daría como resultado que HBase Gets and Scans tardara más de lo que normalmente tardaría con HDFS. Las latencias de S3 varían de 10 a 100 milisegundos en comparación con el rango de 0,1 a 9 milisegundos con HDFS. CDP puede reducir el impacto de esta latencia de S3 configurando automáticamente HBase para usar BucketCache. Con BucketCache habilitado, las latencias de S3 solo se experimentan la primera vez que se lee un StoreFile de S3. Después de que HBase lea un archivo, intentará almacenar en caché los datos sin procesar para reemplazar las lecturas lentas de S3 con lecturas rápidas de la memoria local. Cuando se inicia un clúster de HBase a través de CDP, se configura automáticamente para almacenar en memoria caché los datos leídos recientemente de S3 para ofrecer lecturas más rápidas de los datos "calientes".

Estamos muy complacidos de ofrecer estas nuevas capacidades a nuestros usuarios. ¡Pruebe HBase ejecutándose en S3 en la plantilla de base de datos operativa en CDP hoy mismo!