hadoop - tutorial - hbase vs hive
FunciĆ³n de datanode, regionserver en la integraciĆ³n de Hbase-hadoop (1)
Los nodos de datos almacenan datos. Servidor (es) de región esencialmente operaciones de E / S del búfer; los datos se almacenan permanentemente en HDFS (es decir, nodos de datos). No creo que poner un servidor de región en su nodo ''maestro'' sea una buena idea.
Aquí hay una imagen simplificada de cómo se gestionan las regiones:
Tiene un clúster que ejecuta HDFS (NameNode + DataNodes) con un factor de replicación de 3 (cada bloque HDFS se copia en 3 DataNodes diferentes).
Ejecuta RegionServers en los mismos servidores que DataNodes. Cuando la solicitud de escritura llega a RegionServer, primero escribe los cambios en la memoria y confirma el registro; luego, en algún momento, decide que es hora de escribir los cambios en el almacenamiento permanente en HDFS. Aquí es donde entra en juego la localidad de datos: ya que ejecuta RegionServer y DataNode en el mismo servidor, la primera réplica en bloque HDFS del archivo se escribirá en el mismo servidor. Otras dos réplicas se escribirán en otros DataNodes. Como resultado, RegionServer al servicio de la región casi siempre tendrá acceso a la copia local de los datos.
¿Qué sucede si RegionServer se bloquea o RegionMaster decide reasignar la región a otro RegionServer (para mantener el clúster equilibrado)? El nuevo RegionServer se verá obligado a realizar la lectura remota primero, pero tan pronto como se realice la compactación (fusión del registro de cambios en los datos), el nuevo RegionServer escribirá un nuevo archivo en HDFS y se creará una copia local en el RegionServer ( de nuevo, porque DataNode y RegionServer se ejecutan en el mismo servidor).
Nota: en caso de fallo de RegionServer, las regiones asignadas previamente se reasignarán a múltiples RegionServers.
Buenas lecturas:
Tom White, "Hadoop, The Definitive Guide" tiene una buena explicación de la arquitectura HDFS. Desafortunadamente, no leí el documento original de Google GFS, por lo que no puedo saber si es fácil de seguir.
Artículo de Google BigTable . HBase es la implementación de Google BigTable, y descubrí que la descripción de la arquitectura en este artículo es la más fácil de seguir.
Aquí están las diferencias de nomenclatura entre Google Bigtable y la implementación de HBase (de Lars George, "HBase, The Definitive Guide"):
- HBase - Bigtable
- Región - Tableta
- RegionServer - Servidor de tableta
- Flush - Compactación menor
- Compactación menor - fusión de compactación
- Compactación mayor - Compactación mayor
- Registro de escritura anticipada - Registro de confirmación
- HDFS - GFS
- Hadoop MapReduce - MapReduce
- MemStore - memtable
- HFile - SSTable
- Zookeeper - Chubby
A mi entender, las filas se insertan en las tablas HBase y se almacenan como regiones en diferentes servidores de región. Por lo tanto, el servidor de la región almacena los datos
De manera similar, en términos de Hadoop, los datos se almacenan en los nodos de datos presentes en el clúster de hadoop.
Digamos que tengo HBase 0.90.6 configurado encima de Hadoop 1.1.1 de la siguiente manera
2 nodos - maestro y esclavo
- El nodo maestro actúa como,
- Hadoop - Namenode, Namenode secundario, rastreador de trabajos, nodo de datos, rastreador de tareas
- HBase - Master, RegionServer y zookeeper.
- El nodo esclavo actúa como,
- DataDode Hadoop y rastreador de tareas
- Servidor de región HBase
Según mi declaración, si los datos de la tabla se almacenan en los servidores de la región; Entonces, ¿cuál es el papel de los nodos de datos y los servidores de la región?