{"id":17818,"date":"2024-03-05T12:38:20","date_gmt":"2024-03-05T12:38:20","guid":{"rendered":"https:\/\/beta.bluetab.net\/databricks-on-aws-an-architectural-perspective-part-2\/"},"modified":"2024-03-05T12:38:20","modified_gmt":"2024-03-05T12:38:20","slug":"databricks-sobre-aws-una-perspectiva-de-arquitectura-parte-2","status":"publish","type":"post","link":"https:\/\/beta.bluetab.net\/en\/2024\/03\/databricks-sobre-aws-una-perspectiva-de-arquitectura-parte-2\/","title":{"rendered":"Databricks sobre AWS &#8211; Una perspectiva de arquitectura (parte 2)"},"content":{"rendered":"<figure><a href=\"https:\/\/www.linkedin.com\/in\/ruben-villa-munoz\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/1646762031857-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/ruben-villa-munoz\/\" target=\"_blank\" rel=\"noopener\">Rub\u00e9n Villa<\/a><\/h4>\n<p>Big Data &#038; Cloud Architect\n<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/jongaraialdegallego\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/1672931909474-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/jongaraialdegallego\/\" target=\"_blank\" rel=\"noopener\">Jon Garaialde<\/a><\/h4>\n<p>Cloud Data Solutions Engineer\/Architect<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/alfonsojerezizquierdo\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/alfonso-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/alfonsojerezizquierdo\/\" target=\"_blank\" rel=\"noopener\">Alfonso Jerez<\/a><\/h4>\n<p>Analytics Engineer | GCP | AWS | Python Dev | Azure | Databricks | Spark<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/albertojaenrevuelta\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2022\/01\/1607606292897-150x150.jpg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/albertojaenrevuelta\/\" target=\"_blank\" rel=\"noopener\">Alberto Ja\u00e9n<\/a><\/h4>\n<p>Cloud Engineer | 3x AWS Certified | 2x HashiCorp Certified | GitHub: ajaen4\n<\/p>\n<p>Este art\u00edculo es el segundo de una serie de dos que pretende abordar la integraci\u00f3n de Databricks en entornos AWS analizando las alternativas ofrecidas por el producto respecto al dise\u00f1o de arquitectura. En el primero se habl\u00f3 acerca de temas m\u00e1s relacionados con la arquitectura y\u00a0<i>networking<\/i>, en esta segunda entrega hablaremos sobre temas relacionados con la seguridad y administraci\u00f3n general.<\/p>\n<p>Los contenidos de cada art\u00edculo son los siguientes:<\/p>\n<p><b>Primera entrega:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Introducci\u00f3n<\/li>\n<li aria-level=\"1\">Data Lakehouse &amp; Delta<\/li>\n<li aria-level=\"1\">Conceptos.<\/li>\n<li aria-level=\"1\">Arquitectura.<\/li>\n<li aria-level=\"1\">Planes y tipos de carga de trabajo.<\/li>\n<li aria-level=\"1\">Networking.<\/li>\n<\/ul>\n<p><b>Esta entrega:<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Seguridad<\/li>\n<li aria-level=\"1\">Persistencia<\/li>\n<li aria-level=\"1\">Billing<\/li>\n<\/ul>\n<p>El primer art\u00edculo puede visitarse en el siguiente\u00a0<a href=\"https:\/\/beta.bluetab.net\/databricks-sobre-aws-una-perspectiva-de-arquitectura-parte-1\/\" target=\"_blank\" rel=\"noopener\">enlace<\/a><\/p>\n<h2>Glosario<\/h2>\n<ul>\n<li aria-level=\"1\"><b><i>Control Plane:\u00a0<\/i><\/b>aloja los servicios\u00a0<i>back-end<\/i>\u00a0de Databricks necesarios para disponibilizar la interfaz gr\u00e1fica, APIs REST para la gesti\u00f3n de la cuenta y\u00a0<i>workspaces<\/i>. Dichos servicios est\u00e1n desplegados en una cuenta AWS propiedad de Databricks. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Credentials Passthrough:\u00a0<\/i><\/b>mecanismo utilizado por Databricks para la gesti\u00f3n de accesos a las diferentes fuentes de datos. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Cross-account role:\u00a0<\/i><\/b>rol que se disponibiliza para que Databricks pueda asumirlo desde su cuenta en AWS. Se utiliza para desplegar la infraestructura y para poder asumir otros roles dentro de AWS. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Compute Plane:\u00a0<\/i><\/b>aloja toda la infraestructura necesaria para el procesamiento de datos: persistencia,\u00a0<i>clusters<\/i>, servicios de logging, librer\u00edas spark, etc. El\u00a0<i>Data Plane<\/i>\u00a0se despliega en la cuenta AWS del cliente. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Data role:\u00a0<\/i><\/b>roles con permisos de acceso\/escritura a los\u00a0<i>buckets<\/i>\u00a0de S3 que ser\u00e1n asumidos por el\u00a0<i>cluster<\/i>\u00a0a trav\u00e9s del\u00a0<i>meta instance profile.\u00a0<\/i>Ver primer art\u00edculo para m\u00e1s informaci\u00f3n. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>DBFS:\u00a0<\/i><\/b>sistema de almacenamiento distribuido disponible para los\u00a0<i>clusters.\u00a0<\/i>Es una abstracci\u00f3n sobre un sistema de almacenamiento de objetos, en este caso S3, y permite el acceso a ficheros y carpetas sin necesidad de utilizar URLs. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>IAM Policies:\u00a0<\/i><\/b>pol\u00edticas a trav\u00e9s de las cuales se definen los permisos de acceso en AWS.<\/li>\n<li aria-level=\"1\"><b><i>Key Management Service (KMS):\u00a0<\/i><\/b>servicio de AWS que permite crear y administrar claves de encriptaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Pipelines:\u00a0<\/i><\/b>series de procesos en los que se ejecuta un conjunto de datos.<\/li>\n<li aria-level=\"1\"><b><i>Prepared:\u00a0<\/i><\/b>datos procesados desde r<i>aw<\/i>\u00a0que se utilizaran como base para poder crear los datos\u00a0<i>Trusted.<\/i><\/li>\n<li aria-level=\"1\"><b><i>Init Script (User Data Script)<\/i><\/b><b>:<\/b>\u00a0las instancias de EC2\u00a0lanzadas desde los cl\u00faster de\u00a0Databricks permiten incluir un script con el cual instalar actualizaciones de software, descargar librer\u00edas\/m\u00f3dulos, entre otros, en el momento que esta se arranca<\/li>\n<li aria-level=\"1\"><b><i>Mount<\/i><\/b><b>:<\/b>\u00a0Para evitar tener que cargar internamente los datos que se requieren para el proceso, Databricks posibilita la sincronizaci\u00f3n con fuentes externas, como S3, para facilitar la interacci\u00f3n con los distintos archivos (simula que estos se encuentran en local haciendo as\u00ed m\u00e1s simple los\u00a0<i>relatives paths<\/i>) pero realmente estos se encuentran almacenados en la fuente de almacenamiento externa correspondiente.<\/li>\n<li aria-level=\"1\"><b><i>Personal Access (PAT) Token:\u00a0<\/i><\/b>token para la autenticaci\u00f3n personal que sustituye la autenticaci\u00f3n por usuario y contrase\u00f1a.<\/li>\n<li aria-level=\"1\"><b><i>Raw:\u00a0<\/i><\/b>datos ingestados sin procesar.<\/li>\n<li aria-level=\"1\"><b><i>Root Bucket:<\/i><\/b>\u00a0directorio de ra\u00edz para el\u00a0<i>workspace (DBFS root)<\/i>. Utilizado para alojar\u00a0<i>cluster logs,\u00a0<\/i>revisiones de\u00a0<i>notebooks<\/i>\u00a0y librer\u00edas. Ver primer art\u00edculo para m\u00e1s informaci\u00f3n.<\/li>\n<li aria-level=\"1\"><b><i>Secret Scope:\u00a0<\/i><\/b>entorno en el que almacenar informaci\u00f3n sensible mediante pares clave valor (nombre \u2013 secreto)<\/li>\n<li aria-level=\"1\"><b><i>Trusted:\u00a0<\/i><\/b>datos preparados para su visualizaci\u00f3n y estudio por parte de los diferentes grupos de inter\u00e9s.<\/li>\n<li aria-level=\"1\"><b><i>Workflows:\u00a0<\/i><\/b>secuencia de tareas.<\/li>\n<li>\u00a0<\/li>\n<\/ul>\n<h2>Seguridad de la informaci\u00f3n<br \/>\n<\/h2>\n<p>Visita Data security and encryption en est\u00e9\u00a0<a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/index.html\" target=\"_blank\" rel=\"noopener\">enlace<\/a><\/p>\n<p>Databricks presenta configuraciones de seguridad de datos para proteger la informaci\u00f3n que est\u00e1 en tr\u00e1nsito o en reposo. En la documentaci\u00f3n se ofrece una descripci\u00f3n general de las caracter\u00edsticas de encriptaci\u00f3n disponibles. Dichas caracter\u00edsticas incluyen claves gestionadas por el cliente para encriptaci\u00f3n, encriptaci\u00f3n del tr\u00e1fico entre nodos de cl\u00faster, encriptaci\u00f3n de consultas y resultados, y encriptaci\u00f3n de buckets S3 en reposo.<\/p>\n<p>Hay que destacar que dentro del soporte para claves gestionadas por el cliente, que permite la protecci\u00f3n y control de acceso a datos en el\u00a0<b><i>control plane<\/i><\/b>\u00a0de Databricks, como archivos fuente de notebooks, resultados de notebooks, secretos, consultas SQL y tokens de acceso personal. Tambi\u00e9n se puede configurar claves para encriptar datos en el bucket S3 ra\u00edz y vol\u00famenes EBS del cl\u00faster.<\/p>\n<p>Otra posibilidad que ofrece Databricks es la de utilizar claves de AWS KMS para encriptar consultas de SQL y su historial almacenado en el\u00a0<b><i>control plane<\/i><\/b>.\u00a0<\/p>\n<p>Por \u00faltimo, tambi\u00e9n facilita la encriptaci\u00f3n del tr\u00e1fico entre nodos de cl\u00faster y la administraci\u00f3n de configuraciones de seguridad del workspace por parte de los administradores.\u00a0<\/p>\n<p>En este articulo hablaremos sobre dos de las opciones: customer-managed keys y el encriptado del trafico entre nodos workers del cl\u00faster<\/p>\n<h4>Customer-managed keys<\/h4>\n<p>Visita Customer-managed keys en est\u00e9\u00a0<a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/customer-managed-keys.html\" target=\"_blank\" rel=\"noopener\">enlace<\/a><\/p>\n<p>Los administradores de cuentas de Databricks pueden configurar claves gestionadas para la encriptaci\u00f3n. Se destacan dos casos de uso para agregar una clave gestionada por el cliente: datos de servicios gestionados en el\u00a0<b><i>control plane\u00a0<\/i><\/b>de Databricks (como notebooks, secretos y consultas SQL) y almacenamiento del workspaces (buckets S3 ra\u00edz y vol\u00famenes EBS).<\/p>\n<p>Hay que destacar que las claves gestionadas para vol\u00famenes EBS no se aplican a recursos de c\u00f3mputo serverless, ya que estos discos son ef\u00edmeros y est\u00e1n vinculados al ciclo de vida de la carga de trabajo serverless. En la documentaci\u00f3n de Databricks existen comparaciones de los casos de uso de claves gestionadas por el cliente y se menciona que esta funci\u00f3n est\u00e1 disponible en la subcripci\u00f3n Enterprise.<\/p>\n<p>Respecto al concepto de configuraciones de claves de encriptaci\u00f3n, estos son objetos a nivel de cuenta que hacen referencia a las claves en la nube del usuario. Los administradores de cuentas pueden crear estas configuraciones en la consola de la cuenta y asociarlas con uno o m\u00e1s workspaces. El proceso de configuraci\u00f3n implica la creaci\u00f3n o selecci\u00f3n de una clave sim\u00e9trica en AWS KMS y la posterior edici\u00f3n de la pol\u00edtica de la clave para permitir a Databricks realizar operaciones de encriptaci\u00f3n y desencriptaci\u00f3n. Se pueden consultar en la documentaci\u00f3n las instrucciones detalladas junto con ejemplos de pol\u00edticas JSON necesarias para ambas configuraciones de uso (servicios gestionados y almacenamiento workspaces).<\/p>\n<p>Por \u00faltimo, existe la posibilidad de agregar una pol\u00edtica de acceso a un rol IAM de cuenta cruzada (cross-account) en AWS, en caso de que la clave KMS est\u00e9 en una cuenta diferente.\u00a0<\/p>\n<h4>Encriptaci\u00f3n en tr\u00e1nsito<\/h4>\n<p>Para esta parte, es muy importante destacar la importancia del script de inicio (init script)\u00a0<\/p>\n<p>Encriptaci\u00f3n en tr\u00e1nsito<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html\" target=\"_blank\" rel=\"noopener\">Encrypt traffic between cluster worker nodes<\/a><\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html#example-init-script\" target=\"_blank\" rel=\"noopener\">Example init script<\/a><\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/init-scripts\/cluster-scoped.html\">Use cluster-scoped init scripts<\/a><\/li>\n<\/ul>\n<p>en Databricks, el cual, entre otras cosas, sirve para configurar la encriptaci\u00f3n entre nodos de workers en un cl\u00faster de Spark. Este script de inicio permite obtener un secreto de encriptaci\u00f3n compartido a partir del scope de claves almacenado en DBFS. Si se rota el secreto actualizando el archivo del almac\u00e9n de claves en DBFS, se debe reiniciar todos los cl\u00fasteres en ejecuci\u00f3n para evitar problemas de autenticaci\u00f3n entre los workers de Spark y el driver. Se\u00f1alar que, dado que el secreto compartido el cual se almacena en DBFS, cualquier usuario con acceso a DBFS puede recuperar el secreto mediante un notebook.<\/p>\n<p>Se pueden utilizar instancias de AWS espec\u00edficas que cifran autom\u00e1ticamente los datos entre los nodos de trabajadores sin necesidad de configuraci\u00f3n adicional, pero utilizar el init-script proporciona un nivel a\u00f1adido de seguridad para los datos en tr\u00e1nsito o un control total sobre el tipo de encriptaci\u00f3n que se quiere aplicar.<\/p>\n<p>El script ser\u00e1 el encargado de obtener el secreto del almac\u00e9n de claves y su contrase\u00f1a, as\u00ed como configurar los par\u00e1metros necesarios de Spark para la encriptaci\u00f3n. Lanzado como Bash, realizar\u00e1 estas tareas y en caso de ser necesario, realizar\u00e1 una espera hasta que el archivo de almac\u00e9n de claves est\u00e9 disponible en DBFS y la derivaci\u00f3n del secreto de encriptaci\u00f3n compartido a partir del hash del archivo de almac\u00e9n de claves. Una vez completada la inicializaci\u00f3n de los nodos del driver y de los workers, todo el tr\u00e1fico entre estos nodos se cifrar\u00e1 utilizando el archivo de almac\u00e9n de claves.<\/p>\n<p>Este tipo de caracter\u00edsticas est\u00e1n dentro del plan Enterprise<\/p>\n<h2>Persistencia y metastores<br \/>\n<\/h2>\n<p>Databricks admite dos tipos principales de almacenamiento persistente: DBFS (Databricks File System) y S3 (Simple Storage Service de AWS).<\/p>\n<p><b>DBFS<\/b><\/p>\n<p>DBFS es un sistema de archivos distribuido integrado directamente con Databricks, almacenando datos en el almacenamiento local del cl\u00faster y de los workspaces. Proporciona una interfaz de archivo similar a HDFS est\u00e1ndar y facilita la colaboraci\u00f3n al ofrecer un lugar centralizado para almacenar y acceder a datos.<\/p>\n<p><b>S3<\/b><\/p>\n<p>Por otro lado, Databricks tambi\u00e9n puede conectarse directamente a datos almacenados en Amazon S3. Los datos en S3 son independientes de los cl\u00fasteres y de los workspaces y pueden ser accedidos por varios cl\u00fasteres y usuarios. S3 destaca por su escalabilidad, durabilidad y la capacidad de separar almacenamiento y c\u00f3mputo, lo que facilita el acceso a datos incluso desde m\u00faltiples entornos.<\/p>\n<p>En cuanto a los metastores, Databricks en AWS admite varios tipos, incluyendo:<\/p>\n<p><b>Metastore de Hive<\/b><\/p>\n<p>Databricks puede integrarse con el metastore de Hive, permitiendo a los usuarios utilizar tablas y esquemas definidos en Hive.<\/p>\n<p><b>Metastore\u00a0Glue en\u00a0Data Plane<\/b><\/p>\n<p>Databricks tambi\u00e9n tiene la posibilidad de alojar el metastore en el propio\u00a0<b><i>compute plane<\/i><\/b>\u00a0con Glue.<\/p>\n<p>Estos metastores permiten a los usuarios gestionar y consultar metadatos de tablas, facilitando la gesti\u00f3n de esquemas y la integraci\u00f3n con otros servicios de datos. La elecci\u00f3n del metastore depender\u00e1 de los requisitos espec\u00edficos del flujo de trabajo y las preferencias de gesti\u00f3n de metadatos en el entorno de Databricks en AWS.<\/p>\n<p><b>Unity Catalog\u00a0<\/b><\/p>\n<p>Sin duda alguna, una nueva funcionalidad de Databricks que permite unificar estos metastores previos y amplifica las distintas opciones y herramientas que ofrece cada uno de ellos es el\u00a0<a href=\"https:\/\/docs.databricks.com\/en\/data-governance\/unity-catalog\/index.html\" target=\"_blank\" rel=\"noopener\"><b>Unity Catalog<\/b><\/a><\/p>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"310\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image1-1.png\" alt=\"\" srcset=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image1-1.png 444w, https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image1-1-300x209.png 300w\" sizes=\"(max-width: 444px) 100vw, 444px\" \/><figcaption><\/figcaption><\/figure>\n<p>Unity Catalog proporciona capacidades centralizadas de control de acceso, auditor\u00eda, linaje y descubrimiento de datos.<\/p>\n<p><b>Caracter\u00edsticas clave de Unity Catalog<\/b><\/p>\n<ul>\n<li aria-level=\"1\">Administra pol\u00edticas de acceso a datos en un solo lugar que se aplican a todos los workspaces que se definan.<\/li>\n<li aria-level=\"1\">Basado en ANSI SQL, permite a los administradores otorgar estos permisos mediante una sintaxis SQL.<\/li>\n<li aria-level=\"1\">Captura autom\u00e1ticamente registros de auditor\u00eda a nivel de usuario.<\/li>\n<li aria-level=\"1\">Permite etiquetar tablas y esquemas, proporcionando una interfaz de b\u00fasqueda eficaz para buscar informaci\u00f3n.<\/li>\n<\/ul>\n<p>Databricks recomienda configurar todo el acceso al almacenamiento de objetos en la nube mediante Unity Catalog para gestionar relaciones entre datos en Databricks y almacenamiento en la nube.<\/p>\n<h3><strong>Modelo de objetos de Unity Catalog<\/strong><\/h3>\n<ul>\n<li aria-level=\"1\">Metastore: Contenedor de metadatos de nivel superior, expone un espacio de nombres de tres niveles (cat\u00e1logo.esquema.tabla).<\/li>\n<li aria-level=\"1\">Cat\u00e1logo: Organiza activos de datos, primera capa en la jerarqu\u00eda.<\/li>\n<li aria-level=\"1\">Esquema: Segunda capa, organiza tablas y vistas.<\/li>\n<li aria-level=\"1\">Tablas, vistas y vol\u00famenes: Niveles m\u00e1s bajos, con vol\u00famenes que proporcionan acceso no tabular a datos.<\/li>\n<li aria-level=\"1\">Modelos: No son activos de datos, registran modelos de aprendizaje autom\u00e1tico.<\/li>\n<\/ul>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"442\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image2-1.png\" alt=\"\" srcset=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image2-1.png 952w, https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image2-1-300x139.png 300w, https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/image2-1-768x357.png 768w\" sizes=\"(max-width: 952px) 100vw, 952px\" \/><figcaption><\/figcaption><\/figure>\n<h2>Billing<\/h2>\n<p>A continuaci\u00f3n, se detalla la funci\u00f3n de Databricks en AWS que permite la entrega y acceso a registros de uso facturables. Los administradores de cuenta pueden configurar la entrega diaria de registros CSV a un bucket S3 de AWS. Cada archivo CSV proporciona datos hist\u00f3ricos sobre el uso de cl\u00fasteres en Databricks, clasific\u00e1ndolos por criterios como ID de cl\u00faster, SKU de facturaci\u00f3n, creador del cl\u00faster y etiquetas. La entrega incluye registros tanto para workspaces en ejecuci\u00f3n como para aquellos cancelados, garantizando la representaci\u00f3n adecuada del \u00faltimo d\u00eda de dicho workspace (debe haber estado operativo al menos 24 h).<\/p>\n<p>La configuraci\u00f3n implica la creaci\u00f3n de un bucket S3 y un rol IAM en AWS, junto con la llamada a la API de Databricks para establecer objetos de configuraci\u00f3n de almacenamiento y credenciales. La opci\u00f3n de soporte de cuentas cruzadas permite la entrega a cuentas AWS diferentes mediante una pol\u00edtica de bucket S3. Los archivos CSV se encuentran en &lt;bucket-name&gt;\/&lt;prefix&gt;\/billable-usage\/csv\/, es recomendable revisar las bestpractices de seguridad de S3.<\/p>\n<p>La API de la cuenta permite configuraciones compartidas para todos los workspaces o configuraciones separadas para cada espacio o grupos. La entrega de estos CSV permite que los owners de cuentas descarguen directamente los registros. La propiedad del objeto S3 se autoconfigura como \u00abBucket owner preferred\u00bb para admitir la propiedad de los objetos reci\u00e9n creados.<\/p>\n<p>Se destaca un l\u00edmite en la cantidad de configuraciones de entrega de registros y se requiere ser administrador de cuenta, adem\u00e1s de proporcionar el ID de cuenta. Especial cuidado con las dificultades de acceso si se configura la propiedad del objeto S3 como \u00abObject writer\u00bb en lugar de \u00abBucket owner preferred\u00bb.<\/p>\n<table id=\"eael-data-table-1999682\">\n<thead>\n<tr>\n<th id=\"\" colspan=\"Fields\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tCampos param\u00e9tricos de configuraci\u00f3n<\/th>\n<th id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDescripci\u00f3n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tworkspaceId\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tWorkspace Id\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\ttimestamp\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tEstablished frequency (hourly, daily,&#8230;)\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterId\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tCluster Id\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterName\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tName assigned to the Cluster\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterNodeType\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tType of node assigned\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterOwnerUserId\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tCluster creator user id\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterCustomTags\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tCustomizable cluster information labels\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tsku\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tPackage assigned by Databricks in relation to the cluster characteristics.\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tdbus\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tDBUs consumption per machine hour\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tmachineHours\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tCluster deployment machine hours\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tclusterOwnerUserName\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tUsername of the cluster creator\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\ttags\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<td colspan=\"\" rowspan=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\tCustomizable cluster information labels\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Referencias<\/h2>\n<ol>\n<li><a href=\"https:\/\/beta.bluetab.net\/databricks-sobre-aws-una-perspectiva-de-arquitectura-parte-1\/\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/beta.bluetab.net\/databricks-sobre-aws-una-perspectiva-de-arquitectura-parte-1\/&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw34BiOAyTAmAoC7b1qhbueZ\">https:\/\/beta.bluetab.net\/<wbr \/>databricks-sobre-aws-una-<wbr \/>perspectiva-de-arquitectura-<wbr \/>parte-1\/<\/a>\u00a0<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/index.html\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/security\/keys\/index.html&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw0FEhf6TZvgwXeqyphQiclx\">https:\/\/docs.databricks.com\/<wbr \/>en\/security\/keys\/index.html<\/a>\u00a0| 2024-02-06<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/customer-managed-keys.html\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/security\/keys\/customer-managed-keys.html&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw0FWWmeWyHQyb_trU7S58nz\">https:\/\/docs.databricks.com\/<wbr \/>en\/security\/keys\/customer-<wbr \/>managed-keys.html<\/a>\u00a0|\u00a0 2024-02-06<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw1X0pBGm9KTTxLxXayEVoPy\">https:\/\/docs.databricks.com\/<wbr \/>en\/security\/keys\/encrypt-otw.<wbr \/>html<\/a>\u00a0| 2024-02-24<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html#example-init-script\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/security\/keys\/encrypt-otw.html%23example-init-script&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw2UMBYCHMkPL40tjODrSels\">https:\/\/docs.databricks.com\/<wbr \/>en\/security\/keys\/encrypt-otw.<wbr \/>html#example-init-script<\/a>\u00a0|\u00a0 2024-02-24<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/init-scripts\/cluster-scoped.html\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/init-scripts\/cluster-scoped.html&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw0EVewLXEyV2mrkzO7kkwng\">https:\/\/docs.databricks.com\/<wbr \/>en\/init-scripts\/cluster-<wbr \/>scoped.html<\/a>\u00a0|\u00a0 2023-12-05<\/li>\n<li><a href=\"https:\/\/docs.databricks.com\/en\/data-governance\/unity-catalog\/index.html\" target=\"_blank\" rel=\"noopener\" data-saferedirecturl=\"https:\/\/www.google.com\/url?q=https:\/\/docs.databricks.com\/en\/data-governance\/unity-catalog\/index.html&amp;source=gmail&amp;ust=1709202927740000&amp;usg=AOvVaw1iWyRxjGQvYWsScke9k94S\">https:\/\/docs.databricks.com\/<wbr \/>en\/data-governance\/unity-<wbr \/>catalog\/index.html<\/a>\u00a0| 2024-02-26<\/li>\n<\/ol>\n<p>\u00a0\t\t<\/p>\n<h4>\n\t\t\t\tNavegaci\u00f3n\t\t\t<\/h4>\n<h5>\u00bfQuieres saber m\u00e1s de lo que ofrecemos y ver otros casos de \u00e9xito?<br \/>\n<\/h5>\n<p>\t\t\t<a href=\"\/\"><br \/>\n\t\t\t\t\t\t\t\t\tDISCOVER BLUETAB<br \/>\n\t\t\t\t\t<\/a><\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/ruben-villa-munoz\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/1646762031857-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/ruben-villa-munoz\/\" target=\"_blank\" rel=\"noopener\">Rub\u00e9n Villa<\/a><\/h4>\n<p>Big Data &#038; Cloud Architect\n<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/alfonsojerezizquierdo\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/alfonso-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/alfonsojerezizquierdo\/\" target=\"_blank\" rel=\"noopener\">Alfonso Jerez<\/a><\/h4>\n<p>Analytics Engineer | GCP | AWS | Python Dev | Azure | Databricks | Spark<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/jongaraialdegallego\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/1672931909474-150x150.jpeg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/jongaraialdegallego\/\" target=\"_blank\" rel=\"noopener\">Jon Garaialde<\/a><\/h4>\n<p>Cloud Data Solutions Engineer\/Architect<\/p>\n<figure><a href=\"https:\/\/www.linkedin.com\/in\/albertojaenrevuelta\/\" target=\"_blank\" tabindex=\"-1\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2022\/01\/1607606292897-150x150.jpg\" alt=\"\" \/><\/a><\/figure>\n<h4><a href=\"https:\/\/www.linkedin.com\/in\/albertojaenrevuelta\/\" target=\"_blank\" rel=\"noopener\">Alberto Ja\u00e9n<\/a><\/h4>\n<p>Cloud Engineer | 3x AWS Certified | 2x HashiCorp Certified | GitHub: ajaen4\n<\/p>\n<p>\t\t<b>SOLUCIONES, <\/b>SOMOS EXPERTOS<br \/>\n\t\t\t\t\t<a href=\"\/soluciones\/data-strategy\/\"><\/p>\n<h5>\n\t\t\t\t\t\tDATA STRATEGY\t\t\t\t\t<\/h5>\n<p>\t\t\t\t\t\t<\/a><br \/>\n\t\t\t\t\t<a href=\"\/soluciones\/data-fabric\/\"><\/p>\n<h5>\n\t\t\t\t\t\tDATA FABRIC\t\t\t\t\t<\/h5>\n<p>\t\t\t\t\t\t<\/a><br \/>\n\t\t\t\t\t<a href=\"\/soluciones\/augmented-analytics\/\"><\/p>\n<h5>\n\t\t\t\t\t\tAUGMENTED ANALYTICS\t\t\t\t\t<\/h5>\n<p>\t\t\t\t\t\t<\/a><br \/>\n\t\tTe puede interesar<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rub\u00e9n Villa Big Data &#038; Cloud Architect Jon Garaialde Cloud Data Solutions Engineer\/Architect Alfonso Jerez Analytics Engineer | GCP | AWS | Python Dev | Azure | Databricks | Spark Alberto Ja\u00e9n Cloud Engineer | 3x AWS Certified | 2x HashiCorp Certified | GitHub: ajaen4 Este art\u00edculo es el segundo de una serie de dos [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":20843,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,29,30],"tags":[],"class_list":["post-17818","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-es","category-practices-en","category-tech-en"],"acf":[],"jetpack_featured_media_url":"https:\/\/beta.bluetab.net\/wp-content\/uploads\/2024\/03\/2.png","_links":{"self":[{"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/posts\/17818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/comments?post=17818"}],"version-history":[{"count":0,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/posts\/17818\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/media\/20843"}],"wp:attachment":[{"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/media?parent=17818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/categories?post=17818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.bluetab.net\/en\/wp-json\/wp\/v2\/tags?post=17818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}