Colección de citas famosas - Frases elegantes - Análisis técnico de receptores hyperwarp.

Análisis técnico de receptores hyperwarp.

Análisis técnico de receptores hyperwarp.

En la actualidad, la tecnología Hadoop está en auge y constantemente surgen plataformas tecnológicas para resolver problemas de análisis de big data. Spark se ha convertido gradualmente en una tecnología convencional con su potente rendimiento, alta tolerancia a fallos, programación flexible y otras ventajas técnicas. La mayoría de los fabricantes de la industria ofrecen soluciones y productos tecnológicos 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 convencionales, 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 sobre el uso de API (como MapReduceAPI, SparkAPI, etc.). ) Cree una solución para el análisis de big data: en primer lugar, la cadena industrial está completa y varias herramientas de informes y herramientas ETL pueden estar bien conectadas; en segundo lugar, el umbral técnico para el desarrollo con SQL es menor; en tercer lugar, el costo de migración del original; sistema puede reducirse. 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 lanzador

TranswarpInceptor es un motor de análisis basado en Spark. Como se muestra en la Figura 1, tiene una arquitectura de tres capas ascendente: la capa inferior es la capa de almacenamiento, que contiene TranswarpHolodesk y puede construirse sobre memoria o SSD; la capa intermedia es la capa del motor informático Spark y Star Ring; se han realizado muchas mejoras para garantizar que el motor tenga un rendimiento excelente y una alta robustez; la capa superior incluye compiladores SQL99 y PL/SQL completos, una biblioteca de algoritmos estadísticos y una biblioteca de algoritmos de aprendizaje automático, lo que proporciona una interfaz completa de acceso al lenguaje R.

TranswarpInceptor puede analizar datos almacenados en la caché distribuida HDFS, HBase o TranswarpHolodesk y puede manejar volúmenes de datos que van desde GB hasta decenas de TB, incluso si el tamaño de la fuente de datos o los resultados intermedios es mucho mayor que el La capacidad de memoria también se puede procesar de manera eficiente. 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 considera a Spark como el motor informático predeterminado, sino que también reescribe el compilador SQL para proporcionar un soporte SQL más completo.

Al mismo tiempo, TranswarpInceptor puede mejorar Spark para integrarse mejor con HBase y proporcionar soporte SQL completo para HBase, incluidas estadísticas SQL por lotes, análisis OLAP y capacidades de consulta SQL de alta concurrencia y baja latencia. de HBase se ha ampliado de una simple aplicación de consulta en línea a una aplicación híbrida que combina 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 para aplicaciones de almacenamiento de datos y análisis de datos generales; el segundo, basado en el modelo de programación de minería de datos; , podemos usar el lenguaje R o SparkMLlib para realizar algunos modelos de negocios, como el aprendizaje profundo y la minería de datos.

Modelo 2.1SQL

TranswarpInceptor implementa su propio motor de análisis y ejecución de SQL, que es compatible con SQL99 y HiveQL, y puede reconocer automáticamente la sintaxis, por lo que es compatible con aplicaciones existentes desarrolladas en base en el programa 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 a los sistemas Transwarp Inceptor. Además, Transwarp Initiator admite extensiones PL/SQL y las aplicaciones tradicionales de almacenamiento de datos (como herramientas ETL) basadas en procedimientos almacenados PL/SQL se pueden ejecutar simultáneamente en el Initiator de manera muy conveniente.

