Similitudes y diferencias entre Hive y las bases de datos
Idioma de consulta. Dado que SQL se usa ampliamente en los almacenes de datos, se diseñó un lenguaje de consulta HQL similar a SQL basado en las características de Hive. Los desarrolladores que estén familiarizados con el desarrollo de SQL pueden utilizar fácilmente Hive para el desarrollo.
2. Ubicación de almacenamiento de datos. Hive se basa en Hadoop y todos los datos de Hive se almacenan en HDFS. y base de datos
Puedes guardar datos en el sistema de archivos local.
3. Formato de datos. Hive no define formatos de datos especiales y los usuarios pueden especificar los formatos de datos, mientras que los formatos de datos personalizados deben especificar tres tipos.
Atributos: delimitador de columnas (normalmente espacio "\t", "\x001"), delimitador de filas ("\n") y método de lectura de datos de archivos (hay tres archivos por defecto en los formatos de Hive TextFile , SequenceFile y RCFile). Dado que no es necesario convertir el formato de datos del usuario al formato de datos definido por Hive durante el proceso de carga, Hive no modifica los datos en sí durante el proceso de carga, solo copia o mueve el contenido de los datos al directorio HDFS correspondiente. En las bases de datos, diferentes bases de datos tienen diferentes motores de almacenamiento y definen sus propios formatos de datos. Todos los datos se almacenarán según una organización específica, por lo que el proceso de carga de datos en la base de datos llevará mucho tiempo.
4. Actualización de datos. Hive está diseñado para aplicaciones de almacén de datos. El contenido del almacén de datos se lee más y se escribe menos. Por lo tanto, Hive no admite la reescritura ni la adición de datos; todos los datos se determinan durante la carga. Los datos de una base de datos generalmente deben modificarse con frecuencia, por lo que los datos se agregan usando INSERTAR EN... valores y usar ACTUALIZAR. ...
SET modifica datos.
5. Como dije antes, Hive no procesa ni siquiera escanea los datos durante el proceso de carga de datos.
Como resultado, algunas claves de los datos no están indexadas. Cuando Hive quiere acceder a valores específicos en los datos que cumplen las condiciones, necesita escanear vigorosamente todos los datos, por lo que la latencia de acceso es alta. Gracias a la introducción de MapReduce, Hive puede acceder a datos en paralelo, por lo que incluso sin índices, Hive aún puede mostrar ventajas al acceder a grandes cantidades de datos. En una base de datos, una o más columnas generalmente están indexadas para que la base de datos pueda acceder a pequeñas cantidades de datos en condiciones específicas de manera eficiente y con baja latencia. Debido a la alta latencia de acceso a los datos, Hive no es adecuado para consultas de datos en línea.
6. Implementación. La mayoría de las consultas en Hive se ejecutan a través de MapReduce proporcionado por Hadoop (consultas como select * from tbl
no requieren MapReduce. La base de datos generalmente tiene su propio motor de ejecución.
7. Latencia de ejecución Como se mencionó anteriormente, cuando Hive consulta datos, necesita escanear toda la tabla, por lo que la latencia es alta. Además, un factor que causa la alta latencia de ejecución de Hive es el marco MapReduce. También habrá una alta latencia al usar MapReduce para ejecutar consultas de Hive. Por supuesto, esta baja latencia de ejecución está condicionada al pequeño tamaño de los datos. Cuando el tamaño de los datos excede la capacidad de procesamiento de la base de datos, la computación paralela de Hive puede mostrar claramente sus ventajas.
8. Escalabilidad Dado que Hive se basa en Hadoop, Hive es escalable igual que
Consistente (el clúster de Hadoop más grande del mundo estaba en Yahoo! en 2009. una escala de alrededor de 4000 nodos). Sin embargo, debido a las estrictas restricciones de la semántica ACID, la escalabilidad de la base de datos es actualmente muy limitada. La base de datos paralela más avanzada, Oracle, en teoría solo tiene alrededor de 100 conjuntos. escala.
Hive está construido sobre un clúster y puede usar MapReduce para computación paralela, por lo que puede admitir datos a gran escala, por lo que la base de datos puede admitir muy pocos datos;