Red de conocimiento informático - Aprendizaje de código fuente - Análisis técnico de cómo se fabrica Transwarp Inceptor

Análisis técnico de cómo se fabrica Transwarp Inceptor

Análisis técnico de cómo se creó Transwarp Inceptor

Actualmente, la tecnología Hadoop está en auge y están empezando a surgir plataformas tecnológicas para resolver problemas de análisis de big data. Spark se ha convertido gradualmente en una tecnología convencional con sus ventajas técnicas, como un rendimiento sólido, alta tolerancia a fallas y programación flexible. La mayoría de los fabricantes de la industria han proporcionado soluciones y productos técnicos basados ​​​​en Spark. Según Databricks, actualmente existen 11 versiones comerciales de Spark.

En las soluciones que utilizan Spark para crear plataformas informáticas, existen dos modelos de programación principales: uno se basa en Spark API o lenguajes derivados y el otro se basa en el lenguaje SQL. Como lenguaje estándar de facto en el campo de las bases de datos, SQL tiene ventajas inherentes en comparación con el uso de API (como MapReduceAPI, SparkAPI, etc.) para crear soluciones de análisis de big data: primero, la cadena industrial está completa y varias herramientas de informes, ETL Las herramientas, etc. se pueden utilizar muy bien. El segundo es que el desarrollo con SQL tiene un umbral técnico más bajo y el tercero es que puede reducir el costo de migración del sistema original. Por lo tanto, el lenguaje SQL se ha convertido gradualmente en el estándar técnico principal para el análisis de big data. Este artículo proporcionará un análisis en profundidad de la arquitectura, el modelo de programación y la tecnología de optimización de compilación de Inceptor, y proporcionará datos comparativos de rendimiento en múltiples plataformas.

1.Arquitectura del Inceptor

TranswarpInceptor es un motor de análisis basado en Spark. Como se muestra en la Figura 1, hay tres capas de arquitectura de abajo hacia arriba: La inferior es la capa de almacenamiento. , incluida la memoria distribuida El almacenamiento en columna (TranswarpHolodesk) se puede construir en memoria o SSD; la capa intermedia es la capa del motor informático Spark. Starring ha realizado muchas mejoras para garantizar que el motor tenga un rendimiento superior y una alta robustez; un compilador completo de SQL99 y PL/SQL, una biblioteca de algoritmos estadísticos y una biblioteca de algoritmos de aprendizaje automático, que proporciona una interfaz completa de acceso al lenguaje R.

TranswarpInceptor puede analizar datos almacenados en la caché distribuida HDFS, HBase o TranswarpHolodesk. La cantidad de datos que se pueden procesar varía desde GB hasta decenas de TB, incluso si el tamaño de la fuente de datos o los resultados intermedios es mucho. mayor que la capacidad de la memoria. Además, TranswarpInceptor mejora la capacidad de administración de Spark al mejorar la combinación de Spark y YARN. Al mismo tiempo, Starlink no solo utiliza Spark como motor informático predeterminado, sino que también reescribe el compilador SQL para proporcionar un soporte SQL más completo.

Al mismo tiempo, TranswarpInceptor también mejora Spark para integrarlo mejor con HBase y puede proporcionar soporte SQL completo para HBase, incluidas estadísticas SQL por lotes, análisis OLAP y consultas SQL de alta concurrencia y baja latencia. capacidades Esto permite ampliar la aplicación de HBase desde simples aplicaciones de consulta en línea a aplicaciones híbridas que combinan análisis complejos y aplicaciones en línea, ampliando enormemente el alcance de la aplicación de HBase.

2. Modelo de programación

TranswarpInceptor proporciona dos modelos de programación: uno es un modelo de programación basado en SQL, que se utiliza en los mercados de aplicaciones de almacenamiento de datos y análisis de datos convencionales; Modelo de programación basado en datos Para modelos de programación de minería, puede utilizar el lenguaje R o SparkMLlib para crear algunos modelos de negocio de aprendizaje profundo, minería de datos y otros.

Modelo 2.1SQL