Además, el iniciador transwarp admite algunos estándares SQL 2003, como funciones de estadísticas de ventanas y funciones de auditoría de seguridad, y ha desarrollado bibliotecas de funciones especiales para muchas industrias, por lo que puede cumplir con los requisitos de funciones de muchas 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 comunes y utiliza Spark en cálculos iterativos. y Ventajas de la informática en memoria Ejecute algoritmos de aprendizaje automático paralelos y algoritmos estadísticos en Spark. Por ejemplo, la biblioteca de algoritmos de aprendizaje automático incluye regresión logística, Bayes ingenuo, máquinas 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, diagrama de caja, etc. TranswarpInceptor puede admitir el uso del lenguaje R o Spark API para crear varias aplicaciones de análisis en la plataforma, como análisis del comportamiento del usuario, marketing de precisión y 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 expresión intermedio, que luego el optimizador convierte en un plan de ejecución física. Después de analizar el lenguaje SQL, el optimizador lógico genera un lenguaje de representación intermedio y el optimizador físico genera el lenguaje de representación intermedio para generar el plan de ejecución física final. Estructuralmente, 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, el iniciador 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 el 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 al analizador PL/SQL y generarán un DAG de SparkRDD para computación paralela en la plataforma Spark, y las consultas SQL estándar ingresarán al analizador estándar SQL para generar planes de ejecución de Spark o MapReduce. Dado que HiveQL es diferente del SQL estándar, para ser compatible con HiveQL, Transwarp Initiator conserva un analizador HiveQL que puede generar planes de ejecución Spark o Map Reduce para consultas HiveQL 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 SQL 99 y SQL 2003 y generar planes de ejecución de Spark y Map Reduce. La capa de análisis léxico y sintáctico construye paradigmas léxicos basados ​​​​en la gramática Antlr, genera árboles semánticos abstractos a través de Antlr, elimina conflictos y genera árboles semánticos abstractos correctos a través de alguna semántica contextual. 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 Initiator analizará SQL en bloques lógicos principales, como escaneo de tablas, selección, filtrado, conexión, unión, base de clasificación, base de agrupación, etc., y luego refinará aún más el plan de ejecución de cada bloque lógico en función de alguna metainformación. . Por ejemplo, un escaneo de tabla se divide en varios planes de ejecución, como lectura de bloques, filtrado de bloques, filtrado a nivel de fila, serialización, etc.

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 un lenguaje de programación importante en el campo de. almacenes de datos.

Para que los procedimientos almacenados tengan un mejor rendimiento en Spark, el analizador PL/SQL generará SQLDAG de acuerdo con el contexto del procedimiento almacenado y luego compilará el RDD generado por el plan de ejecución de cada SQL dos veces. Y fusione algunos RDD sin dependencias a través del optimizador físico para generar el 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 desarrolló un optimizador de SQL perfecto. Por lo tanto, 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 SQL ha hecho una gran contribución a la mejora del rendimiento de la plataforma.

Optimizador de base de reglas

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

Filtrar al leer archivos

Filtrar datos durante la lectura de archivos puede minimizar la cantidad de datos involucrados en los cálculos Y de manera más efectiva mejorar el rendimiento, por lo que TranswarpInceptor proporciona varias reglas para generar condiciones de filtro de tabla. Para algunas condiciones de visualización en SQL, TranswarpInceptor intentará enviar el filtro 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, el iniciador garantizará la corrección en función de la semántica. la premisa del sexo.

Preposición de condiciones de filtro

TranswarpInceptor puede filtrar reglas de filtro para una tabla específica a partir de condiciones de filtro combinadas complejas y luego determinar si las condiciones de filtro se pueden impulsar tanto como sea posible a través de SQL. semántica temprana. Si tiene subconsultas, puede hacer avanzar el filtro de forma recursiva hasta la subconsulta de nivel más bajo, asegurándose de que se eliminen todos los datos redundantes.

Lectura y filtrado 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 SQL y abarcará las lecturas de columnas hasta Reduzca el consumo de memoria y E/S. Sin embargo, si la tabla tiene filtros, el lanzador se optimizará aún más. Primero, solo se leen las columnas relevantes a la condición del filtro para determinar si es necesario seleccionar registros de fila. De lo contrario, se omitirán todas las columnas de la fila actual, minimizando así las lecturas de datos. En algunas implementaciones comerciales, estas reglas de optimización pueden mejorar el rendimiento entre 5 y 10 veces.

Optimización y eliminación de la etapa de reproducción aleatoria

La implementación de reproducción aleatoria de Spark es muy ineficiente, por lo que 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 componibles en SQL DAG. Para las tareas informáticas que deben mezclarse, el Iniciador mejora la eficiencia de Shuffle a través de DAGScheduler: MapTask devolverá los resultados directamente a DAGScheduler, y luego DAGScheduler entregará los resultados directamente a Reducir tarea en lugar de esperar a que se completen todas las tareas del mapa, lo que puede mejorar significativamente el rendimiento del escenario Shuffle.

Eliminación de particiones

TranswarpInceptor proporciona particiones de valor único y RangePartition, y admite la creación de depósitos para particiones para crear múltiples particiones. Cuando hay demasiadas particiones, el rendimiento del sistema disminuirá debido al consumo de memoria y la sobrecarga de programación. Por lo tanto, el lanzador proporciona varias reglas para eliminar particiones innecesarias. Si hay condiciones de filtro implícitas para la partición en el contexto, el iniciador también generará reglas de filtro para la partición.

