La diferencia entre almacén de datos y ODS, el plan de coexistencia de almacén de datos y ODS
Hace mucho que quiero ordenar el contenido de este artículo. Dado que es una charla aleatoria, hablemos de lo que me viene a la mente. He estado involucrado en la industria de Internet. Tomemos la industria de Internet como ejemplo. En primer lugar, enumeremos brevemente los usos de los almacenes de datos y las plataformas de datos en la industria de Internet:
Integre todos los datos comerciales de la empresa y establezca un centro de datos unificado;
Proporcione varios informes para proporcionar información de alto nivel para diversas empresas;
Proporcionar soporte de datos operativos para el funcionamiento del sitio web, es decir, a través de datos, la operación puede comprender los efectos operativos del sitio web y los productos de manera oportuna. manera;
Para el funcionamiento del sitio web Proporcionar soporte de datos operativos. p>
Proporcione soporte de datos en línea o fuera de línea para cada negocio y conviértase en la plataforma unificada de suministro e intercambio de datos de la empresa;
Analice los datos de comportamiento del usuario y reduzca los costos de inversión a través de la minería de datos, para mejorar la eficacia de la inversión; por ejemplo, publicidad dirigida y precisa, proporcionando a los usuarios recomendaciones personalizadas, etc.
Desarrollar productos de datos para generar ganancias directa o indirectamente para la empresa;
Construir una plataforma de datos abiertos y abrir los datos de la empresa;
. . . . . .
El contenido mencionado anteriormente parece ser más o menos el mismo que el uso de almacenes de datos en las industrias tradicionales. Todos requieren que el almacén de datos/plataforma de datos tenga buena estabilidad y confiabilidad, pero en la industria de Internet; Además de la gran cantidad de datos, las empresas tienen requisitos de puntualidad cada vez más altos, e incluso hay muchos requisitos en tiempo real. Además, los negocios en la industria de Internet cambian muy rápidamente y es imposible utilizar el enfoque de arriba hacia abajo. a la gestión de datos como las industrias tradicionales. En la industria de Internet, se puede utilizar un enfoque de arriba hacia abajo para construir un almacén de datos de una vez por todas. Esto requiere que las nuevas empresas puedan integrarse rápidamente en el almacén de datos, una vez que el antiguo negocio se desconecta, se puede recuperar fácilmente. datos existentes fuera de línea en el almacén;
De hecho, el almacén de datos en la industria de Internet es el llamado almacén de datos ágil, que no solo requiere una respuesta rápida a los datos, sino que también requiere una respuesta rápida a los negocios. ;
De hecho, el almacén de datos en la industria de Internet es el llamado almacén de datos ágil.
Para construir un data warehouse ágil, además de los requisitos técnicos de la arquitectura, otro aspecto muy importante es el modelado de datos si se quiere construir un modelo de datos que sea compatible con todos los datos y negocios del mismo. Al principio, volvemos al método tradicional de construcción de almacenes de datos, que es difícil de responder rápidamente a los cambios comerciales. Para abordar esta situación, generalmente primero realizamos un modelado en profundidad del negocio persistente central (por ejemplo: establecer un modelo de análisis estadístico del sitio web y un modelo de trayectoria de navegación del usuario basado en los registros del sitio web; establecer un modelo de usuario basado en el usuario principal de la empresa). datos), y otras empresas generalmente usan dimensiones. Cree un modelo de datos usando tablas anchas. Esta parte es una historia posterior.
Arquitectura general La siguiente figura es el diagrama de arquitectura de la plataforma de datos que utilizamos actualmente. De hecho, la mayoría de las empresas deberían ser similares:
Haga clic para ingresar la descripción de la imagen.
Desde el punto de vista lógico, generalmente existen una capa de recopilación de datos, una capa de análisis y almacenamiento de datos, una capa de intercambio de datos y una capa de aplicación de datos. Los nombres pueden ser diferentes, pero las funciones básicas son las mismas.
Veámoslo desde abajo hacia arriba:
Recopilación de datos La tarea de la capa de recopilación de datos es recopilar datos de varias fuentes de datos y almacenarlos en un almacén de datos, durante el cual vez que sea posible, habrá una limpieza sencilla.
Hay muchos tipos de fuentes de datos:
Registros de sitios web:
En la industria de Internet, los registros de sitios web representan la mayor proporción y los registros de sitios web se almacenan. en múltiples sitios web En servidores de registro, la regla general es implementar Flume en cada servidor de registro de sitio web.
Agente, recopile registros de sitios web en tiempo real y guárdelos en HDFS;
Base de datos empresarial:
También existen varios tipos de bases de datos empresariales, incluidas Mysql, Oracle, SqlServer, etc. Esta vez, existe una necesidad urgente de sincronizar datos en varias bases de datos con HDFS. Sqoop es una herramienta, pero Sqoop es demasiado pesado y, independientemente de la cantidad de datos, es necesario iniciar MapReduce para su ejecución y todas las máquinas en el. El clúster Hadoop debe poder acceder a la base de datos empresarial; en respuesta a esta situación, el DataX de código abierto de Taobao es una buena solución (consulte el artículo "Herramienta de intercambio masivo de datos de fuentes de datos heterogéneos" para obtener más detalles). Utilice Taobao DataX. Descarga y uso de Taobao DataX》), si tiene los recursos, puede realizar un desarrollo secundario basado en DataX. Actualmente estamos usando DataHub.
Por supuesto, a través de la configuración y el desarrollo, Flume también puede sincronizar datos en la base de datos con HDFS en tiempo real.
Fuentes de datos de Ftp/Http:
Algunos socios pueden proporcionar algunos datos y deben obtenerse a través de métodos urgentes, como Ftp/Http. DataX también puede satisfacer esta necesidad;
Otras fuentes de datos:
Por ejemplo, algunos datos ingresados manualmente solo necesitan una interfaz o un pequeño programa;
Almacenamiento y análisis de datos No hay duda de que HDFS es la plataforma de datos/almacenamiento de datos más perfecta en un entorno de big data.
Análisis y cálculo de datos fuera de línea, es decir, la parte que no requiere un alto rendimiento en tiempo real. En mi opinión, Hive sigue siendo la primera opción, tipos de datos ricos y funciones integradas; del formato de almacenamiento de archivos ORC Muy alto; el soporte SQL muy conveniente permite a Hive realizar análisis estadísticos sobre la base de datos estructurados de manera mucho más eficiente que MapReduce. Se puede completar con una sola solicitud de SQL, y el desarrollo de MR puede requerir cientos de líneas de código. ;
Por supuesto, el uso del marco Hadoop también proporciona una interfaz MapReduce. Si realmente está dispuesto a desarrollar Java o no está familiarizado con SQL, también puede usar MapReduce para análisis y cálculos. Ha sido muy popular en los últimos dos años. Después de la práctica, su rendimiento es mucho mejor que MapReduce y su integración con Hive y Yarn es cada vez mejor. Por lo tanto, debe admitir el uso de Spark y SparkSQL para análisis y cálculo. Debido a que Hadoop Yarn ya existe, usar Spark es realmente muy simple y no es necesario implementar un clúster de Spark separado. Para artículos relacionados sobre Spark On Yarn, consulte: "Artículos de la serie Spark On Yarn"
La parte de computación en tiempo real se presentará por separado más adelante.
Datos**** Disfrute de los datos aquí**** Disfrutar en realidad se refiere al lugar donde se almacenan los resultados de los cálculos y análisis de datos anteriores, que en realidad es una base de datos relacional y una base de datos NOSQL;
Los resultados de análisis y cálculos anteriores utilizando Hive, MR, Spark y SparkSQL todavía están en HDFS, pero la mayoría de las empresas y aplicaciones no pueden obtener datos directamente de HDFS. En este caso, se necesita un lugar para disfrutar de los datos. que varias empresas y productos pueden acceder fácilmente a los datos; ?La capa de recopilación de datos para HDFS es todo lo contrario. Se necesita una herramienta para sincronizar los datos de HDFS con otras fuentes de datos de destino.
Además, algunos datos de resultados de cálculos en tiempo real pueden escribirse directamente mediante el módulo de cálculo en tiempo real para disfrutar de los datos.
Aplicaciones de datos
Productos comerciales
Los datos utilizados por los productos comerciales ya existen en la capa de montaje de datos ** y se pueden obtener directamente de los datos. ** **Acceda a estos datos en la capa de montaje;
Informes
Los datos utilizados en los informes son los mismos que los de los productos comerciales. Los datos utilizados para los informes generalmente se resumen y almacenan en la capa de disfrute de datos;
Consulta improvisada
Hay muchos usuarios de consultas improvisadas, que pueden ser desarrolladores de datos, sitios web y operadores de productos. , analistas de datos e incluso jefes de departamento, todos los cuales tienen la necesidad de consultar datos ad hoc;
Estas consultas ad hoc suelen ser el resultado de sistemas de gestión de datos existentes y son accesibles para un solo usuario.
Este tipo de consulta ad hoc generalmente se debe a que los datos existentes en la capa de informes y en la capa de disfrute de datos no satisfacen sus necesidades, por lo que es necesario consultarlos directamente desde la capa de almacenamiento de datos.
Las consultas en tiempo real generalmente se completan a través de SQL. La mayor dificultad radica en la velocidad de respuesta con Hive. Mi solución actual es SparkSQL, cuya velocidad de respuesta es mucho más rápida que Hive. y puede ser muy compatible con Hive.
Por supuesto, también puedes usar Impala si no te importan otros frameworks en la plataforma.
OLAP
Actualmente, muchas herramientas OLAP no pueden admitir la obtención de datos directamente desde HDFS. Todas realizan OLAP sincronizando los datos requeridos con una base de datos relacional. enorme y la base de datos relacional obviamente no puede funcionar;
En este punto. Se requiere el desarrollo correspondiente para obtener datos de HDFS o HBase para completar la función OLAP;
Por ejemplo: de acuerdo con las dimensiones e indicadores indefinidos seleccionados por el usuario en la interfaz, obtener datos de HBase para mostrarlos a través de interfaz de desarrollo.
Otras interfaces de datos
Este tipo de interfaz incluye interfaces generales e interfaces personalizadas. Por ejemplo: la interfaz para obtener atributos de usuario de Redis es una interfaz común y todas las empresas pueden llamar a esta interfaz para obtener atributos de usuario.
Las empresas de informática en tiempo real ahora tienen requisitos de tiempo real cada vez mayores para los almacenes de datos, como: comprender el tráfico general del sitio web en tiempo real y obtener la exposición y los clics de un anuncio en tiempo real; en datos masivos, es básicamente imposible confiar en bases de datos tradicionales y métodos de implementación tradicionales. Se necesita un marco informático en tiempo real distribuido, de alto rendimiento, baja latencia y alta confiabilidad. Storm es relativamente maduro en este aspecto, pero elegí Spark Streaming por una sencilla razón: no quería introducir más plataformas de marco. Además, la latencia de Spark Streaming es un poco mayor que la de Storm, lo que puede ignorarse. para nuestras necesidades.
Actualmente utilizamos Spark Streaming para implementar dos funciones: estadísticas de tráfico del sitio web en tiempo real y estadísticas de efectos publicitarios en tiempo real.
El método también es muy simple. Flume recopila registros de sitios web y registros de publicidad en el servidor de registros front-end y los envía a Spark Streaming en tiempo real. Spark Streaming completa las estadísticas y almacena los datos en Redis. El negocio se implementa accediendo a Redis.
Programación y seguimiento de tareas En el almacén de datos/plataforma de datos, existe una variedad de programas y tareas, tales como: tareas de recopilación de datos, tareas de sincronización de datos, tareas de análisis de datos, etc.
Además de la programación regular, estas tareas también tienen dependencias de tareas muy complejas. Por ejemplo, las tareas de análisis de datos deben esperar a que se completen las tareas de recopilación de datos correspondientes antes de poder iniciar las tareas de sincronización de datos. esperar a que se completen las tareas de análisis de datos. Esto requiere un sistema de monitoreo y programación de tareas muy completo, que sirve como centro del almacén de datos/plataforma de datos y es responsable de programar y monitorear la distribución y operación de todas las tareas.
El artículo anterior "Programación y seguimiento de tareas en la plataforma Big Data" no se repetirá aquí.
Resumen En mi opinión, la arquitectura no es que cuanto más y más nueva sea la tecnología, mejor, sino que cuanto más simple y estable mejor pueda satisfacer las necesidades. En la actualidad, en nuestra plataforma de datos, el desarrollo se centra más en los negocios que en la tecnología. Una vez que comprenden el negocio y los requisitos, básicamente solo necesitan realizar un desarrollo SQL simple y luego configurarlo en el sistema de programación. recibirá una alerta. Esto permite centrar más recursos en el negocio.
Haga clic para ingresar la descripción de la imagen
Haga clic para ingresar la descripción de la imagen