TranswarpInceptor implementa su propio motor de análisis y ejecución de SQL, que es compatible con SQL99 y HiveQL y reconoce automáticamente la sintaxis, por lo que es compatible con aplicaciones existentes desarrolladas en base a Hive. . Dado que TranswarpInceptor es totalmente compatible con el estándar SQL 99, las empresas que ejecutan bases de datos tradicionales pueden migrar fácilmente al sistema Transwarp Inceptor. Además, Transwarp Inceptor admite extensiones PL/SQL. Las aplicaciones de almacenamiento de datos tradicionales basadas en procedimientos almacenados PL/SQL (como herramientas ETL) se pueden ejecutar simultáneamente en Inceptor de manera muy conveniente.

Además, Transwarp Inceptor admite algunos estándares SQL 2003, como funciones de estadísticas de ventanas, funciones de auditoría de seguridad, etc., y ha desarrollado bibliotecas de funciones especiales para múltiples industrias, de modo que pueda satisfacer las necesidades de funciones de múltiples industrias.

2.2 Modelo informático de minería de datos

TranswarpInceptor implementa una biblioteca de algoritmos de aprendizaje automático y una biblioteca de algoritmos estadísticos, admite la paralelización de algoritmos de aprendizaje automático y algoritmos estadísticos de uso común y utiliza Spark en cálculos iterativos. Y con las ventajas de la computación en memoria, se pueden ejecutar algoritmos de aprendizaje automático paralelo y algoritmos estadísticos en Spark. Por ejemplo, la biblioteca de algoritmos de aprendizaje automático incluye regresión logística, Bayes ingenuo, máquina de vectores de soporte, agrupación, regresión lineal, minería de asociaciones, algoritmos de recomendación, etc. La biblioteca de algoritmos estadísticos incluye media, varianza, mediana, histograma y diagrama de caja, etc. . TranswarpInceptor puede admitir el uso del lenguaje R o SparkAPI para crear una variedad de aplicaciones analíticas en la plataforma, como análisis del comportamiento del usuario, marketing de precisión, etiquetado y clasificación de usuarios.

3.Compilación y optimización de SQL

TranswarpInceptor ha desarrollado un conjunto completo de compiladores SQL, incluido el analizador HiveQL, el analizador estándar SQL y el analizador PL/SQL, para combinar diferentes lenguajes SQL. se analiza en un lenguaje de representación de nivel intermedio y luego el optimizador lo convierte en un plan de ejecución física. Una vez analizado el lenguaje SQL, el optimizador lógico genera un lenguaje de representación intermedio, y el lenguaje de representación intermedio luego pasa por el optimizador físico para generar el plan de ejecución física final. Desde el punto de vista arquitectónico, tanto el optimizador lógico como el optimizador físico incluyen módulos de optimización basados ​​en reglas y módulos de optimización basados ​​en costos.

Para ser mejor compatible con el ecosistema Hadoop, Inceptor genera un plan de ejecución en MapReduce y un plan de ejecución en Spark para una consulta SQL, y puede cambiar entre los dos motores de ejecución mediante un comando SET.

3.1 Compilación y análisis de SQL

El compilador SQL de TranswarpInceptor seleccionará automáticamente diferentes analizadores según el tipo de consulta SQL de entrada. Por ejemplo, los procedimientos almacenados PL/SQL ingresarán automáticamente PL /. Analizador SQL y genera un DAG SparkRDD para cálculo paralelo en la plataforma Spark. Las consultas SQL estándar ingresarán al analizador estándar SQL para generar planes de ejecución Spark o MapReduce. Dado que HiveQL es diferente del SQL estándar, para ser compatible con HiveQL, Transwarp Inceptor conserva el analizador HiveQL y puede generar planes de ejecución Spark o Map Reduce para consultas de Hive de SQL no estándar.

3.1.1 Analizador estándar SQL

