hadoop - ¿Qué se entiende por "HDFS carece de acceso aleatorio de lectura y escritura"?
hbase (2)
Cualquier sistema de archivos debe proporcionar una API para acceder a sus archivos y directorios, etc.
Entonces, ¿qué se entiende por "HDFS carece de acceso aleatorio de lectura y escritura" ?
Por lo tanto, debemos utilizar HBase.
El tamaño de bloque HDFS predeterminado es de 64 MB. Así que no puedes leer una línea aquí, una línea allí. Siempre lees y escribes bloques de 64 MB. Esto está bien cuando desea procesar todo el archivo. Pero hace que HDFS no sea adecuado para algunas aplicaciones, como en las que desea utilizar un índice para buscar registros pequeños.
HBase por otro lado es genial para esto. Si desea leer un registro pequeño, solo leerá ese registro pequeño.
HBase utiliza HDFS como su tienda de respaldo. Entonces, ¿cómo proporciona un acceso eficiente basado en registros?
HBase carga las tablas desde HDFS a la memoria o el disco local, por lo que la mayoría de las lecturas no van a HDFS. Las mutaciones se almacenan primero en una revista de solo apéndice. Cuando el diario se hace grande, se integra en una tabla de "addendum". Cuando hay demasiadas tablas complementarias, todas se compactan en una nueva tabla primaria. Para las lecturas, primero se consulta la revista, luego las tablas de adición y, por último, la tabla principal. Este sistema significa que solo escribimos un bloque HDFS completo cuando tenemos la cantidad de cambios de un bloque HDFS completo.
Una descripción más completa de este enfoque se encuentra en el documento técnico de Bigtable .
En una base de datos típica donde los datos se almacenan en tablas en formato RDBMS, puede leer o escribir en cualquier registro de cualquier tabla sin tener que saber qué hay en otros registros. Esto se llama escritura / lectura al azar.
Pero en HDFS los datos se almacenan en formato de archivo (generalmente) en lugar de formato de tabla. Así que si estás leyendo / escribiendo no es tan fácil como lo es en RDBMS.