Cómo elegir un motor SQL basado en Hadoop
En las tecnologías Hadoop y NoSQL, la gente ha cambiado gradualmente su enfoque hacia el motor SQL en Hadoop. Hoy en día, hay cada vez más motores entre los que elegir, lo que coloca a las organizaciones ante un dilema de elección. Este artículo enumerará varios factores a considerar al elegir un motor para su referencia.
Una ventaja importante de la tecnología SQL basada en Hadoop es que puede utilizar el conocido lenguaje SQL para acceder a grandes conjuntos de datos almacenados en Hadoop.
Los usuarios pueden utilizar casi cualquier informe o herramienta para analizar y estudiar datos. Cuando SQL no se puede aplicar a Hadoop, acceder a grandes conjuntos de datos en Hadoop requiere una buena comprensión de las interfaces de aplicaciones técnicas de Hadoop, como HDFS, MapReduce o HBase. Ahora, con el motor SQL basado en Hadoop, todos pueden usar su herramienta favorita. Para las empresas, equivale a que Hadoop abra una ventana más grande y más empresas puedan aplicar Hadoop para procesar big data.
Qué tecnologías están disponibles
El primer motor SQL basado en Hadoop fue Apache Hive, pero en el último año han aparecido muchos productos nuevos, incluidos CitusDB y Cloudera
Impala, Concurrent Lingual, Hadapt, InfiniDB, JethroData, MammothDB, Apache
Drill, MemSQL, Pivotal HawQ, Progress DataDirect, ScleraDB, Simba y Splice
Machine.
Además de los motores anteriores, los servidores de virtualización de datos también deben incluirse en esta columna porque implementan el acceso SQL a los datos de Hadoop. Los servidores virtualizados pueden acceder a todas las fuentes de datos, incluido Hadoop, y se pueden integrar diferentes fuentes de datos. Hay muchos servidores de virtualización de datos, incluidos Cirro Data Hub, Cisco/Composite.
Por supuesto, también existen algunos sistemas de administración de bases de datos SQL que también admiten múltiples fuentes de datos. Almacenan datos en su propia base de datos SQL o Hadoop y brindan acceso SQL a los datos de Hadoop. Como
EMC/Greenplum UAP, HP Vertica (en MapR), Microsoft PolyBase, Actian
ParAccel y Teradata Aster Database (a través de SQL-H).
Con tantas herramientas SQL basadas en Hadoop disponibles, se puede decir que las organizaciones están deslumbradas. Entonces, ¿cómo elegir? ¿Cuál es la diferencia entre ellos?
De hecho, existen grandes diferencias entre las diferentes tecnologías. Por ejemplo, CitusDB sabe dónde se almacenan los datos y puede acceder a ellos más rápido; JethroData almacena índices y puede acceder directamente a los datos. interfaz.
Elegir la tecnología adecuada requiere comparar los detalles. Las siguientes son consideraciones específicas:
Lenguaje SQL
Cuanto más lenguajes SQL sean compatibles, más aplicaciones se podrán utilizar. Además, cuanto más ricos sean los lenguajes admitidos, más programas de consulta podrá ejecutar Hadoop y menos aplicaciones y herramientas de informes tendrán que funcionar.
Uniones de nodos
Realizar uniones de nodos de forma rápida y eficiente en tablas grandes no es fácil, especialmente cuando el motor SQL no sabe dónde se almacenan los datos. Los procesos de conexión ineficientes pueden generar una gran cantidad de E/S y enormes transferencias de datos entre diferentes nodos, lo que en última instancia afecta la velocidad de procesamiento.
Datos no estructurados
SQL está diseñado para datos estructurados
. Cada registro de la tabla se encuentra en la misma columna y cada columna tiene los mismos atributos. Pero en la era del big data, no todos los datos están estructurados. Los archivos Hadoop pueden contener datos anidados, datos mutables (con una estructura jerárquica), datos sin esquema y datos autodescriptivos. El motor SQL basado en Hadoop debe poder convertir todos los datos en datos relacionales y optimizar las consultas entre estos datos.
Modo de almacenamiento
Hadoop admite algunos formatos de almacenamiento estándar, como Parquet, Avro y ORCFile. Cuantos más formatos utilice la tecnología SQL basada en Hadoop, más formatos podrán leer otros motores y tecnologías. Esto reduce en gran medida el esfuerzo de copiar datos.
Funciones definidas por el usuario
Para realizar funciones de análisis complejas en SQL, como el análisis discriminante gaussiano y el análisis de la cesta de la compra, un requisito previo muy importante es que SQL admita esta función. Estas funciones se denominan funciones definidas por el usuario (UDF). Los motores SQL basados en Hadoop deben poder ejecutar funciones definidas por el usuario en partes en múltiples nodos.
Cargas de trabajo multiusuario
Otro factor a considerar es cómo el motor debe dividir los recursos entre diferentes consultas y diferentes tipos de consultas. Por ejemplo, las consultas de diferentes aplicaciones tienen diferentes prioridades de procesamiento; las consultas que tardan mucho en ejecutarse deben dar paso a consultas que deben procesarse de inmediato, si las consultas no planificadas o que requieren muchos recursos consumen muchos recursos; la consulta debe ser cancelada o suspendida. La tecnología SQL basada en Hadoop requiere una gestión de carga de trabajo más inteligente
.
Federación de datos
No todos los datos se almacenan en Hadoop. La mayoría de los datos empresariales también se almacenan en otras fuentes de datos, como bases de datos SQL. Los motores SQL basados en Hadoop deben admitir la conexión de datos almacenados en diferentes tipos de fuentes de datos. En otras palabras, debe soportar la federación de datos.
Es una tendencia general entre las empresas que utilizan Hadoop para implementar motores SQL. Las empresas esperan tener en cuenta los factores anteriores al elegir diferentes tecnologías.