TranswarpInceptor ha creado un analizador estándar SQL de desarrollo propio para analizar consultas SQL99 y SQL 2003 y generar planes de ejecución para Spark y Map Reduce. La capa de análisis léxico y sintáctico construye un paradigma léxico basado en la gramática Antlr, genera un árbol semántico abstracto a través de Antlr y utiliza algo de semántica contextual para eliminar conflictos y generar un árbol semántico abstracto correcto. La capa de análisis semántico analiza el árbol semántico abstracto generado por la capa superior, genera un plan de ejecución lógico basado en el contexto y lo pasa al optimizador. Primero, Transwarp Inceptor analizará SQL en bloques lógicos principales como TABLE SCAN, SELECT, FILTER, JOIN, UNION, ORDER BY, GROUP BY, etc., y luego refinará aún más el plan de ejecución de cada bloque lógico en función de cierta metainformación. Por ejemplo, TABLE SCAN se dividirá en múltiples planes de ejecución, como lectura de bloques, filtrado de bloques, filtrado a nivel de fila y serialización.

3.1.2 Analizador PL/SQL

PL/SQL es la extensión modular del lenguaje SQL de Oracle. Ha sido ampliamente utilizado en muchas industrias y es líder en el campo de los almacenes de datos. Lenguajes de programación importantes.

Para que el procedimiento almacenado tenga un mejor rendimiento en Spark, el analizador PL/SQL generará SQLDAG de acuerdo con la relación de contexto en el procedimiento almacenado y luego realizará un procesamiento secundario en el RDD generado por la ejecución. plan de cada compilación SQL, fusionar algunos RDD sin dependencias a través del optimizador físico para generar un RDDDAG final. Por lo tanto, un procedimiento almacenado se analiza en un DAG grande, de modo que se pueden ejecutar una gran cantidad de etapas simultáneamente, evitando la sobrecarga de inicio de ejecutar SQL varias veces y garantizando el rendimiento de concurrencia del sistema.

Analizar y generar planes de ejecución a nivel de SQL

3.2 Optimizador de SQL

TranswarpInceptor utiliza Spark como motor de cálculo predeterminado y ha desarrollado un optimizador de SQL completo. En una gran cantidad de pruebas de rendimiento de casos de clientes, el rendimiento de TranswarpInceptor está entre 10 y 100 veces por delante de MapReduce y supera algunas bases de datos MPP de código abierto. El optimizador de SQL juega un papel importante en la mejora del rendimiento de la plataforma.

3.2.1 Optimizador basado en reglas (RuleBasedOptimizer)

Hasta ahora, TranswarpInceptor*** ha implementado más de cien reglas de optimización y se agregan nuevas reglas continuamente. Según la división funcional, estas reglas se distribuyen principalmente en los siguientes módulos:

Filtrar al leer archivos

El filtrado de datos al leer archivos puede minimizar la cantidad de datos involucrados en los cálculos. Para mejorar el rendimiento de manera más efectiva, TranswarpInceptor proporciona múltiples reglas para generar condiciones de filtro de tabla. Para algunas condiciones de visualización en SQL, TranswarpInceptor intentará enviar el filtrado a la tabla de lectura; para algunas condiciones de filtrado implícitas, como las reglas de filtrado que se pueden generar en función de la clave de unión, Inceptor procederá en función de la semántica para garantizar la corrección.

Condición de filtrado hacia adelante

TranswarpInceptor puede filtrar reglas de filtro para tablas específicas a partir de condiciones de filtro combinadas complejas y luego usar la semántica SQL para determinar si la condición de filtro se puede enviar a Ejecutar como lo antes posible. Si hay subconsultas, las condiciones del filtro se pueden enviar de forma recursiva a la subconsulta de nivel más bajo para garantizar que se eliminen todos los datos redundantes.

Filtrado de lectura de tablas ultra anchas

Al procesar algunas tablas con demasiadas columnas, TranswarpInceptor primero determinará las columnas que se leerán según la semántica de SQL y luego las leerá al recuperar el En la tabla, se realiza una lectura entre columnas para reducir el consumo de memoria y E/S. Si la tabla tiene condiciones de filtro, Inceptor la optimizará aún más. Primero, solo leerá las columnas relacionadas con las condiciones de filtro para determinar si es necesario seleccionar el registro de fila. De lo contrario, omitirá todas las columnas de la fila actual. para que pueda minimizar la lectura de datos. En algunas implementaciones comerciales, estas reglas de optimización pueden generar mejoras de rendimiento de entre 5 y 10 veces.