Optimizador de costos

Los optimizadores basados ​​en reglas se generan en función de cierta información estática, por lo que muchas características relacionadas con los datos dinámicos no se pueden resolver mediante la optimización basada en reglas, por lo que TranswarpInceptor proporciona un costo. Optimizador basado en para optimización secundaria.

Los datos originales relevantes provienen principalmente de estadísticas de tablas en metastore, información RDD, estadísticas 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 eficiente. Algunas reglas de optimización muy efectivas incluyen:

Ajuste de la secuencia de unión

En casos reales, unirse es el negocio que consume más cálculos, por lo que optimizar la unión es muy importante. En el modelo de unión de tablas múltiples, TranswarpInceptor estimará el tamaño de los resultados intermedios de la unión en función de información estadística y seleccionará la secuencia de unión con la menor cantidad de datos intermedios como plan de ejecución.

Selección del tipo de conexión

TranswarpInceptor admite los árboles de conexión Left-mostJoinTree y Bush, y seleccionará el modelo de conexión con el mejor rendimiento entre los modelos de conexión generados en función de información estadística. Además, dependiendo del tamaño de la tabla original o de los datos intermedios, el iniciador Transwarp elegirá si desea activar optimizaciones especiales bajo el modelo de sesgo de datos. Además, dependiendo de si la tabla HBase tiene un índice, el iniciador de Transwarp realizará una elección equilibrada entre uniones normales y uniones 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 situaciones tendrán diferentes niveles de concurrencia. Tenga el mejor rendimiento. . TranswarpInceptor selecciona el mejor control de concurrencia calculando algunas propiedades del RDD, que tiene una mejora de rendimiento de 2 a 3 veces en muchos casos.

4.Motor informático de memoria TranswarpHolodesk

Para reducir eficazmente el retraso del análisis SQL y reducir el impacto de la E/S del disco en el rendimiento del sistema, Starring Technology ha desarrollado un motor informático de almacenamiento basado en memoria o SSD TranswarpHolodesk permite la computación en memoria completa de consultas SQL mediante la creación de datos de tablas directamente en la memoria o SSD. Además, TranswarpHolodesk agrega una función de indexación de datos, que 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, lo que brinda 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, cada segmento se divide en varios bloques y 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 los datos innecesarios que ingresan a la etapa de cálculo.

De acuerdo con el atributo de predicado de la condición de consulta, TranswarpHolodesk crea un índice de datos para la columna correspondiente de cada bloque de datos. Las columnas de índice se organizan y almacenan mediante una estructura Trie de desarrollo propio, y las columnas que no son de índice se organizan y almacenan mediante codificación de diccionario. Trie no solo puede comprimir cadenas con el prefijo * * * * común, sino también ordenar las cadenas de entrada para encontrar la ubicación de los datos necesarios para una consulta rápida a través de dicotomía, respondiendo así rápidamente a las necesidades de consulta.

HDFS2.6 admite StorageTier, lo que permite a las aplicaciones elegir disco o SSD como capa de almacenamiento. Sin embargo, sin un diseño de formato de almacenamiento dedicado, el rendimiento de lectura y escritura y la baja latencia de SSD no se pueden utilizar de manera efectiva, por lo que el texto y ORC/Parquet existentes no pueden utilizar de manera efectiva el alto rendimiento de SSD. Para verificar el impacto de la estructura de almacenamiento en el rendimiento, creamos HDFS en SSD y seleccionamos un punto de referencia para una mayor comparación del rendimiento. Los resultados se muestran en la Figura 4: Para el formato de texto, la mejora de rendimiento aportada por PCI-ESSD es solo 65.438+0,5 veces; utilizando el almacenamiento en columnas Holodesk especialmente diseñado para memoria y SSD, su rendimiento es 6 veces mayor que HDFS en SSD.

4.2 Ventajas de rendimiento

Un cliente de cierto operador construyó TranswarpInceptor en 12 servidores x86, configuró TranswarpHolodesk en PCIE-SSD y lo comparó con tablas de discos normales y una comparación de rendimiento de DB2.

Los datos finales de la prueba se muestran en la Figura 5:

En la prueba de conteo puro, el rendimiento de Holodesk supera la tabla de discos hasta 32 veces; para la prueba de unión, la tabla de discos líder más alta de TranswarpHolodesk es 12 veces; en una sola tabla En la prueba de agregación, Holodesk mejoró entre 10 y 30 veces. Además, el rendimiento de TranswarpHolodesk también es muy bueno en comparación con DB2. En una base de datos DB2, dos consultas SQL complejas tardaron más de 1 hora en ejecutarse, pero al utilizar TranswarpHolodesk, los resultados se obtuvieron en minutos y segundos.

El precio de la memoria es unas diez veces mayor que el de un SSD de la misma capacidad. Para brindar a las empresas soluciones informáticas más rentables, TranswarpHolodesk ha realizado amplias optimizaciones para SSD, de modo que el rendimiento de las aplicaciones que se ejecutan en SSD sea cercano al de la memoria, brindando así a los clientes una plataforma informática más rentable.

En la prueba de consulta intensiva de IO de TPC-DS, ya sea que esté construido en base a PCI-ESSD o memoria, Holodesk tiene una mejora de rendimiento de un orden de magnitud con respecto a la tabla de discos. El rendimiento de Holodesk en SSD es sólo un 10% peor que el de la memoria.

5. Motor de ejecución estable de Spark

En la actualidad, las principales dificultades en la aplicación empresarial de Spark de código abierto son la estabilidad, la capacidad de administración y las funciones insuficientes. Todavía hay muchos problemas con la estabilidad del código abierto Spark. Al procesar una gran cantidad de datos, es posible que se quede incompleto o sin memoria. Su rendimiento es a veces más rápido y a veces más lento, a veces más lento que Map/Reduce, por lo que no se puede aplicar a servicios de análisis de datos complejos.

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 usar el disco para datos. La copia de seguridad en caso de errores de memoria, etc., mejora en gran medida la estabilidad de las funciones y el rendimiento de Spark. Se abordaron las cuestiones anteriores y se probó el caso de negocio. TranswarpInceptor puede funcionar de manera estable las 7 x 24 horas del día y puede realizar de manera eficiente varios análisis estadísticos estables en datos a nivel de TB.

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/minería de datos para grandes volúmenes de datos. conjuntos y otras aplicaciones complejas. Los datos utilizados para las pruebas tienen varias distribuciones y ángulos de inclinación y están muy cerca de 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 sus productos, TPC-DS se ha convertido gradualmente en el estándar 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.2 transwarpinceptor vs Impala de la era de la nube

Con soporte completo de SQL, TranswarpInceptor puede ejecutar las 99 consultas SQL. Sin embargo, dado que el conjunto de pruebas TPC-DS publicado oficialmente por Cloudera solo contiene 19 casos de SQL, solo podemos ejecutar estos 19 casos de SQL y el experimento demuestra que todas estas consultas se pueden ejecutar normalmente en Impala.

6.3 transwarpinceptor vs Map Reduce

Utilizamos la misma configuración de hardware y software. En comparación con la eficiencia de ejecución de Hive de código abierto, TranswarpInceptor puede mejorar el rendimiento entre 10 y 100 veces. La Figura 8 muestra la cantidad de mejoras de rendimiento para algunas consultas SQL de TPC-DS en Inceptor y CDH5.1Hive. La cantidad máxima de mejoras puede llegar a 123 veces.

7. Conclusión

Con el lanzamiento de la misma línea de partida en el campo de big data en el país y en el extranjero, creemos que los editores nacionales representativos de Hadoop como Xinghuan Technology ocuparán la gran mayoría. espacio de mercado en China. Ha logrado grandes avances en China y, debido a la feroz competencia y el temple en el mercado chino, ha ido puliendo gradualmente su tecnología y su fuerza para superar a los fabricantes extranjeros avanzados.

Liu. Se unió a Starlink en 2013 y participó en la construcción de la plataforma de big data de Starlink como uno de los primeros empleados. Actualmente, es el gerente de I + D del Departamento de Plataforma de Datos. Es el principal responsable y gestiona la investigación y el desarrollo de la plataforma de datos de Starring big data, como el compilador SQL, el motor de ejecución Spark, etc. Estos productos incluyen software como TransWarpinceptor/transwarp stream.

Nota del editor: Xinghuan Technology comenzó a desarrollar un motor de ejecución SQL basado en Spark en junio de 2013 y lanzó TranswarpInceptor1.0 a finales de 2013, que fue el primer proyecto comercial 7x24 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 Starring Spark y un método de optimización que los usuarios de Spark pueden seguir.