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

HBase:5 consejos para que se ejecutan en la memoria baja EC2

Cuando se ejecuta en EC2, que a menudo no se puede ganar cuando se trata de tipos de instancia. Uno de los tipos más rentables disponibles es el c1.xlarge. Tiene suficiente CPU para compactaciones mango, una cantidad decente de disco y de alta red de E / S. Sin embargo, hemos encontrado que la relativamente baja de 7 GB de memoria en el c1.xlarge a menudo conduce a problemas de estabilidad en racimos HBase altamente concurrentes. Mientras que hay otras opciones más caras, este tutorial HBase le ayudará a sacar el máximo provecho de sus RegionServers c1.xlarge.

1. Reducir el número de regiones por RegionServer

Lo ideal sería que usted debe tener menos de 100 regiones por RegionServer . El MEMSTORE se divide para su uso por todas las regiones activas, y cada región de las altas (por defecto) 2 MB de memoria para el MSLAB. Cortar este número cosas ayuda se ejecutará sin problemas, y no sólo desde el punto de vista de memoria.

2. Robar la memoria de otros servicios

Que definitivamente no debe estar ejecutando un TaskTracker con su RegionServer en estos tipos de instancia, pero lo más probable ejecutando un DataNode local. llamadas de una configuración típica de 1 GB de memoria para un DataNode, pero hemos encontrado que no es necesario que tanto en muchos casos. Verificar sus métricas antes de implementar esta función, pero estábamos perfectamente seguro corte montón DataNode hasta 400 MB . Este trozo agradable 624MB ayudará HBase llegar un poco más lejos.

3. Melodía o desactivar MSLAB

Si después de robar la memoria y recortar regiones que siguen teniendo problemas, puede ir un paso más allá. Como he mencionado, la función MSLAB añade 2 MB de sobrecarga montón de manera predeterminada para cada región. Puede sintonizar este buffer abajo hbase.hregion.memstore.mslab.chunksize . Cuanto más baja sea la que vaya menos eficaz que sea, pero cuanto menos sobrecarga de memoria también. Desactivar por completo con hbase.hregion.memstore.mslab.enabled .

4. Sea agresivo sobre el almacenamiento en caché, de dosificación

El almacenamiento en caché (Scan#setCaching(int) ), De dosificación (Scan#setBatch(int) ) Son grandes para limitar el efecto de la latencia de red en grandes exploraciones. Por desgracia, también requieren más memoria en el cliente y el servidor. Tenga en cuenta la compensación de velocidad, pero disfrutar de un poco más de estabilidad mediante la regulación de estas abajo , Tan cerca de un valor de 1 como sea necesario.

El RegionServer también tiene que tener suficiente memoria para manejar todas sus escrituras concurrentes. Si está en gran medida dosificadora de sus escrituras, o el envío de unos valores de celdas muy grandes, es probable que se ejecutará en OutOfMemoryExceptions. Bajar su dosificación aquí también, o de otra manera encontrar una manera de reducir el tamaño de los valores de las celdas.

5. carga de control de Hadoop

Si está ejecutando trabajos de Hadoop HBase contra de sus datos, que son básicamente ejecutando una gran cantidad de grandes exploraciones. En un trabajo de HBase MapReduce, cada región se convierte en un mapeador. Si usted tiene más de 1 por cada región RegionServer, lo más probable es que usted va a tener unos cartógrafos analizando el mismo RegionServer simultáneamente en algún momento. Cada una de estas exploraciones se está llevando a la memoria, disco y recursos de la CPU y cuando múltiples acumulación puede causar algo de dolor.

La reducción de hbase.regionserver.handler.count ayudará a limitar el número de conexiones activas que tienen memoria, pero todavía podría tener un problema si todos los controladores están manejando grandes exploraciones-región completa. El uso de nuestra extensión de TableInputFormat, puede controlar fácilmente la cantidad de creadores de mapas concurrentes se ejecutan en una sola RegionServer , Proporcionando el uso de memoria más predecible.

Si está escribiendo a HBase de un reductor, se le va a querer controlar la partición de allí también. Esto se implementa fácilmente usando Partitioner interfaz, con HBase de HBaseAdmin interfaz que proporciona la región para asignaciones RegionServer.

Ejecutar HBase en la memoria baja es difícil, pero no imposible

Con estos consejos en la mano, usted debe estar bien en su camino a las operaciones de sobrevivir en el entorno de la memoria baja. Puede ser frustrante que luchar por cada megabyte de memoria en una época de muy barato, rápido RAM. Sin embargo, sigue estos consejos y su director financiero será gracias por hacer que la mayor parte de este tipo de instancia rentable. Para aquellos con un poco más de libertad financiera, vamos a explorar el impacto de los nuevos tipos de instancia I2 de Amazon en un futuro post . Así que estad atentos!

Este artículo fue publicado originalmente en dev.hubspot.com