Optimización y eliminación de Shuffle Stage

La eficiencia de la implementación aleatoria de Spark es muy baja. Los resultados deben escribirse en el disco y luego transmitirse a través de HTTP. TranswarpInceptor agrega algunas reglas de optimización para la eliminación aleatoria para eliminar o fusionar etapas de reproducción aleatoria innecesarias o fusionables en SQL DAG. Para las tareas informáticas que deben mezclarse, Inceptor utiliza DAGScheduler para mejorar la eficiencia de la reproducción aleatoria: MapTask devolverá directamente los resultados a DAGScheduler, y luego DAGScheduler entregará los resultados directamente a Reducir tarea en lugar de esperar a que finalicen todas las tareas de mapa, lo que puede mejorará significativamente el rendimiento de la fase de reproducción aleatoria.

Eliminación de particiones

TranswarpInceptor proporciona Partition y RangePartition de un solo valor, y admite la creación de Bucket for Partition para realizar múltiples particiones. Cuando hay demasiadas particiones, el rendimiento del sistema se perderá debido al consumo de memoria y a la sobrecarga de programación.

Por lo tanto, Inceptor proporciona múltiples reglas para eliminar particiones innecesarias. Si hay condiciones de filtrado implícitas para las particiones en el contexto, Inceptor también generará reglas de filtrado para las particiones.

3.2.2 Optimizador basado en costos (CostBasedOptimizer)

Los optimizadores basados ​​en reglas se generan en función de cierta información estática, por lo que muchas funciones relacionadas con datos dinámicos no se pueden resolver mediante reglas. Optimización basada en costos, por lo que TranswarpInceptor proporciona un optimizador basado en costos para la optimización secundaria. Los datos originales relevantes provienen principalmente de estadísticas de tablas en Meta-store, información RDD, información estadística en contexto SQL, etc. Basándose en estos datos dinámicos, CBO calculará el costo físico del plan de ejecución y seleccionará el plan de ejecución más eficaz. Algunas reglas de optimización muy efectivas incluyen los siguientes puntos:

Optimización de la secuencia JOIN

En el caso real, join es el negocio que consume más cálculos, por lo que la optimización de join es tan importante como Es importante. En el modelo JOIN de tablas múltiples, TranswarpInceptor estima el tamaño de los resultados intermedios de la unión en función de información estadística y selecciona la secuencia de unión que produce la menor cantidad de datos intermedios como plan de ejecución.

Selección del tipo de JOIN

TranswarpInceptor admite Left-mostJoinTree y Bush Join Tree, y elegirá qué modelo de unión generar con el mejor rendimiento en función de la información estadística. Además, Transwarp Inceptor elegirá si habilitar una optimización especial bajo el modelo de sesgo de datos según el tamaño de la tabla original o los datos intermedios. Además, dependiendo de si la tabla HBase tiene un índice, Transwarp Inceptor hará una elección equilibrada entre la unión ordinaria y la unión de búsqueda.

Control de concurrencia

Spark mejora el rendimiento a través de la concurrencia a nivel de subproceso, pero una gran cantidad de concurrencia puede generar una sobrecarga de programación innecesaria, por lo que diferentes casos con diferentes niveles de concurrencia tendrán el mejor rendimiento. . TranswarpInceptor selecciona el mejor control de concurrencia al inferir algunos atributos de RDD y tiene una mejora de rendimiento de 2x-3x en muchos casos.

4. Motor informático de memoria TranswarpHolodesk

Para reducir eficazmente la latencia del análisis SQL y reducir el impacto de la E/S del disco en el rendimiento del sistema, Starring Technology ha desarrollado memoria o SSD. almacenamiento basado en el motor informático TranswarpHolodesk realiza cálculos de memoria completa de consultas SQL mediante la creación de datos de tablas directamente en la memoria o SSD. Además, TranswarpHolodesk ha agregado una función de índice de datos y admite la indexación de múltiples columnas de datos, lo que reduce en mayor medida la latencia de las consultas SQL.

4.1 Formato de almacenamiento

