Metadados - wandent/mutual-wiki GitHub Wiki
[[TOC]]
Databricks es una herramienta que funciona como plataforma universal de datos, integrando gestión, codigo y fuentes de datos Clústers Spark
- Integra con múltiples fuentes de datos, como Storage Accounts, Datalake store (Gen1 y Gen2), Azure SQL DW y CosmosDB
- Databricks aprovisiona Clústers Spark bajo demanda, se conecta con las fuentes de datos, ejecuta tareas de computación o transformación de datos y almacena los resultados o envía a otras aplicaciones. Los clusters Spark de Databricks proveen solamente el poder de computación en escala para ejecución de las tareas.
- Databricks puede aprovisionar clusters con recursos y componentes para desarrollar modelos de ciencia de datos usando un conjunto de librerías disponibles
Workspace es un ambiente de controle para gestión de los clústeres, seguridad, desarrollo de código en pySpark, Spark SQL, Spark R o Scala
Para el proyecto de cliente se esta definiendo
- Un Workspace para Desarrollo y QA
-Acceso a los datos en el Datalake store en Desarollo/QA
- Los datos podrán ser una muestra de todo el volumen que será en producción, permitiendo racionalizar el uso y recursos de computación -Datos personales deberán de estar enmascarados por seguridad
- Un Workpsace aislado para Producción, básicamente por las razones
- Gestión de componentes y usuarios esta aislada de el entorno de desarrollo
- Acceso a los clústeres esta aislado, además solamente lo clústeres en el entorno de producción tendrán acceso a los datos reales en el Datalake store tendrán acceso a estos.
Cada job o ejecución de notebook en databricks deberá de estar conectada a un clúster. Un clúster en verdad es un conjunto de maquinas virtuales ejecutando Spark con la función de tomar los datos procesar en separado y integrar.
Para documentación sobre Databricks Clusters
Un pool corresponde a un numero de instancias de nodos de clústeres de un mismo tipo, que pueden estar online en adelantado para acelerar los tiempos de redimensionamiento (pero con el costo computación aplicable) y escalar según la demanda a un número de instancias previamente configurada.
Definiciones de utilización:
- El propósito de un pool es tener instancias (maquinas virtuales de un cluster) pre-armadas y posiblemente encendidas para acelerar el proceso de auto-scale, pero con un costo asociado a eso ya que estarán paradas pero consumiendo recursos de computo.
- Se puede crear un pool para cada tipo de especificación de clúster, basada en su utilización (computación, data engineering o data science por ejemplo)
- El impacto, es en caso de una ejecución de un notebook o un job en databricks antes necesitará subir un nodo adicional para posteriormente ejecutar.
- En Databricks tomando una escala de uso mas amplia en la organización ser recomendaría mantener un número mínimo de instancias de clúster en linea para minimizar el tiempo de resizing y ejecución.
- Las instancias de un pool son basadas en una defunción de un nodo estándar de un clúster inicial, y básicamente replica todas las propiedades de el clúster modelo (incluso tags que se utilicen para tageo de consumo/costo)
- La versión de Databricks Runtime puede estar precargada en las instancias de clusters de un pool, incluso que no este en utilización.
Observar y cambiar cuando necesario las siguentes definicioes el en Pool y Cluster
- Databricks Runtime
- La versión de Databricks Runtime tiene correlacción con la versión de Spark en uso para el cluster, además de otros componentes como Python, R o otros. Así como las librerías. Otras configuraciones
- Options
- Autopilot
- Cluster size
Un notebook es una interfaz basada en web para permitir ejecutar codigo en multiples lenguages, visualizaciones y texto.
Jobs es un recurso de databricks que permite automatizar y programar la ejecución de un notebook, que ejecute acciones de carga o transofrmación de datos.
En el proyecto, no lo utilizaremos el agendador de jobs de databricks si no el Azure Data Factory, por Data Factory permitir tener una telemetría de ejecución común con otros procesos.
Para el proeycto las claves y otras autenticaciones necesarias no estarán en el código, si no almacenadas en key vault y integradas a databricks secrets internamente.
Para integrar los secrets de Databricks a Azure Key Vault. https://docs.microsoft.com/en-us/azure/databricks/security/secrets/secret-scopes
Con la evolución de el uso, y familiaridad con operaciones usando Databricks se podrá usar recursos como Delta Tables, a modo de facilitar operaciones de mezcla (merge), inserción de datos, o purgado de datos en tablas delta manejadas por databricks usando el recurso de Delta Tables Caracteristicas
- Formato - Parquet con snappy compression, gestión interna de metadatos y versiones de los parquet usando json
- Time travel - Posibilidad de hacer consultar al estado de las tablas con anterioridad al momento actual.
- Operaciones de Insert, Merge, Delete
- Para procesos que crean tablas para uso de datos agregados puede resultar mas simple y cercano de el mundo relacional
Databricks File System es una funcionalidad de Databricks que le permite gestionar sus proprios datos en una estructura, internamente databricks almacena los datos de DBFS en un storage interno, no es posible interactuar directamente con este storage (usar Azure Storage Explorer por ejemplo) solamente desde un notebook y por intermedio de un clúster Databricks. https://docs.microsoft.com/en-us/azure/databricks/data/databricks-file-system
Dbfs:/databricks-datasets
En esta ubicación tenemos algunos datasets ejemplo que se pueden utilizar para hacer pruebas o utilizar notebooks compartidos con ejemplos clásicos de Machine Learning en Databricks, los datos para tales ejemplos ya están cargados y disponibles.
Dbfs:/databricks-results
Área para descarga de resultados de notebooks, cuando dentro del notebook aparece la opción de descargar datos.
Dbfs:/mnt/…/
Ubicación para los mountpoints, conectados a un storage/datalake y un contenedor
Dbfs:/tmp/…
Ubicación interna utilizada por defecto para datos temporales con un vínculo a la cuenta de cada usuario. ejemplo: Dbfs:/tmp/[email protected]/
Usando Databricks es posible definir bancos de datos y tablas persistentes. Le definición sigue el escenario de uso y el área (trusted o refined) en uso. Además, para cada base de datos serán definidas las tablas que correspondan de manera que se reutilicen en otros procesos.
Es fundamental tener un control de acceso a el workspace, a los clústeres y a las tablas. Databricks tiene una funcionalidad para controlar el acceso a las tablas. Enabled Table Access Control
Con la popularización de el uso de Databricks, puede se hacer necesario implementar una solución de control de acceso mas robusta. Databricks Enterprise Security
-
Por defecto en producción el workspace databricks debera de ser emparejado con la VNET que comunica con el Azure Data Lake Store y otros componentes relacionados a el middleware.
-
En este sentido, todos los clusters tendrán comunicación con esta vnet permitiendo el flujo de datos.
-
Para acceso a el databricks workspace, cada usuario debera de ser autorizado.
-
Además, es recomendable que antes de recibir acceso cada usuario, sea Data Scientist o Data Engineer, deberá de pasar por una capacitación minima para usar el ambiente. Además de entender las policicas de uso de datos de la organización.
-
Los usuarios deberán de ser autorizados a acceder a los clusters que se aplican a su perfil de uso.
-
Además, podemos tener clusters que usan autenticación passthrough, significando que el usuario autentica en el Workspace Databricks con su cuenta de Azure AD y cuando realiza alguna operación en un cluster (a ser definido) el cluster se autentica en el Azure Data Lake Store con las credenciales.
-
Efectivamente, es una practica interesante desde un punto de vista de seguridad, pero puede generar trabajo para entender escernarios que deberian de funcionar, y no funcionan con un usuario especifico por un tema de permisiones.
- Se recomendaría el uso de clusters con passthrough solamente en escenarios de consumo de datos para data scientists con el uso de area sandbox o el consumo de tablas en el area de refined.
-
El workspace de producción será restringido a los usuarios y procesos productivos de transformación de datos. No esta considerado el workspace de producción ser usado para experimentación.