Cómo construir una plataforma de análisis de big data de alto rendimiento
Big data es uno de los términos más utilizados en TI en la actualidad. Sin embargo, las definiciones de big data varían y todos los argumentos conocidos, como datos estructurados y no estructurados, datos a gran escala, etc., están incompletos. Generalmente se considera que los sistemas de big data tienen cinco características clave de los datos: tamaño, variedad, eficiencia, precisión y valor de los datos.
Según Gartner, la gran escala se puede definir como "las capacidades técnicas de recopilación y procesamiento de datos locales son insuficientes para proporcionar valor comercial a los usuarios. Si las tecnologías existentes se pueden adaptar para manejar esta escala de datos, entonces se puede decir que es una solución de big data exitosa.
Estos datos a gran escala provienen no solo de fuentes de datos existentes, sino también de fuentes de datos emergentes, como dispositivos tradicionales (portátiles, industriales), registros. , automóviles y, por supuesto, datos estructurados y no estructurados.
Según Gartner, la diversidad se puede definir de la siguiente manera: "Activos de información altamente variables que no están estrictamente definidos cuando se producen y consumen, incluidos múltiples tipos. Una combinación de forma, tipo y estructura. También incluye datos históricos anteriores, que también pasan a formar parte de los datos de diversidad debido a los cambios en la tecnología.
La eficiencia se puede definir como la velocidad a la que llegan los datos de diferentes fuentes. Constantemente ingresan a los sistemas de TI flujos de datos organizados y desorganizados procedentes de diversos dispositivos, sensores y otras fuentes. Por lo tanto, también debería aumentar la capacidad de analizar e interpretar (presentar) estos datos en tiempo real.
Según Gartner, la eficiencia se puede definir de la siguiente manera: "E/S (producción y consumo) de alta velocidad de flujos de datos, pero centrada principalmente en la productividad de datos variables dentro de un conjunto de datos o en múltiples conjuntos de datos. .
La exactitud, autenticidad o precisión es otro componente importante de los datos. Para tomar decisiones comerciales acertadas, todo análisis de datos debe ser correcto y preciso (preciso). pueden proporcionar un enorme valor comercial, como las telecomunicaciones, las finanzas, el comercio electrónico y las redes sociales, se han dado cuenta de que sus datos son una oportunidad comercial potencialmente enorme. Pueden predecir el comportamiento de los usuarios y recomendar productos relevantes para transacciones riesgosas.
Como ocurre con cualquier otro sistema de TI, el rendimiento es clave para el éxito de un sistema de big data. El objetivo de este artículo es explicar cómo garantizar el rendimiento de un sistema de big data. módulos funcionales que debe incluir el sistema de big data
Los módulos funcionales que debe incluir el sistema de big data incluyen: primero, la capacidad de obtener datos de diversas fuentes de datos, preprocesamiento de datos (por ejemplo, limpieza, verificación, etc. ), almacenamiento de datos, procesamiento de datos, análisis de datos, etc. (por ejemplo, realizar análisis predictivos, generar recomendaciones de uso en línea, etc.) y, finalmente, la capacidad de presentar y visualizar resultados resumidos
Lo siguiente La figura describe el sistema de big data:
2.1 Varias fuentes de datos
El ecosistema de TI actual requiere el análisis de datos de una variedad de fuentes diferentes. ya sean aplicaciones web en línea, cargas por lotes o alimentación, transmisión de datos en tiempo real, puede ser cualquier fuente de datos, industrial, portátil, de detección doméstica, etc.
Obviamente, los datos de diferentes fuentes están en diferentes formatos. y usar diferentes protocolos, por ejemplo, en línea. Una aplicación web puede usar el formato SOAP/XML para enviar datos a través de HTTP, la fuente puede provenir de un archivo CSV, mientras que otros dispositivos pueden usar el protocolo de comunicación MQTT.
Dado que el rendimiento de estos sistemas individuales está fuera del control del sistema de big data, y estos sistemas suelen ser aplicaciones externas proporcionadas y mantenidas por proveedores o equipos externos, este artículo no profundizará en el análisis del rendimiento de estos sistemas.
2.2 Recopilación de datos
Capítulo. El primer paso es recopilar los datos. Este proceso incluye analizarlos, validarlos, transformarlos, deduplicarlos y almacenarlos en un dispositivo persistente adecuado para. su empresa (disco duro, almacenamiento, nube, etc.)
En las siguientes secciones, este artículo destacará algunos consejos muy importantes sobre cómo obtener datos. Tenga en cuenta que este artículo no analizará las ventajas y desventajas. Contras de varias técnicas de recopilación de datos.
2.3 Almacenamiento de datos
En el segundo paso, una vez que los datos se han ingresado en el sistema de big data, se han limpiado y convertido al formato requerido, estos Los procesos tienen lugar a medida que los datos se almacenan en la capa de persistencia adecuada.
En los siguientes capítulos, este artículo presentará algunas de las mejores prácticas de almacenamiento (incluido el almacenamiento lógico y físico). Los aspectos de seguridad de los datos también se analizarán al final de este artículo.
2.4 Procesamiento y análisis de datos
El tercer paso es desnormalizar parte de los datos limpios, incluida la clasificación de los datos en algunos conjuntos de datos relacionados y la agrupación de los resultados de los datos por intervalos específicos, ejecutar algoritmos de aprendizaje automático y análisis predictivo, etc.
En los siguientes capítulos, este artículo presentará algunas de las mejores prácticas para realizar procesamiento y análisis de datos para optimizar el rendimiento de los sistemas de big data.
2.5 Visualización y visualización de datos
El último paso es mostrar los resultados de los datos procesados por cada algoritmo de análisis diferente. Este paso implica leer resultados resumidos precalculados (u otros conjuntos de datos similares) y presentarlos en forma de una interfaz o tabla fácil de usar (gráfico, etc.). Esto ayuda a comprender los resultados del análisis de datos.
3. Consejos de rendimiento para la recopilación de datos
La recopilación de datos es el primer paso para introducir datos de diversas fuentes en un sistema de big data. La realización de este paso determinará directamente la cantidad de datos que el sistema de big data puede procesar en un tiempo determinado.
El proceso de recopilación de datos se basa en los requisitos individuales del sistema, pero algunos pasos comúnmente realizados incluyen: analizar los datos entrantes, realizar las validaciones necesarias, desinfectar los datos (como la deduplicación), convertir formatos y almacenar el datos en algún tipo de capa de persistencia.
Los pasos lógicos involucrados en el proceso de recopilación de datos se muestran a continuación:
A continuación se ofrecen algunos consejos de rendimiento:
●Las transmisiones desde diferentes fuentes de datos deben ser asíncronas de . Esto se puede lograr mediante la transferencia de archivos o el middleware orientado a mensajes (MoM). Debido a que los datos se transfieren de forma asincrónica, el rendimiento del proceso de recopilación de datos puede ser significativamente mayor que las capacidades de procesamiento del sistema de big data. La transferencia de datos asincrónica también permite el desacoplamiento entre sistemas de big data y fuentes de datos dispares. La infraestructura de big data está diseñada para ser fácilmente escalable de forma dinámica, y el tráfico máximo de recopilación de datos se considera seguro para los sistemas de big data.
● Si los datos se extraen directamente de una base de datos externa, asegúrese de utilizar un método por lotes para extraer los datos.
● Si analiza datos de un archivo de fuente, asegúrese de utilizar un analizador adecuado. Por ejemplo, si lee datos de un archivo XML, existen diferentes analizadores para JDOM, SAX, DOM, etc. Asimismo, existen diferentes analizadores para CSV, SAX, DOM, etc. Asimismo, existen múltiples analizadores y API para CSV, JSON y otros formatos similares. Elija el analizador con el mejor rendimiento según sus necesidades.
● Prefiere soluciones de verificación integradas. La mayoría de los flujos de trabajo de análisis/validación normalmente se ejecutan en un entorno de servidor (ESB/servidor de aplicaciones). La mayoría de los escenarios de aplicación básicamente tienen herramientas de verificación estándar listas para usar. En la mayoría de los casos, estas herramientas estándar disponibles en el mercado suelen funcionar mejor que las herramientas que usted mismo desarrolla.
● Asimismo, si los datos están en formato XML, se debe utilizar XML (XSD) antes que la validación.
● Incluso si procesos como analizadores o calibración se realizan mediante scripts personalizados (como Java), se debe preferir el uso de bibliotecas integradas o marcos de desarrollo. En la mayoría de los casos, esto suele ser mucho más rápido que desarrollar cualquier código personalizado.
● Filtre los datos no válidos con la mayor antelación posible para que los procesos posteriores no desperdicien demasiada potencia informática en datos no válidos.
● La forma en que la mayoría de los sistemas manejan los datos no válidos es almacenándolos en tablas especializadas, así que considere el almacenamiento de la base de datos y otros gastos generales de almacenamiento adicionales al construir su sistema.
●Si es necesario limpiar los datos de la fuente de datos, como eliminar información innecesaria, debe intentar mantener la versión del extractor consistente en todas las fuentes de datos y asegurarse de que se procesen grandes cantidades de datos a la vez. , no todos a la vez Procesar un registro. En términos generales, la limpieza de datos requiere correlación de tablas. La limpieza de datos debe usarse una vez en la asociación de datos estáticos, y el uso de un lote muy grande a la vez mejorará significativamente la eficiencia del procesamiento de datos.
●La deduplicación de datos es muy importante. Este proceso determina qué campos constituyen la clave principal. Normalmente, la clave principal es un tipo que se puede agregar, como una marca de tiempo o un ID. Normalmente, cada registro puede actualizarse mediante un índice con respecto a la clave principal, por lo que es mejor mantener la clave principal simple para garantizar el rendimiento de la recuperación al actualizar.
● Los datos recibidos de múltiples fuentes pueden estar en diferentes formatos. A veces es necesaria la migración de datos para convertir los datos recibidos de múltiples formatos a uno o un conjunto de formatos estándar.
● Al igual que con el proceso de análisis, recomendamos utilizar herramientas integradas, que funcionarán mucho mejor que desarrollar las suyas propias desde cero.
● El proceso de migración de datos suele ser el paso más complejo, urgente y que consume recursos en el proceso de procesamiento de datos. Por lo tanto, asegúrese de utilizar la computación paralela tanto como sea posible en este proceso.
●Después de completar todas las actividades de recopilación de datos anteriores, los datos convertidos generalmente se almacenan en una capa de persistencia para futuros análisis, procesamiento, síntesis, agregación, etc.
● Actualmente existen varias soluciones técnicas (RDBMS, sistemas de archivos distribuidos NoSQL como Hadoop, etc.) para manejar esta persistencia.
●Por favor, elija cuidadosamente la solución que mejor se adapte a sus necesidades.
4. Consejos de rendimiento en el almacenamiento de datos
Una vez completados todos los pasos de recopilación de datos, los datos ingresarán a la capa de persistencia.
Algunas de las técnicas relacionadas con el rendimiento del almacenamiento de datos que se analizan en esta sección incluyen la optimización del almacenamiento físico y las estructuras de almacenamiento lógico (modelos de datos). Estas técnicas se aplican a todo el procesamiento de datos, ya sean datos generados por algún analizador o datos de salida finales, o datos resumidos precalculados, etc.
● Primero seleccione el paradigma de datos. La forma en que modela sus datos tiene un impacto directo en el rendimiento en términos de redundancia de datos, capacidad de almacenamiento en disco y más. Para algunos casos de uso en los que simplemente importa archivos a una base de datos, es posible que desee mantener los datos en su formato original, mientras que para otros casos de uso, como realizar algunos cálculos analíticos para la agregación, es posible que no necesite normalizar los datos.
● La mayoría de los sistemas de big data utilizan bases de datos NoSQL en lugar de RDBMS para procesar datos.
●Las diferentes bases de datos NoSQL son adecuadas para diferentes escenarios de aplicación, algunas de ellas son mejores para seleccionar y otras son mejores para insertar o actualizar.
●La base de datos se divide en almacenamiento de filas y almacenamiento de columnas.
●La elección de la base de datos específica depende de sus necesidades específicas (por ejemplo, la proporción de lectura/escritura de la base de datos de su aplicación).
●Además, la configuración de cada base de datos también es diferente para controlar estas bases de datos para la copia de seguridad de la replicación de la base de datos o para mantener una coherencia estricta de los datos.
●Estas configuraciones tienen un impacto directo en el rendimiento de la base de datos. Es importante comprender esto antes de elegir una tecnología de base de datos.
●Para diferentes bases de datos NoSQL, la relación de compresión, el grupo de búfer, el tamaño del tiempo de espera y la configuración de la caché son diferentes, y el impacto en el rendimiento de la base de datos también es diferente.
● La fragmentación y partición de datos es otra característica muy importante de estas bases de datos. La forma en que se fragmentan sus datos puede tener un gran impacto en el rendimiento del sistema, así que elija con cuidado al fragmentar y particionar sus datos.
● No todas las bases de datos NoSQL tienen soporte integrado para uniones, clasificación, agregaciones, filtros, índices, etc.
●Si es necesario, se recomienda utilizar funciones similares integradas, porque el autodesarrollo aún no funciona.
●NoSQL tiene herramientas integradas de compresión, códecs y migración de datos. Si estas herramientas satisfacen algunas de sus necesidades, entonces es mejor utilizar estas funciones integradas. Estas herramientas pueden realizar una variedad de tareas como conversión de formato, compresión de datos y más. Utilice herramientas integradas no solo para mejorar el rendimiento sino también para reducir la utilización de la red.
● Muchas bases de datos NoSQL admiten múltiples tipos de sistemas de archivos. Estos sistemas incluyen sistemas de archivos locales, sistemas de archivos distribuidos e incluso soluciones de almacenamiento basadas en la nube.
●Si existen requisitos interactivos estrictos, debe intentar utilizar un sistema de archivos nativo (integrado) NoSQL (por ejemplo, HBase usa HDFS).
●Esto se debe a que si se utilizan ciertos sistemas/formatos de archivos externos, los datos deben codificarse/descodificarse/migrarse en consecuencia. Esto agregará procesamiento redundante innecesario a todo el proceso de lectura/escritura.
● El modelo de datos de un sistema de big data generalmente debe diseñarse de manera integral en función de los casos de uso de la demanda.
Por el contrario, la tecnología de modelado de datos RDMBS está diseñada básicamente como un modelo general, donde se utilizan claves externas y relaciones entre tablas para describir las interacciones entre entidades de datos y el mundo real.
● A nivel de hardware, el modelo RAID local puede no ser el adecuado. Considere utilizar almacenamiento SAN.
5. Consejos de rendimiento en el procesamiento y análisis de datos
El procesamiento y análisis de datos son el núcleo de los sistemas de big data. En este paso se deben completar operaciones lógicas como agregación, predicción y agrupación.
Esta sección analiza algunos consejos sobre el rendimiento del procesamiento de datos. Vale la pena señalar que la arquitectura del sistema de big data tiene dos componentes: el procesamiento de flujo de datos en tiempo real y el procesamiento de datos por lotes. Esta sección cubre todos los aspectos del procesamiento de datos.
● Elija un marco de procesamiento de datos adecuado después de una evaluación detallada de los formatos y modelos de datos.
●Algunos de estos marcos son adecuados para el procesamiento de datos por lotes, mientras que otros son adecuados para el procesamiento de datos en tiempo real.
●Del mismo modo, algunos marcos utilizan el modo de memoria y otros se basan en el modo de procesamiento de disco io.
●Algunos marcos se especializan en computación altamente paralela, lo que puede mejorar en gran medida la eficiencia de los datos.
●El rendimiento del marco basado en memoria es significativamente mejor que el del marco basado en E/S de disco, pero el costo también será muy alto.
● En resumen, debes elegir un framework que satisfaga tus necesidades. De lo contrario, corre el riesgo de no cumplir con los requisitos funcionales y no funcionales y, por supuesto, con los requisitos de rendimiento.
● Algunos de estos marcos dividen los datos en fragmentos más pequeños. Estos fragmentos más pequeños de datos se procesan de forma independiente mediante un único trabajo. El coordinador gestiona todos estos subtrabajos independientes
● Se debe tener cuidado al fragmentar los datos.
● Cuanto más pequeño sea el bloque de datos, más trabajos se crearán, lo que aumentará la carga de los trabajos de inicialización y limpieza del sistema.
● Si el bloque de datos es demasiado grande, la transferencia de datos puede tardar mucho en completarse. Esto también puede provocar un uso desequilibrado de los recursos, con un trabajo grande ejecutándose durante mucho tiempo en un servidor mientras otros servidores están esperando.
●No olvides verificar el número total de trabajos para la tarea. Ajuste este parámetro si es necesario.
● Lo mejor es monitorear la transmisión de bloques de datos en tiempo real. El monitoreo local en io es más eficiente. El efecto secundario de esto es aumentar el parámetro de redundancia de los bloques de datos (en general, hadoop tiene por defecto 3 copias), lo que a su vez reducirá el rendimiento del sistema.
● Además, los flujos de datos en tiempo real deben fusionarse con los resultados del procesamiento de datos por lotes. El sistema debe diseñarse para minimizar el impacto en otros trabajos.
● En la mayoría de los casos, el mismo conjunto de datos debe calcularse varias veces. Esto podría deberse a errores informados durante los pasos iniciales, como la recopilación de datos, o cambios en algunos procesos comerciales que serían notables incluso con datos más antiguos. Debe prestar atención a este aspecto de la tolerancia a fallos al diseñar su sistema.
● Esto significa que es posible que necesite almacenar los datos sin procesar durante un período de tiempo más largo, por lo que necesitará más espacio de almacenamiento.
● Los resultados de los datos deben guardarse en el formato que los usuarios esperan ver cuando se generen. Por ejemplo, si el resultado final es que el usuario solicita que el resultado se resuma como una serie de tiempo semanal, entonces querrá guardar los resultados resumidos semanalmente.
● Para lograr este objetivo, el modelado de bases de datos de sistemas de big data debe realizarse de manera que satisfaga los casos de uso. Por ejemplo, los sistemas de big data a menudo generan tablas de datos estructurados, lo que les brinda grandes ventajas a la hora de presentar el resultado.
● Más comúnmente, esto hará que el usuario perciba problemas de rendimiento. Por ejemplo, si el usuario solo necesita los resultados resumidos de los datos de la semana pasada y los datos se resumen por semana cuando la cantidad de datos es grande, esto reducirá en gran medida las capacidades de procesamiento de datos.
● Algunos marcos proporcionan una evaluación diferida de consultas de big data. Este enfoque funciona bien cuando los datos no se utilizan en ningún otro lugar.
● Supervise el rendimiento del sistema en tiempo real, lo que puede ayudarle a predecir cuándo se completarán los trabajos.
6. Consejos de rendimiento en presentaciones y visualización de datos
Un sistema de big data de alto rendimiento y bien diseñado puede proporcionar una valiosa orientación estratégica a través del análisis en profundidad de los datos. Aquí es donde entra en juego la visualización. Una buena visualización ayuda a los usuarios a ver los datos desde una perspectiva multidimensional.
Vale la pena señalar que las herramientas o sistemas de informes y BI tradicionales para crear informes personalizados no pueden escalarse masivamente para satisfacer las necesidades de visualización de los sistemas de big data. Mientras tanto, ya están disponibles muchas herramientas de visualización COTS.
Este artículo no explicará cómo funcionan estas herramientas, pero se centrará en algunas técnicas comunes para ayudarle a crear una capa de visualización.
● Asegúrese de que la capa de visualización muestre los datos obtenidos de la tabla de salida del resumen final. Estas tablas de resumen se pueden resumir en poco tiempo y se recomienda utilizar categorías o casos de uso para el resumen. Hacer esto evita leer todos los datos sin procesar directamente desde la capa de visualización.
●Esto no solo minimiza la transferencia de datos, sino que también ayuda a evitar retrasos en el rendimiento cuando los usuarios ven informes en línea.
●El reparticionamiento puede aprovechar el caché de las herramientas de visualización de gran tamaño. El almacenamiento en caché puede tener un impacto muy bueno en el rendimiento general de la capa de visualización.
● Las vistas materializadas son otra técnica importante que puede mejorar el rendimiento.
● La mayoría de las herramientas de visualización permiten aumentar el número de hilos para mejorar la velocidad de respuesta de las solicitudes. Con suficientes recursos y más acceso, esta es una excelente manera de mejorar el rendimiento del sistema.
● Preprocesar los datos por adelantado tanto como sea posible. Si algunos datos deben calcularse en tiempo de ejecución, los cálculos en tiempo de ejecución deben minimizarse.
●Las herramientas de visualización pueden corresponder a diferentes estrategias de lectura según diferentes métodos de presentación. Estos incluyen el modo fuera de línea, el modo de extracción o el modo de conexión en línea. Cada modelo de servicio está diseñado para diferentes escenarios de aplicación.
● Asimismo, algunas herramientas pueden realizar una sincronización de datos incremental. Esto minimiza la transferencia de datos y consolida todo el proceso de visualización.
●Minimizar el tamaño de gráficos, tablas, etc.
● La mayoría de los marcos y herramientas de visualización utilizan gráficos vectoriales escalables (SVG). Los diseños complejos que utilizan SVG pueden tener un impacto grave en el rendimiento.
7. Seguridad de los datos e impacto en el rendimiento
Como ocurre con cualquier sistema de TI, los requisitos de seguridad pueden tener un impacto significativo en el rendimiento de los sistemas de big data. En esta sección, analizamos el impacto de la seguridad en el rendimiento de las plataformas de big data.
- Primero, asegúrese de que todas las fuentes de datos estén verificadas. Incluso si todas las fuentes de datos son seguras y no existen requisitos de seguridad, entonces tiene la flexibilidad de diseñar un módulo de seguridad para configurar la implementación.
- Si los datos se validan una vez, no validarlos dos veces. Si necesita autenticarse dos veces, utilice alguna tecnología similar a un token para guardar los datos para su uso posterior. Esto ahorra la sobrecarga de validar datos repetidamente.
- Es posible que necesite admitir otros métodos de autenticación, como soluciones basadas en PKI o Kerberos, cada uno de los cuales tiene diferentes métricas de rendimiento que deben tenerse en cuenta antes de finalizar la solución.
- Normalmente, los datos se comprimen y luego se introducen en un sistema de procesamiento de big data. Los beneficios de esto son obvios y no necesitan explicación.
- Para la eficiencia de diferentes algoritmos, es necesario comparar el uso de la CPU para elegir un algoritmo de compresión que equilibre el volumen de transferencia, el uso de la CPU, etc.
- Para la eficiencia de diferentes algoritmos, es necesario comparar el uso de la CPU.
- Asimismo, se debe evaluar la lógica y los algoritmos de cifrado antes de elegirlos.
- Siempre es aconsejable limitar la información sensible.
- En una pista de auditoría o al iniciar sesión, es posible que necesite mantener registros o registros similares para diferentes actividades como acceso, actualizaciones, etc. Es posible que sea necesario personalizarlo y modificarlo en función de las diferentes políticas regulatorias y necesidades de los usuarios.
- Tenga en cuenta que este requisito no solo aumenta la complejidad del procesamiento de datos, sino que también aumenta los costos de almacenamiento.
- Intenta utilizar la tecnología de seguridad proporcionada por el sistema operativo, base de datos y otras capas inferiores. Estas soluciones de seguridad funcionarán significativamente mejor que las soluciones que usted mismo diseñe y desarrolle.
8. Conclusión
Este artículo cubre varios consejos de rendimiento y conocimientos técnicos que pueden servir como pautas generales para construir una plataforma de análisis de big data. Las plataformas de análisis de big data son complejas y, para cumplir con los requisitos de rendimiento de dichos sistemas, debemos tener esto en cuenta cuando comenzamos a construirlas.
Este artículo describe orientación técnica que se puede utilizar en varias etapas de la construcción de una plataforma de big data, incluida la forma en que la seguridad afecta el rendimiento de una plataforma de análisis de big data.