TranswarpHolodesk ha realizado muchas mejoras originales basadas en el almacenamiento en columnas para brindar un mayor rendimiento y una menor tasa de expansión de datos. Primero, los datos se serializan y almacenan en la memoria o SSD para ahorrar recursos. Como se muestra en la Figura 3, los datos de cada tabla se almacenan en varios segmentos y cada segmento se divide en varios bloques. Cada bloque se almacena en SSD o memoria en forma de columnas. Además, Min-MaxFilter y BloomFilter se agregan al encabezado de cada bloque para filtrar bloques de datos inútiles y reducir la entrada de datos innecesarios a la etapa de cálculo.

TranswarpHolodesk construye un índice de datos para las columnas correspondientes de cada bloque de datos en función de los atributos de predicado de las condiciones de consulta. Las columnas de índice se organizan y almacenan utilizando la estructura Trie desarrollada por él mismo y las no indexadas. Las columnas se organizan y almacenan mediante codificación de diccionario. Trie no solo puede comprimir cadenas con prefijos públicos ***, sino también ordenar las cadenas de entrada, de modo que la búsqueda binaria se pueda utilizar para consultar rápidamente la ubicación de los datos requeridos, respondiendo así rápidamente a las necesidades de consulta.

HDFS2.6 admite StorageTier para que las aplicaciones puedan elegir la capa de almacenamiento como disco o SSD. Sin embargo, sin un diseño de formato de almacenamiento dedicado, es imposible utilizar de manera efectiva el rendimiento de lectura y escritura y la baja latencia de SSD. Por lo tanto, el híbrido Text Ninguno fila-fila existente (ORC/Parquet) puede utilizar eficazmente el alto rendimiento de SSD. Para verificar el impacto de la estructura de almacenamiento en el rendimiento, creamos HDFS en SSD y seleccionamos una prueba comparativa para realizar una comparación adicional del rendimiento. Los resultados se muestran en la Figura 4: Usando formato de texto, la mejora del rendimiento aportada por PCI-ESSD es solo 1,5 veces; Al utilizar el almacenamiento en columna Holodesk especialmente diseñado para memoria y SSD, su rendimiento mejora hasta 6 veces en comparación con HDFS en SSD.

4.2 Ventajas de rendimiento

Un cliente determinado operador construyó TranswarpInceptor en 12 servidores x86, configuró TranswarpHolodesk en PCIE-SSD y lo usó con tablas de discos normales y DB2 para mejorar el rendimiento. Pruebas comparativas. Los datos finales de la prueba se muestran en la Figura 5:

En la prueba de conteo puro, el rendimiento de Holodesk está hasta 32 veces por delante de la tabla de discos, para la prueba de unión, TranswarpHolodesk está hasta 12 veces por delante de la tabla de discos; tabla de disco. En la prueba de agregación de una sola tabla, Holodesk mejoró de 10 a 30 veces. Además, TranswarpHolodesk también tuvo un buen desempeño en comparación con DB2. Dos consultas SQL complejas tardaron más de una hora en ejecutarse en la base de datos DB2, pero cuando se usó TranswarpHolodesk, los resultados se devolvieron en minutos y segundos.

El precio de la memoria es aproximadamente diez veces mayor que el de SSD de la misma capacidad. Para proporcionar a las empresas soluciones informáticas más rentables, TranswarpHolodesk ha realizado muchas optimizaciones para SSD, de modo que las aplicaciones se ejecuten. en SSD tiene el mismo rendimiento que en memoria. El rendimiento es relativamente cercano, lo que proporciona a los clientes una plataforma informática más rentable.

En la prueba de consultas intensivas de IO de TPC-DS, ya sea construido en PCI-ESSD o memoria, Holodesk tiene una mejora de rendimiento de un orden de magnitud en comparación con las tablas de disco, mientras que el rendimiento de Holodesk en SSD es; sólo alrededor de un 10% peor que la memoria.

5. Motor de ejecución estable de Spark

Las principales dificultades que enfrentan actualmente las empresas al aplicar Spark de código abierto son la estabilidad, la capacidad de administración y la funcionalidad insuficiente. Spark de código abierto todavía tiene muchos problemas en términos de estabilidad. Al procesar grandes cantidades de datos, es posible que no pueda ejecutarse hasta el final o que se agote la memoria. El rendimiento a veces es rápido y a veces lento, y a veces es más lento que Map. /Reducir No se puede aplicar a negocios complejos de análisis de datos.

TranswarpInceptor ha diseñado una variedad de soluciones para diversos escenarios de error, como seleccionar el plan de ejecución más apropiado a través de un optimizador basado en costos, fortalecer la gestión efectiva de la eficiencia del uso de la memoria de la estructura de datos y resolver errores de memoria comunes. Problema: la copia de seguridad de datos a través del disco ha mejorado enormemente la estabilidad de las funciones y el rendimiento de Spark. Los problemas anteriores se han resuelto y probado mediante casos comerciales. TranswarpInceptor puede funcionar de manera estable durante 7 x 24 horas y puede realizar de manera eficiente varios análisis estadísticos estables en datos a escala de terabytes.

6.Verificación del rendimiento del motor SQL

TPC-DS es un conjunto de pruebas diseñado por la organización TPC para DecisionSupportSystem, que incluye estadísticas/generación de informes/consultas en línea/extracción de datos de grandes conjuntos de datos. Para aplicaciones complejas, los datos de prueba tienen varias distribuciones e inclinaciones, lo que se acerca mucho a la escena real. A medida que los fabricantes representativos de distribución de Hadoop en el país y en el extranjero utilizan TPC-DS como estándar para evaluar productos, TPC-DS se ha convertido gradualmente en un criterio de prueba de sistemas Hadoop reconocido por la industria.

6.1 Plataforma y configuración para verificación y comparación

Construimos dos clústeres para probar TranswarpInceptor y ClouderaDataHub/Impala respectivamente.

6.2TranswarpInceptorVS Cloudera Impala

TranswarpInceptor tiene soporte SQL completo y puede ejecutar las 99 consultas SQL. Dado que el conjunto de pruebas TPC-DS publicado oficialmente por Cloudera solo contiene 19 casos de SQL, solo podemos ejecutar estos 19 SQL. Los experimentos han demostrado que todas estas consultas se ejecutan normalmente en Impala.

6.3TranswarpInceptorVS Map Reduce

Utilizamos la misma configuración de hardware y software para completar la eficiencia de ejecución en comparación con el TranswarpInceptor de código abierto que puede brindar una mejora de rendimiento de 10 a 100 veces. La Figura 8 muestra los múltiplos de mejora del rendimiento de algunas consultas SQL de TPC-DS en Inceptor y CDH5.1Hive. El múltiplo de mejora más grande puede llegar a 123 veces.

7. Conclusión

A medida que los países nacionales y extranjeros en el campo de big data comienzan a estar en la misma línea de partida, creemos que los fabricantes de distribución de Hadoop representativos nacionales como Xinghuan Technology lo harán. se ha vuelto más popular en China, ha logrado un gran desarrollo en el vasto espacio del mercado y, debido a la feroz competencia y capacitación en el mercado chino, ha ido puliendo gradualmente su tecnología y su fuerza más allá de la de los fabricantes extranjeros avanzados.

Liu Wanggen. Se unió a Xinghuan en 2013 y participó en la construcción de la plataforma de big data de Xinghuan como uno de los primeros empleados. Ahora se desempeña como gerente de I + D del departamento de plataforma de datos. Es el principal responsable de la investigación y el desarrollo de la plataforma de datos de Xinghuan. plataforma de datos, como el compilador SQL y el motor de ejecución Spark y otros trabajos, y los productos incluyen software como TranswarpInceptor/TranswarpStream.

Nota del editor Starring Technology comenzó a desarrollar un motor de ejecución SQL basado en Spark en junio de 2013, lanzó TranswarpInceptor1.0 a finales de 2013 y lanzó el primer proyecto comercial de 7x24 horas en China. Después de más de un año de innovación y mejora continua, Xinghuan ha lanzado docenas de proyectos comerciales Inceptor en China. Este es un análisis técnico de la solución Xinghuan Spark y también es un método de optimización que los usuarios de Spark pueden seguir.