Configuration - Datachain Core
Cette page présente le paramétrage des images du module Datachain Core.
Les images sont paramétrables via les fichiers *.env de docker ou des variables d’environnement.
Les images s’exécutent sans privilèges root pour l’application et sont compatibles avec OpenShift : voir Exécution sans privilèges (OpenShift).
Vue d’ensemble
Datachain Core est livré sous la forme de plusieurs images, chacune portant un service.
| Service | Image | Ports | Rôle |
|---|---|---|---|
web |
dc/web_ui |
8080 (application), 9080 (monitoring) |
Serveur Web : met à disposition l’application Datachain et relaie les appels vers le backend |
backend |
dc/backend |
8089 (API), 9089 (monitoring) |
Modules métiers et API de l’application |
spark |
dc/spark |
8090 (API), 9090 (monitoring), 4040 (interface du driver Spark) |
Module de calcul (driver Spark embarqué), contexte de calcul distribué |
pg-migration |
dc/pg_migration |
Aucun |
Exécution des patchs de mise à jour de la base de données PostgreSQL (une seule exécution) |
Les échanges entre les services sont les suivants :
-
les utilisateurs accèdent à l’application via le service web, généralement derrière un reverse proxy ;
-
le service web relaie les appels vers le backend ;
-
le backend délègue les calculs sur les données à un ou plusieurs contextes Spark ;
-
le service de migration met à jour la base PostgreSQL avant que le backend ne l’utilise.
Datachain Core utilise par ailleurs :
-
une base PostgreSQL, portée par l’image
dc/dc_pg; -
un serveur Valkey (compatible Redis), pour le cache et les files d’attente.
Ces composants sont décrits dans Gestion des données. Les modules Console, Marketplace, Dc-Maestro et le SSO sont décrits dans leurs pages dédiées (voir Configuration).
Module Web - Image dc/web_ui
Description de l’image
Description |
Contient le serveur Web qui mets à dispositions les pages HTML de l’application DataChain |
|||||||||
|---|---|---|---|---|---|---|---|---|---|---|
Taille |
~175Mo |
|||||||||
Briques techniques |
Server HTTP Nginx (image Alpine sans privilèges) |
|||||||||
Utilisateur |
|
|||||||||
Volumes |
Pas de volumes |
|||||||||
Logs |
Logs Nginx (Access Log) sortie standard docker |
|||||||||
Urls |
|
L’image écoute sur le port 8080 (et non plus 80) : le reverse proxy, le mappage de ports ou le service qui y accèdent doivent viser ce port. Le port de monitoring est passé de 8080 à 9080.
|
Variables d’environnement
| Variable | Valeur par défaut | Description |
|---|---|---|
PROXY_PASS_BACKEND |
dc-backend:8089 |
Url interne du backend : cette variable ne devrait pas être modifiée, hormis en cas de changement de nom dns du backend, d’un point de vue réseau docker |
PUBLIC_IP_PORT_443 |
localhost:443 |
Utilisée uniquement dans le cas de déploiement sans reverse proxy, ce qui est très rarement le cas dans une infrastructure de production |
DOC_VERSION |
Correspond à la version du serveur - ne devrait pas être modifiée, sauf cas particulier communiqué par Adobis |
|
DOC_SERVER_URL |
Url public du serveur de documentation Adobis |
|
CONTENT_SECURITY_POLICY |
default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval';script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline';font-src * data: blob: 'unsafe-inline';frame-ancestors * data: blob:; |
Configuration de l’entête de sécurité CSP http |
Module Backend - Image dc/backend
Description de l’image
Description |
Contient les modules métiers et API de l’application |
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Taille |
~570Mo |
||||||||||
Briques techniques |
Application Java/Spring Boot/Jetty |
||||||||||
Utilisateur |
Le conteneur démarre en |
||||||||||
Volumes |
|
||||||||||
Logs |
Plusieurs types de logs, situées sous /logs/datachain/backend
|
||||||||||
Urls |
|
Variables d’environnement
| Variable | Valeur par défaut | Description |
|---|---|---|
DC_PG_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger spring.datasource.password |
|
DC_PG_EXPOSE_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger spring.expose-datasource.password |
|
DC_PG_JOB_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger spring.job-datasource.password. Si non surchargé, mais qu’il y a la valeur DC_PG_PASSWORD_FILE, alors DC_PG_PASSWORD_FILE sera utilisé |
|
SPARK_SECURITY_USER_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger dc.app.api.spark.security.user.password (identique sur backend et spark) |
|
KEYCLOAK_INTERNAL_CLIENT_SECRET_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger dc.keycloak.internal-client-secret |
Fichier de configuration
################################################
## DATACHAIN Backend CONFIGURATION FILE ##
################################################
# DataChain Backend configuration file example.
# Exemple de fichier de configuration du backend DataChain.
######################################### Data Properties ##########################################
####################################################
## Main Database Configuration ##
## Configuration de la base de données principale ##
####################################################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
### https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# database ip or dns address. Default value 'localhost
# Adresse ip ou dns de la base de données. Valeur par défaut 'localhost'
dc.app.db.host=localhost
# JDBC URL of the database.
# Chaîne de connexion JDBC.
# By default, the database name is 'adobis' and the port is '5432.
# Par défaut, le nom de la base de données est "adobis" et le port est "5432".
spring.datasource.url=jdbc:postgresql://${dc.app.db.host}:5432/adobis?prepareThreshold=0&preparedStatementCacheQueries=0
# Login username of the database. Default value 'postgres'
# Nom d'utilisateur de la base de données.
spring.datasource.username=postgres
# Login password of the database.
# Mot de passe de la base de données.
spring.datasource.password=changeIt
## pool configuration ##
## For detailed pool configuration, see :
## Pour la configuration ## Pour la configuration du pool détaillé, voir : détaillés, voir :
### https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
# This property controls the maximum number of milliseconds that a client (that's you) will wait for a connection from the pool.
# Cette propriété contrôle le nombre maximum de millisecondes pendant lesquelles un client (c'est-à-dire vous) attendra une connexion depuis le pool.
spring.datasource.hikari.connectionTimeout=30000
# This property controls the maximum size that the pool is allowed to reach.
# Cette propriété contrôle la taille maximale que le pool est autorisé à atteindre.
spring.datasource.hikari.maximumPoolSize=20
# This property controls the minimum number of idle connections that HikariCP tries to maintain in the pool.
# Cette propriété contrôle le nombre minimum de connexions inactives que HikariCP essaie de maintenir dans le pool.
spring.datasource.hikari.minimumIdle=20
# This property controls the maximum lifetime of a connection in the pool.
# Cette propriété contrôle la durée de vie maximale d'une connexion dans le pool.
spring.datasource.hikari.maxLifetime=600000
# This property controls how frequently HikariCP will attempt to keep a connection alive, in order to prevent it from being timed out by the database or network infrastructure.
# Cette propriété contrôle la fréquence à laquelle HikariCP tentera de maintenir une connexion active, afin d'éviter qu'elle ne soit interrompue par la base de données ou l'infrastructure réseau.
spring.datasource.hikari.keepaliveTime=60000
# This property controls the pool name.
# Cette propriété contrôle le nom du pool.
spring.datasource.hikari.poolName=MainDatasourcePool
# Whether to enable logging of SQL statements.
# Paramètre gérant l’affichage du SQL de la dataSource JDBC dans les logs.
spring.jpa.show-sql=false
# Register OpenEntityManagerInViewInterceptor. Binds a JPA EntityManager to the thread for the entire processing of the request.
# Enregistrez OpenEntityManagerInViewInterceptor. Lie un EntityManager JPA au thread pour l'ensemble du traitement de la demande.
spring.jpa.open-in-view=false
## Hibernate configuration ##
## For detailed Hibernate configuration, see :
## Pour la configuration ## Pour la configuration détaillés, voir : détaillés, voir :
### https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html
# Defines the query timeout, in milliseconds.
# Définit le délai d'expiration de la requête, en millisecondes.
spring.jpa.properties.javax.persistence.query.timeout=30000
# If enabled, Hibernate will collect statistics useful for performance tuning.
# Si activé, Hibernate collectera des statistiques utiles pour le réglage des performances.
spring.jpa.properties.hibernate.generate_statistics=false
# Disable/Enable the second level cache
# Désactiver/Activer le cache de second niveau
spring.jpa.properties.hibernate.cache.use_second_level_cache=false
# Controls the maximum number of statements Hibernate will batch together before asking the driver to execute the batch. Zero or a negative number disables this feature.
# Contrôle le nombre maximum d'instructions qu'Hibernate regroupera avant de demander au pilote d'exécuter le lot. Zéro ou un nombre négatif désactive cette fonction.
spring.jpa.properties.hibernate.jdbc.batch_size=2000
# Forces Hibernate to order inserts to allow for more batching to be used.
# Force Hibernate à commander des insertions pour permettre l'utilisation de plus de lots.
spring.jpa.properties.hibernate.order_inserts=true
# Forces Hibernate to order SQL updates by the entity type and the primary key value of the items being updated.
#Force Hibernate à trier les mises à jour SQL par le type d'entité et la valeur de la clé primaire des éléments mis à jour.
spring.jpa.properties.hibernate.order_updates=true
# Defines the Hibernate-specific FlushMode to use.
# Définit le FlushMode spécifique à Hibernate à utiliser
spring.jpa.properties.org.hibernate.flushMode=COMMIT
# Should versioned entities be included in batching?
# Les entités versionnées doivent-elles être incluses dans le traitement par lot ?
spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true
# Should we not use contextual LOB creation ?
# Ne devrions-nous pas utiliser la création contextuelle de LOB ?
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
#########################################################################
###################################
## Expose Database Configuration ##
###################################
### See Main Database Configuration.
### Configuration de la base de données principale.
# Standard configuration #
spring.expose-datasource.dbtype=pgSql
spring.expose-datasource.host=localhost
spring.expose-datasource.port=5432
spring.expose-datasource.database=expose
spring.expose-datasource.schema=public
spring.expose-datasource.username=postgres
spring.expose-datasource.password=changeIt
spring.expose-datasource.url=jdbc:postgresql://${spring.expose-datasource.host}:${spring.expose-datasource.port}/${spring.expose-datasource.database}
### See Main Database Configuration - Pool configuration.
### Configuration de la base de données principale - Pool configuration.
# Pool configuration #
spring.expose-datasource.hikari.connectionTimeout=30000
spring.expose-datasource.hikari.maximumPoolSize=20
spring.expose-datasource.hikari.minimumIdle=20
spring.expose-datasource.hikari.maxLifetime=600000
spring.expose-datasource.hikari.keepaliveTime=60000
spring.expose-datasource.hikari.poolName=ExposeDatasourcePool
###################################
## Job Database Configuration ##
###################################
### See Main Database Configuration.
### Configuration de la base de données principale.
# Standard configuration #
spring.job-datasource.host=${dc.app.db.host}
spring.job-datasource.port=5432
spring.job-datasource.database=adobis
spring.job-datasource.schema=job
spring.job-datasource.username=${spring.datasource.username}
spring.job-datasource.password=${spring.datasource.password}
spring.job-datasource.url=jdbc:postgresql://${spring.job-datasource.host}:${spring.job-datasource.port}/${spring.job-datasource.database}
### See Main Database Configuration - Pool configuration.
### Configuration de la base de données principale - Pool configuration.
# Pool configuration #
spring.job-datasource.hikari.connectionTimeout=30000
spring.job-datasource.hikari.maximumPoolSize=10
spring.job-datasource.hikari.minimumIdle=10
spring.job-datasource.hikari.maxLifetime=600000
spring.job-datasource.hikari.keepaliveTime=60000
spring.job-datasource.hikari.poolName=JobDatasourcePool
######################################### Server Properties ########################################
###############################
## HTTP server Configuration ##
###############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
### https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# Server HTTP port.
# Port HTTP du serveur.
server.port=8089
## see https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-graceful-shutdown
server.shutdown=graceful
# Session tracking modes. par cookie.
# Modes de suivi de session. par cookie.
server.servlet.session.tracking-modes=COOKIE
server.servlet.session.cookie.name=dcCoreSid
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.same-site=lax
# Secure cookie. SHould be true when https, false if http.
# Cookie securisé : devrait être positionné à true pour site sécurisé, false si http.
server.servlet.session.cookie.secure=true
# Session timeout: in seconds (s) default unit, in minutes (m), in hours (h).
# Gestion du timeout de session en heure (h) ou minutes (m) ou secondes (s) unité par défaut.
server.servlet.session.timeout=8h
# max-age of cookie : should be same as session timeout.
# durée du cookie de session : devrait être à la même valeur que la session
server.servlet.session.cookie.max-age=${server.servlet.session.timeout}
# Context path of the application.
# Chemin de contexte de l'application.
server.servlet.context-path=/
# Whether response compression is enabled.
# Indique si la compression des réponses est activée.
server.compression.enabled=true
# Comma-separated list of MIME types that should be compressed.
# Liste séparée par des virgules des types MIME qui doivent être compressés.
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,text/csv,application/octet-stream
# Minimum "Content-Length" value that is required for compression to be performed.
# Valeur "Content-Length" minimale requise pour que la compression soit effectuée.
server.compression.min-response-size=2KB
# Time that the connection can be idle before it is closed.
# Temps pendant lequel la connexion peut être inactive avant d'être fermée.
server.jetty.connection-idle-timeout=10000s
server.jetty.accesslog.enabled=true
server.jetty.accesslog.custom-format=%{client}a - %u %t "%r" %s %O (%{ms}T ms)
server.jetty.accesslog.filename=${DC_ROOT_LOG_DIRECTORY:/tmp/log}${DC_LOG_DIRECTORY:/datachain/dc_core_backend}/access_yyyy_MM_dd.log
server.jetty.accesslog.file-date-format=yyyy_MM_dd
server.jetty.accesslog.retention-period=30
### Web properties ###
# Max file size.
# Taille maximale du fichier.
spring.servlet.multipart.max-file-size=10000MB
# Max request size.
# Taille maximale de la requête.
spring.servlet.multipart.max-request-size=10000MB
# Maximum size of data buffers used in file upload..
# Taille maximale des tampons de données utilisés dans le téléchargement de fichiers.
dc.app.http.upload.chunk-size=32768
####################################### Actuator properties ########################################
##############################
## Monitoring avec Actuator ##
##############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
## Spring actuator configuration.
## Configuration de Spring actuator.
management.endpoint.shutdown.enabled=false
management.server.port=9089
management.endpoints.web.base-path=/actuator
management.server.address=127.0.0.1
management.endpoints.web.exposure.include=health,prometheus
management.metrics.export.prometheus.enabled=false
management.health.ldap.enabled=false
######################################### Core properties ##########################################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# Expose management beans to the JMX domain.
# Exposer les beans de gestion au domaine JMX
spring.jmx.enabled=false
######################################### Log properties ###########################################
###############################
## Log & Trace Configuration ##
###############################
# Trace
# data profiling activation switch (calculation and log of service execution time).
# Interrupteur d’activation du profilage des données (calcul et log du temps d’exécution des services).
dc.app.log.aspect.enable=false
# Http traceability activation switch
# Interrupteur d’activation de la traçabilité http
logbook.filter.enabled=false
# Http traceability level
# Niveau de traçabilité http
logbook.write.level=INFO
# Exclude certain URLs
# Exclure certaines URL
logbook.exclude=/oauth/token/**
####################################### Security properties ########################################
############################
## keycloak configuration ##
############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://www.keycloak.org/docs/20.0.3/securing_apps/#_spring_boot_adapter
# Client inactivity max delay in minutes
# Délai maximal d'inactivité du client en minutes
dc.app.backend.security.inactivity-max-delay=2400
########################################## Spark properties ########################################
#########################
## Spark configuration ##
#########################
# Spark
# The user/password used by backend to communicate with DATACHAIN SPARK
# Le nom d'utilisateur/mot de passe utilisé par le backend pour communiquer avec DATACHAIN SPARK
dc.app.api.spark.security.user.name=backend
dc.app.api.spark.security.user.password=70171933-e656-4183-9955-bfd0354d2250
#Spark rest request timeout
# The connection timeout (in milliseconds) for Spark REST requests.
# Le temps d'attente de connexion (en millisecondes) pour les requêtes Spark REST.
dc.api.spark.request-connection-timeout=10000
#The reading timeout (in milliseconds) for Spark REST requests.
# Le temps d'attente de lecture (en millisecondes) pour les requêtes Spark REST.
dc.api.spark.request-reading-timeout=60000
####################################### Cache properties ###########################################
########################
## Cache Configuration ##
########################
# Path to ehcache the configuration file
# Chemin pour mettre en cache le fichier de configuration
dc.app.ehcahce.configuration=
################################## Internationalization properties #################################
########################
## i18n ##
########################
# This property specifies the base name for the message resource bundles used for internationalization.
# Cette propriété spécifie le nom de base des fichiers de ressources de message utilisés pour l'internationalisation.
spring.messages.basename=i18n/common/jobtype,i18n/common/messages,i18n/common/validations,i18n/gd/autodoc,i18n/gd/exporttemplate,i18n/gd/messages,i18n/gd/datalink,i18n/gd/validations,i18n/hd/messages,i18n/hd/validations
# This property specifies whether the system locale should be used as a fallback for messages that are not found in the message resource bundles.
# Cette propriété spécifie si la locale système doit être utilisée comme solution de secours pour les messages qui ne sont pas trouvés dans les fichiers de ressources de message.
spring.messages.fallback-to-system-locale=false
######################################## Misc Configuration ########################################
##########################
## Web-ui configuration ##
##########################
# Network
# Cette propriété spécifie l'URL de l'interface web.
dc.app.url.web-ui=http://localhost:4200
# Cette propriété spécifie l'URL interne de l'interface web.
dc.app.url.internal-web-ui-url=http://localhost:4200
##############################################################################
## Configuration des échanges de message entre backend et Spark via Redis ##
## Configuration for message exchanges between backend and spark via redis ##
##############################################################################
## Configuration pour les échanges de message entre backend et spark via redis
## Url de Redis
## Redis Url
# spring.redis.host=dc-redis
# spring.redis.database=0
# spring.redis.port=6379
# spring.redis.timeout=60000
dc.app.notification.urls=redis://${spring.redis.host}:${spring.redis.port}
# The prefixes are in case one day we make multiple DataChain work on the same
# Les prefixes sont pour le cas ou un jour, on fait travailler plusieurs DataChain sur la même
#
# Redis infrastructure and to ensure that we do not overwrite the queue of another application if
# infra Redis et pour permettre de s'assurer ne pas écraser la file d'une autre application si
#
# Redis is shared with other applications
# Redis est partagé avec d'autres applications
dc.app.session.namespace=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:dc_core_sessions
dc.app.notification.job.queue.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.job.queue
dc.app.notification.event.job.queue.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.event.job.queue
dc.app.notification.cancel.job.topic.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.cancel.job.topic
dc.app.notification.event.job.topic.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.event.job.topic
dc.app.notification.cache.job.result.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.cache.job.result
dc.app.notification.event.heart.beat.name.prefix=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:notification.event.heart.beat
# Cron to deeply clean the cache
# Cron de nettoyage en profondeur du cache
dc.app.cron.clean.cache=0 0 1 * * ?
# Cron for clearing job details by setting requests to null. The default schedule is set to run at 1:30 AM every Sunday (0 30 1 * * SUN).
# Cron pour effacer les détails des emplois en définissant les demandes comme nulles. L'horaire par défaut est programmé pour s'exécuter à 1 h 30 chaque dimanche (0 30 1 * * SUN).
dc.app.cron.clean.job.request=0 30 1 * * SUN
# Threshold for data cleaning in days. Default 60 days
# Seuil de nettoyage des données en jours. Par défaut, 60 jours.
dc.app.cron.clean.job.request.threshold=60
# Short cache duration in second (default one hour)
# Durée du cache court en second (une heure par défaut)
dc.app.short.job.cache.duration.minutes=60
# Long cache duration in minutes (default one day)
# Durée du cache long en minutes (une journée par défaut)
dc.app.long.job.cache.duration.minutes=1440
###########################################
## Exposure API configuration ##
## Configuration de l'API d'exposition ##
###########################################
# Configuration of the maximum number of elements for the exposed API.
# By default at 100000, can be overloaded with potential performance risk.
# Configuration du nombre max d'éléments pour l'api d'exposition
# Par défaut à 100000, peut être surchargé avec risque potentiel sur les performances
dc.app.expose.api.max-results-number=100000
dc.app.expose.api.default-results-number=1000
################################################
## Data Encryption configuration ##
## Configuration du chiffrement des données ##
################################################
# This property specifies whether exported project files should be encrypted (true by default).
# If false a .zip file will be returned
# Cette propriété spécifie si les fichiers de projet exportés doivent être chiffrés (true par défaut).
# Si false un fichier .zip sera renvoyé
dc.project.export.zip.cipher=true
# Cipher key (If changed, all the connectors password must be revalidate)
# The key is optional. If set it must be exactly 16 characters
# Must be the same as spark
# Cette propriété spécifie la clé de chiffrement utilisée pour le backend et Spark. (doit contenir exactement 16 caractères).
# Si cette clé est modifiée, tous les mots de passe des connecteurs doivent être validés à nouveau.
# Doit être le même que spark
dc.app.backend.cipher.key=
################################################
## Data DCRepository configuration ##
## Configuration du dépôt de données ##
################################################
# This property specifies the maximum number of headers allowed for the repository in the application. (2000 by default)
# Cette propriété spécifie le nombre maximum d'en-têtes autorisés pour le dépôt dans l'application. (2000 par défaut)
dc.app.repository.headers.max.number=2000
################################################
## Date ##
################################################
# Default timezone setting for dates
# This parameter allows you to set the default timezone for date handling in front end date pickers (DataBlocks/Sources filters and centering zones).
# Paramètre de fuseau horaire par défaut pour les dates
# Ce paramètre vous permet de définir le fuseau horaire par défaut pour la gestion des dates dans les sélecteurs de date (Filters de DataBlocks/Sources et zones de centrage) côté frontend."
dc.app.date.timezone=
# Default timezone setting for dates in %date variables
# (for example when choosing file export name in Datablock export)
# Paramètre de fuseau horaire par défaut pour les dates utilisées dans les expressions %date
# (par exemple lors du choix du nom de fichier pour un export datablock
dc.app.date.sl.timezone=UTC
##########################
## SMTP Configuration ##
##########################
# You can define STMP configuration vith datachain admin IHM or with this file
# La configuration SMTP peut-être définie dans ce fichier ou via l'interface web de datachain.
# choice between IHM(in database configuration) or via configuration file required value : "db" or "file"
# choix de configuration entre IHM (configuration en base de donnée) ou fichier de configuration - obligatoire : "ihmdb" ou "file"
dc.app.smtp.config=ihmdb
#dc.app.smtp.config=file
# Les autre paramètres ne sont nécessaires que si dc.app.mail.config=file
# Please fill others parameters only if dc.app.mail.config=file
# serveur smtp : obligatoire
# smtp server : required
dc.app.smtp.host=
# port smtp (465 par défaut)
# smtp port (default 465)
dc.app.smtp.port=465
# Authentification smtp (false par défaut)
# smtp authentication (default false )
dc.app.smtp.auth=false
# Utilisateur pour Authentification
# authentication username
dc.app.smtp.user=
# Mot de passe pour Authentification
# authentication password
dc.app.smtp.password=
# Utilisateur emetteur des messages (par défaut : dc.datachain@datachain.fr)
# mail sender (default : dc.datachain@datachain.fr)
dc.app.smtp.sender=dc.datachain@datachain.fr
# nom d'hote smtp de confiance
# trusted host name
dc.app.smtp.ssl.trust=*
# utiliser ssl pour les échanges smtp
# Use ssl when using smtp
dc.app.smtp.ssl.enable=true
# utiliser ssl pour les échanges smtp
# Use ssl when using smtp
dc.app.smtp.ssl.protocols=TLSv1.2
# utiliser starttls pour les échanges smtp
# Use starttls when using smtp
dc.app.smtp.starttls.enable=true
# rendre starttls obligatoire (si oui, une erreur aura lieu si l'échange starttls ne peut avoir lieu)
# is starttls mandatory
dc.app.smtp.starttls.required=false
##########################
## SECURITY ##
##########################
## Enable datachain tokens for api call
## Activation de l'authentification par token pour les appels API
dc.app.security.auth.api-token.enable=true
## Database cleaning of last users login
## Cron de nettoyage des dernières dates de logins utilisateurs
#dc.app.module.user.last-login-cleaner.cron=0 5 22 * * ?
#################################################
## Console Exchange configuration ##
## Configuration des échanges avec la console ##
#################################################
# Plateform code modify if multiple plateforme sharing same redis
# code de la plateforme, à modifier si plusieurs plateformes partagent le même redis
dc.app.module.plateform-id=default
# Module code
# code du module selon la topology
dc.app.module.instance-id=DATACHAIN_CORE
# private console url
# Url privée de la console
#dc.app.module.console.url=http://dc-console:8093
# Authentication token for module exchanges
# token d'authentification pour les appels à la console
# dc.app.module.console.api-key=****
## Event incremental synchronisation with console configuration (unit : seconds)
## five seconds after start, then every 3 minutes.
## Cron de synchronisation des évènements consoles en second
## 5 secondes après redémarrage, puis toutes les trois minutes.
dc.app.module.console.sync.events.incremental.cron=-
dc.app.module.console.sync.events.incremental.initial-delay=5
dc.app.module.console.sync.events.incremental.fixed-delay=180
## Event full synchronisation with console configuration (unit : seconds)
## Use it if there are problems with incremental event synchronization.
## Cron de synchronisation de tous les évènements consoles en second
## A n'activer qu'une fois par jour maximum si nécessaire, et
## en dehors des heures d'utilisations intenses, non actif.
# dc.app.module.console.sync.events.full.cron=-
# dc.app.module.console.sync.events.full.initial-delay=99999d
# dc.app.module.console.sync.events.full.fixed-delay=99999d
Principaux paramètres
| Paramètre | Valeur par défaut | Description |
|---|---|---|
dc.app.db.host |
localhost |
adresse ip ou dns de la base de données |
spring.datasource.url |
jdbc:postgresql://${dc.app.db.host}:5433/adobis?prepareThreshold=0&preparedStatementCacheQueries=0 |
chaîne de connexion JDBC |
spring.datasource.username |
** |
nom d’utilisateur de la connexion JDBC |
spring.datasource.password |
** |
mot de passe de la connexion JDBC |
spring.datasource.jmx-enabled |
false |
interrupteur d’activation de la jmx pour la dataSource JDBC |
spring.jpa.show-sql |
false |
paramètre gérant l’affichage du SQL de la dataSource JDBC dans les logs |
server.port |
8089 |
port http |
server.compression.enabled |
true |
interrupteur d’activation de la compression http |
server.compression.mime-types |
application/json,application/xml,text/html,text/xml,text/plain |
mime-types à compresser |
server.compression.min-response-size |
2KB |
(en byte) compresser à partir de |
spring.servlet.multipart.max-file-size |
10000MB |
taille maximale d’un fichier transmis par http |
spring.servlet.multipart.max-request-size |
10000MB |
taille maximale d’une requête http |
dc.app.http.upload.chunk-size |
32768 |
taille maximale en bytes d’un tronçon de fichier transmis par http |
spring.jmx.enabled |
false |
interrupteur d’activation jmx pour spring |
management.endpoint.shutdown.enabled |
true |
interrupteur d’activation du service shutdown |
management.server.port |
9089 |
port http du service actuator |
management.server.address |
127.0.0.1 |
adresse réseau à laquelle les endpoints actuator doivent se lier |
dc.app.backend.user.username |
** |
utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark |
dc.app.backend.user.password |
** |
password de l’utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark |
dc.app.backend.security.oauth.client.id |
** |
client id oauth2 |
dc.app.backend.security.oauth.client.secret |
** |
client secret oauth2 |
dc.app.backend.security.login.failure.retry-max-nbr |
3 |
nombre de tentatives d’authentification maximum |
dc.app.backend.security.login.failure.retry-delay |
1 |
durée en minute du blockage du service authentification après un dépassement du dc.app.backend.security.login.failure.retry-max-nbr |
dc.app.backend.security.token.validity |
240 |
durée en minute de la validité d’une authentification |
dc.app.backend.security.password-validity-delay |
90 |
durée en jour de la validité du password |
dc.app.backend.security.inactivity-max-delay |
3 |
durée en minute maximum de l’inactivité ihm, une fois dépassé l’utilisateur est automatiquement déconnecté |
dc.app.backend.security.authentication.2fa.active |
false |
interrupteur d’activation de l’authentification à double facteur |
dc.app.backend.security.authentication.2fa.code-expiration |
5 |
durée en minute maximum de la validité du jeton 2fa |
logbook.filter.enabled |
false |
interrupteur d’activation de la traçabilité http |
logbook.write.level |
INFO |
niveau de traçabilité http |
dc.app.log.aspect.enable |
false |
interrupteur d’activation du profilage des données (calcul et log du temps d’exécution des services) |
dc.app.url.web-ui |
http://localhost |
adresse web-ui public |
dc.app.api.spark |
http://localhost:8090 |
liste des adresses "context" spark (séparées par des virgules) |
dc.app.api.spark.security.user.name |
** |
liste des logins "context" spark (séparées par des virgules) |
dc.app.api.spark.security.user.password |
** |
liste des mots de passe "context" spark (séparées par des virgules) |
dc.api.spark.shared-file-system |
false |
indiquer si les différents "context" spark partagent le même system de fichier |
dc.api.spark.request-connection-timeout |
10000 |
Temps en milliseconde de la connection-timeout avec un "context" spark |
dc.api.spark.request-reading-timeout |
10000 |
Temps en milliseconde de la reading-timeout avec un "context" spark |
dc.app.ehcahce.configuration |
redéfinir l’emplacement du fichier de configuration ehcache |
Module Spark - Image dc/spark
Description de l’image
Description |
Porte le module de calcul (driver spark embarqué) qui est le contexte de calcul distribué. Ce module peut s’interfacer avec un cluster Spark (non livré avec la solution). L’image exécute deux processus : * le companion : API du module (échanges avec le backend, notifications) ; * le job Spark : driver Spark embarqué, qui exécute les calculs. |
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Taille |
~1Go |
|||||||||||||||
Briques techniques |
Applications Java/Spring Boot/Spark |
|||||||||||||||
Utilisateur |
Le conteneur démarre en |
|||||||||||||||
Volumes |
|
|||||||||||||||
Logs |
Plusieurs types de logs, situées sous /logs/datachain/spark
|
|||||||||||||||
Urls |
|
Variables d’environnement
| Variable | Valeur par défaut | Description |
|---|---|---|
SPARK_SECURITY_USER_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de surcharger dc.app.api.spark.security.user.password (identique sur backend et spark) |
|
JAVA_OPTIONS |
-Xms1024M -Xmx3g |
Options de la JVM du job Spark, notamment la mémoire. Si la variable est définie, elle remplace les options de mémoire par défaut (-Xms, -Xmx) : les reprendre. |
JAVA_JAR_OPTIONS |
-Xms128M -Xmx256M |
Options de la JVM du companion, notamment la mémoire. Variable distincte de JAVA_OPTIONS, qui n’est pas prise en compte par le companion. |
Les variables d’environnement dont le nom contient des points (par exemple dc.app.module.instance-id) sont transmises sous forme de propriétés système (-D) aux deux processus de l’image. Elles permettent de surcharger les paramètres décrits ci-dessous, et appliquent la même valeur au companion et au job Spark.
|
Fichiers de configuration
Les paramètres de l’image sont répartis dans trois fichiers de configuration :
-
la configuration publique du companion ;
-
la configuration partagée du companion : elle contient les paramètres communs aux deux processus (chemins de stockage, accès S3, limites) ;
-
la configuration publique du job Spark.
Companion : configuration publique
######################################################################################################################
## DATACHAIN DC-SPARK-COMPANION PUBLIC CONFIGURATION FILE
##
## Operator-facing settings. This file is published as-is in the documentation (Maven artifact with
## classifier "conf"). Settings shared with hdh-spark-job are in application-shared.properties.
## Profile "public": loaded first, overridden by "shared" then by "local" / "prod-default".
##
## Réglages exposés à l'exploitation. Ce fichier est publié tel quel dans la documentation
## (artefact Maven classifier "conf"). Les paramètres partagés avec hdh-spark-job sont dans
## application-shared.properties.
## Profil "public" : chargé en premier, surchargé par "shared" puis par "local" / "prod-default".
######################################################################################################################
###############################################################
## HTTP server.
## Serveur HTTP.
###############################################################
## Server HTTP port.
## Port HTTP du serveur.
server.port=8090
## Whether response compression is enabled.
## Indique si la compression des réponses est activée.
server.compression.enabled=true
## Comma-separated list of MIME types that should be compressed.
## Liste séparée par des virgules des types MIME qui doivent être compressés.
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,text/csv,application/octet-stream
## Minimum "Content-Length" value required for compression to be performed.
## Valeur "Content-Length" minimale requise pour que la compression soit effectuée.
server.compression.min-response-size=2KB
## Multipart uploads are disabled.
## Les téléversements multipart sont désactivés.
spring.servlet.multipart.enabled=false
## Access log: enabled, encoding, retention in days, and directory (the directory should not be modified).
## Logs d'accès : activation, encodage, rétention en jours et répertoire (ne devrait pas être modifié).
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.max-days=31
server.tomcat.accesslog.directory=${DC_ROOT_LOG_DIRECTORY:/tmp/log}${DC_LOG_DIRECTORY:/datachain/dc_spark_companion}
###############################################################
## API documentation.
## Documentation de l'API.
###############################################################
springdoc.api-docs.enabled=true
springdoc.swagger-ui.enabled=true
dc.app.doc.server.url=none
###############################################################
## Monitoring with Spring actuator. For the detailed configuration, see
## https://docs.spring.io/spring-boot/docs/3.1.5/reference/html/actuator.html
## Monitoring avec Spring actuator. Pour la configuration détaillée, voir le lien ci-dessus.
###############################################################
management.server.port=9090
management.server.address=127.0.0.1
management.endpoint.shutdown.enabled=false
management.endpoints.web.base-path=/management
management.endpoints.web.exposure.include=health, info, prometheus
management.prometheus.metrics.export.enabled=false
###############################################################
## Context identity.
## Identité du contexte.
###############################################################
## Context ID must match the one registered in the backend configuration.
## L'identifiant de contexte doit correspondre à celui déclaré dans la configuration du backend.
dc.app.context.id=0
dc.app.context.name=context_1
## URL of this companion instance, reported to the backend via the heartbeat.
## URL de cette instance du companion, remontée au backend par le heartbeat.
dc.app.context.url=http://localhost:8090
###############################################################
## Job scheduling.
## Ordonnancement des jobs.
###############################################################
## Spark scheduling mode. FAIR lets several jobs run concurrently, FIFO runs them one at a time.
## Must match hdh-spark-job's dc.app.spark.scheduler.mode.
## Mode d'ordonnancement Spark. FAIR accepte plusieurs jobs en parallèle, FIFO les exécute un par un.
## Doit correspondre au dc.app.spark.scheduler.mode de hdh-spark-job.
dc.app.spark.scheduler.mode=FAIR
## Number of threads dequeuing and running the Spark jobs coming from the backend. Only used in FAIR
## mode. Keep it in line with the power allocated to the context, otherwise jobs always wait.
## Nombre de threads chargés de dépiler et exécuter les jobs Spark venant du backend. Utilisé en mode
## FAIR uniquement. À adapter à la puissance allouée au contexte, sinon des jobs attendent en permanence.
dc.app.job.manager.spark.thread.number=5
## Number of threads running the non-Spark jobs (project import/export).
## Nombre de threads chargés des jobs non Spark (import/export de projets).
dc.app.job.manager.other.thread.number=5
## Spark resource parameters, reported in the heartbeat so the backend knows the context capacity.
## Must match the values configured in hdh-spark-job's application.public.properties.
## Paramètres de ressources Spark, remontés dans le heartbeat pour que le backend connaisse la
## capacité du contexte. Doivent correspondre aux valeurs de l'application.public.properties de hdh-spark-job.
dc.app.spark.master=local[2]
dc.app.spark.executor.memory=2g
dc.app.spark.cores.max=2
###############################################################
## Redis messaging with the backend.
## Échanges de messages avec le backend via Redis.
###############################################################
## Redis URL.
## URL de Redis.
dc.app.notification.urls=redis://localhost:33333
## Platform code, to change when several platforms share the same Redis.
## Code de la plateforme, à modifier si plusieurs plateformes partagent le même Redis.
dc.app.module.plateform-id=default
## Module code, according to the topology.
## Code du module, selon la topologie.
dc.app.module.instance-id=DATACHAIN_CORE
## The prefixes below exist so that several Datachain instances can share one Redis without
## overwriting each other's queues. They must match the ones configured on the backend.
## Les préfixes ci-dessous permettent à plusieurs instances Datachain de partager un même Redis sans
## écraser mutuellement leurs files. Ils doivent correspondre à ceux configurés sur le backend.
dc.app.instance-unique-id=${dc.app.module.plateform-id}:${dc.app.module.instance-id}
dc.app.notification.lockmap=datachain:${dc.app.instance-unique-id}:notification.lockmap
dc.app.notification.job.queue.name.prefix=datachain:${dc.app.instance-unique-id}:notification.job.queue
dc.app.notification.event.job.queue.name.prefix=datachain:${dc.app.instance-unique-id}:notification.event.job.queue
dc.app.notification.cancel.job.topic.name.prefix=datachain:${dc.app.instance-unique-id}:notification.cancel.job.topic
dc.app.notification.event.job.topic.name.prefix=datachain:${dc.app.instance-unique-id}:notification.event.job.topic
dc.app.notification.cache.job.result.name.prefix=datachain:${dc.app.instance-unique-id}:notification.cache.job.result
dc.app.notification.event.heart.beat.name.prefix=datachain:${dc.app.instance-unique-id}:notification.event.heart.beat
###############################################################
## Hadoop / S3A configuration used by CompanionContextListener through HdfsConfigurationInitiator.
## Configuration Hadoop / S3A utilisée par CompanionContextListener via HdfsConfigurationInitiator.
###############################################################
dc.app.spark.hadoop.dfs.client.use.datanode.hostname=false
## Hadoop S3A implementation to use.
## Implémentation Hadoop S3A à utiliser.
dc.app.spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
## Path-style access (http://host/bucket/...). Required for MinIO and S3-compatible storages.
## Accès path-style (http://host/bucket/...). Nécessaire pour MinIO ou un stockage compatible S3.
dc.app.spark.hadoop.fs.s3a.path.style.access=true
dc.app.spark.hadoop.fs.s3a.fast.upload=true
## Buffer type used (disk, array, bytebuffer) and local directory holding the disk buffers.
## Type de buffer utilisé (disk, array, bytebuffer) et répertoire local des buffers disque.
dc.app.spark.hadoop.fs.s3a.fast.upload.buffer=disk
dc.app.spark.hadoop.fs.s3a.buffer.dir=/tmp/spark-buffers
## Maximum number of blocks an output stream may have in flight.
## Nombre maximum de blocs qu'un flux de sortie peut avoir en activité.
dc.app.spark.hadoop.fs.s3a.fast.upload.active.blocks=10
## Threshold triggering a multipart upload, and size of each part.
## Seuil déclenchant le multipart upload, et taille de chaque partie.
dc.app.spark.hadoop.fs.s3a.multipart.threshold=67108864
dc.app.spark.hadoop.fs.s3a.multipart.size=64M
## Maximum number of threads and of simultaneous connections for the S3A operations.
## Nombre maximum de threads et de connexions simultanées pour les opérations S3A.
dc.app.spark.hadoop.fs.s3a.threads.max=100
dc.app.spark.hadoop.fs.s3a.connection.maximum=300
## HTTP connection timeout in milliseconds, retry count and retry interval.
## Timeout de connexion HTTP en millisecondes, nombre de tentatives et intervalle entre tentatives.
dc.app.spark.hadoop.fs.s3a.connection.timeout=200000
dc.app.spark.hadoop.fs.s3a.attempts.maximum=20
dc.app.spark.hadoop.fs.s3a.retry.interval=500ms
Companion : configuration partagée
######################################################################################################################
## DATACHAIN DC-SPARK-COMPANION SHARED CONFIGURATION FILE
##
## Settings shared with hdh-spark-job: both processes run in the same container and must
## resolve exactly the same paths and the same limits. Any change here must be reported verbatim in
## java-source/hdh-spark-job/src/main/resources/application.shared.properties
## Profile "shared": loaded after the "public" profile and before "local" / "prod-default".
##
## Paramètres partagés avec hdh-spark-job : les deux processus tournent dans le même conteneur et
## doivent résoudre exactement les mêmes chemins et les mêmes limites. Toute modification ici doit
## être reportée à l'identique dans
## java-source/hdh-spark-job/src/main/resources/application.shared.properties
## Profil "shared" : chargé après le profil "public" et avant "local" / "prod-default".
######################################################################################################################
###############################################################
## Storage root.
## file:/// for the local disk, s3a://bucket for S3, hdfs://host:port for HDFS.
## Racine du stockage.
## file:/// pour le disque local, s3a://bucket pour S3, hdfs://host:port pour HDFS.
###############################################################
dc.app.data-file.hdfs=file:///tmp/hdh
###############################################################
## Input depot paths.
## Répertoires des dépôts en entrée.
###############################################################
dc.app.data-file.hdfs.input.depot.csv.execution=${dc.app.data-file.hdfs}/input/depot/csv/execution
dc.app.data-file.hdfs.input.depot.csv.tmp=${dc.app.data-file.hdfs}/input/depot/csv/tmp
dc.app.data-file.hdfs.input.depot.db.sql.execution=${dc.app.data-file.hdfs}/input/depot/db/execution
dc.app.data-file.hdfs.input.depot.db.mongodb.execution=${dc.app.data-file.hdfs}/input/depot/mongodb/execution
dc.app.data-file.hdfs.input.depot.db.neo4j.execution=${dc.app.data-file.hdfs}/input/depot/neo4j/execution
dc.app.data-file.hdfs.input.depot.json.execution=${dc.app.data-file.hdfs}/input/depot/json/execution
dc.app.data-file.hdfs.input.depot.json.tmp=${dc.app.data-file.hdfs}/input/depot/json/tmp
dc.app.data-file.hdfs.input.depot.parquet.execution=${dc.app.data-file.hdfs}/input/depot/parquet/execution
dc.app.data-file.hdfs.input.depot.parquet.tmp=${dc.app.data-file.hdfs}/input/depot/parquet/tmp
dc.app.data-file.hdfs.input.depot.excel.execution=${dc.app.data-file.hdfs}/input/depot/excel/execution
dc.app.data-file.hdfs.input.depot.excel.tmp=${dc.app.data-file.hdfs}/input/depot/excel/tmp
dc.app.data-file.hdfs.input.depot.excel.tmp.cache=${dc.app.data-file.hdfs}/input/depot/excel/cache
dc.app.data-file.hdfs.input.depot.binary.execution=${dc.app.data-file.hdfs}/input/depot/binary/execution
dc.app.data-file.hdfs.input.depot.binary.tmp=${dc.app.data-file.hdfs}/input/depot/binary/tmp
dc.app.data-file.hdfs.input.depot.xml.execution=${dc.app.data-file.hdfs}/input/depot/xml/execution
dc.app.data-file.hdfs.input.depot.xml.tmp=${dc.app.data-file.hdfs}/input/depot/xml/tmp
dc.app.data-file.hdfs.input.depot.trino.execution=${dc.app.data-file.hdfs}/input/depot/trino/execution
dc.app.data-file.hdfs.input.depot.dataLink.execution=${dc.app.data-file.hdfs}/input/depot/dataLink/execution
## Folder where an imported project archive is unzipped.
## Répertoire de décompression d'une archive de projet importée.
dc.app.data-file.hdfs.input.import.zip=${dc.app.data-file.hdfs}/input/import/zip
###############################################################
## Export output paths.
## Répertoires de sortie des exports.
###############################################################
dc.app.data-file.hdfs.output.export.zip=${dc.app.data-file.hdfs}/output/export/zip
dc.app.data-file.hdfs.output.export.csv=${dc.app.data-file.hdfs}/output/export/csv
dc.app.data-file.hdfs.output.export.json=${dc.app.data-file.hdfs}/output/export/json
dc.app.data-file.hdfs.output.export.parquet=${dc.app.data-file.hdfs}/output/export/parquet
dc.app.data-file.hdfs.output.export.xml=${dc.app.data-file.hdfs}/output/export/xml
dc.app.data-file.hdfs.output.export.excel=${dc.app.data-file.hdfs}/output/export/excel
dc.app.data-file.hdfs.output.export.txt=${dc.app.data-file.hdfs}/output/export/txt
dc.app.data-file.hdfs.output.export.txt.tmp=${dc.app.data-file.hdfs}/output/export/txt/tmp
###############################################################
## Parquet cache paths.
## Répertoires de cache parquet.
###############################################################
dc.app.data-file.hdfs.output.cache.parquet=${dc.app.data-file.hdfs}/output/cache/parquet
dc.app.data-file.hdfs.output.cache.parquet.datablock=${dc.app.data-file.hdfs.output.cache.parquet}/datablock
dc.app.data-file.hdfs.output.cache.parquet.uet=${dc.app.data-file.hdfs.output.cache.parquet}/uet
###############################################################
## Depot snapshot path.
## Répertoire des snapshots de dépôt.
###############################################################
dc.app.data-file.hdfs.output.snapshot.depot=${dc.app.data-file.hdfs}/output/snapshot/depot
###############################################################
## Project data root and DataLink snapshot root.
## Racine des données projet et racine des snapshots DataLink.
###############################################################
dc.app.data-file.hdfs.project.root=${dc.app.data-file.hdfs}/data
dc.app.data-file.hdfs.dataLinks.root=${dc.app.data-file.hdfs.project.root}/dataLinks
## Free disk safety margin kept on the folders written, in minutes.
## Marge de sécurité sur l'espace disque libre des répertoires écrits, en minutes.
dc.app.free-disk.safety-margin-minutes=10
###############################################################
## S3 access, set by the deployment.
## Accès S3, renseigné par le déploiement.
###############################################################
## S3 service endpoint URL.
## URL de l'endpoint du service S3.
dc.app.data-file.s3.endpoint=none
## Bucket used for the storage.
## Nom du bucket utilisé pour le stockage.
dc.app.data-file.s3.bucket=none
## S3 access key.
## Clé d'accès S3.
dc.app.data-file.s3.access.key=none
## S3 secret key.
## Clé secrète S3.
dc.app.data-file.s3.secret.key=none
###############################################################
## Shared limits read by both processes.
## Limites partagées, lues par les deux processus.
###############################################################
## Maximum number of rows returned on a "take" request from the UI.
## Nombre maximum de lignes remontées lors d'un "take" au niveau de l'IHM.
dc.app.take.max-row=500000
## SFTP connector timeout, in milliseconds.
## Timeout des connecteurs SFTP, en millisecondes.
dc.app.connector.sftp.timeout=10000
## Cipher key. Optional; if set it must be exactly 16 characters, and must match the backend.
## If it is changed, every connector password must be revalidated.
## Clé de chiffrement. Optionnelle ; si renseignée elle doit faire exactement 16 caractères et être
## identique à celle du backend. Si elle change, tous les mots de passe des connecteurs sont à revalider.
dc.app.backend.cipher.key=
Job Spark : configuration publique
Les paramètres Spark natifs se déclarent sous dc.app. suivi de la clé Spark habituelle : au démarrage, le préfixe dc.app. est retiré et la clé obtenue est transmise à Spark. Par exemple, dc.app.spark.master=yarn positionne spark.master=yarn.
######################################################################################################################
# DATACHAIN HDH-SPARK-JOB PUBLIC CONFIGURATION
# Paramètres de réglage exposés à l'exploitation. Ce fichier est publié tel quel dans la
# documentation (artefact Maven classifier "conf").
#
# Ordre de chargement (le dernier gagne) :
# application.public.properties -> application.shared.properties -> application.properties
# -> variables d'environnement -> -Dcle=valeur
#
# Les paramètres Spark natifs se déclarent sous dc.app.<clé spark habituelle> : au démarrage le
# préfixe dc.app. est retiré et la clé résultante est poussée dans la SparkConf.
# Exemple : dc.app.spark.master=yarn -> spark.master=yarn
######################################################################################################################
####################################################
## Serveur d'exécution de jobs (API du spark-job) ##
####################################################
## Port sur lequel le companion soumet les jobs
dc.app.job.execution.server.port=8099
## Nombre de jobs Spark exécutés en parallèle
dc.app.job.execution.thread.number=5
## Nombre de threads servant les appels HTTP (statut / annulation) ; séparé du pool d'exécution
dc.app.job.execution.http.thread.number=10
####################
## Contexte Spark ##
####################
dc.app.spark.app-name=DATACHAIN
## Configuration de la puissance allouée au contexte spark.
## Vis-à-vis de Spark, le service spark-job se comporte comme un driver spark.
## Par défaut, la configuration est de type local si bien que le driver est aussi un worker Spark.
## local[2] indique que spark utilise deux coeurs au maximum
dc.app.spark.master=local[2]
## Mémoire allouée au contexte spark
dc.app.spark.executor.memory=2g
## Nombre de coeurs alloués au contexte spark
dc.app.spark.cores.max=2
####################
## Job scheduling ##
####################
## Mode de scheduling Spark
## par default, spark est lancé en mode FAIR : le contexte accepte plusieurs tâches, et essaye
## d'allouer des ressources à chaque tâches
## Fair scheduling (multiple jobs can be executed concurrently)
dc.app.spark.scheduler.mode=FAIR
## Fifo scheduling (only one job can be executed concurrently)
# dc.app.spark.scheduler.mode=FIFO
## Pool de scheduling utilisé par les jobs
dc.app.spark.scheduler.pool=default
## Fichier de définition des pools FAIR.
## Chemin local ou URI (file:/// , hdfs:// , s3a://). Le déploiement surcharge cette valeur.
dc.app.spark.scheduler.allocation.file=/opt/dev/dc/java-source/hdh-spark-job/src/main/resources/fairScheduler.xml
###########################################
## Parametrage des ports sparks Standard ##
###########################################
dc.app.spark.blockManager.port=7010
dc.app.spark.driver.port=7020
dc.app.spark.driver.host=localhost
dc.app.spark.driver.bindAddress=localhost
dc.app.spark.driver.maxResultSize=1g
dc.app.spark.local.dir=/tmp
dc.app.spark.ui.port=4040
dc.app.spark.ui.killEnabled=false
#############################################
## Timeouts des UDF HTTP (formules) en ms ##
#############################################
dc.app.spark.formula.http.timeout.read=200
dc.app.spark.formula.http.timeout.connect=200
###########################################
## Parametrage Optimizations ##
###########################################
dc.app.spark.sql.adaptive.enabled=true
dc.app.spark.sql.adaptive.coalescePartitions.enabled=true
dc.app.spark.sql.adaptive.coalescePartitions.initialPartitionNum=10
dc.app.spark.sql.adaptive.forceOptimizeSkewedJoin=true
dc.app.spark.sql.adaptive.localShuffleReader.enabled=true
dc.app.spark.sql.autoBroadcastJoinThreshold=-1
dc.app.spark.sql.shuffle.partitions=250
dc.app.spark.sql.files.minPartitionNum=10
## Paramètres positionnés pour corriger l'écriture de timestamp
## d'avant le premier janvier 1900 dans un fichier parquet.
dc.app.spark.sql.parquet.int96RebaseModeInWrite=CORRECTED
dc.app.spark.sql.parquet.int96RebaseModeInRead=CORRECTED
dc.app.spark.sql.parquet.datetimeRebaseModeInWrite=CORRECTED
dc.app.spark.sql.parquet.datetimeRebaseModeInRead=CORRECTED
#############################################
## Configuration Spark Hadoop pour S3A ##
#############################################
dc.app.spark.hadoop.dfs.client.use.datanode.hostname=false
# Implementation Hadoop S3A a utiliser
dc.app.spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
# Acces path-style (http://host/bucket/...). Nécessaire pour MinIO ou S3 compatible
dc.app.spark.hadoop.fs.s3a.path.style.access=true
dc.app.spark.hadoop.fs.s3a.fast.upload=true
# Type de buffer utilise (disk, array, bytebuffer)
dc.app.spark.hadoop.fs.s3a.fast.upload.buffer=disk
# emplacement locale pour les buffers en disque
dc.app.spark.hadoop.fs.s3a.buffer.dir=/tmp/spark-buffers
# Nombre maximum de blocs qu un flux de sortie peut avoir en activite
dc.app.spark.hadoop.fs.s3a.fast.upload.active.blocks=10
# Seuil pour declencher le multipart upload
dc.app.spark.hadoop.fs.s3a.multipart.threshold=67108864
# Taille de chaque partie du multipart upload
dc.app.spark.hadoop.fs.s3a.multipart.size=64M
# Nombre maximum de threads pour les operations S3A
dc.app.spark.hadoop.fs.s3a.threads.max=100
# Nombre maximal des connexions simultannees
dc.app.spark.hadoop.fs.s3a.connection.maximum=300
# Timeout de connexion HTTP en millisecondes
dc.app.spark.hadoop.fs.s3a.connection.timeout=200000
# Nombre maximal de tentatives en cas d echec
dc.app.spark.hadoop.fs.s3a.attempts.maximum=20
# Intervale de temps de tentatives en cas d echec
dc.app.spark.hadoop.fs.s3a.retry.interval=500ms
## La version 2 de l'algorithme du FileOutputCommitter introduit un mécanisme de commit plus robuste.
# Dans les versions antérieures, les échecs partiels pouvaient entrainer des données corrompues ou incomplétes.
dc.app.spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
## Committer (1) Magic Committer d'hadoop (écriture des parquets en S3 plus performante et plus robuste)
dc.app.spark.hadoop.fs.s3a.committer.magic.enabled=true
dc.app.spark.hadoop.fs.s3a.committer.name=magic
dc.app.spark.hadoop.mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory
dc.app.spark.sql.sources.commitProtocolClass=org.apache.spark.internal.io.cloud.PathOutputCommitProtocol
dc.app.spark.sql.parquet.output.committer.class=org.apache.spark.internal.io.cloud.BindingParquetOutputCommitter
##Committer (2) staging committer directory mode
#dc.app.spark.hadoop.fs.s3a.committer.name=directory
##Committer (3) staging committer partitioned mode
#dc.app.spark.hadoop.fs.s3a.committer.name=partitioned
##Committer (0) default committer : Hadoop committer
#######################################################
## Job configuration used by hdh-spark-job only.
## The settings shared with dc-spark-companion-app are in application.shared.properties.
## Configuration des jobs utilisée par le seul hdh-spark-job.
## Les réglages partagés avec dc-spark-companion-app sont dans application.shared.properties.
#######################################################
## Number of rows fetched per JDBC batch, for the SQL connectors.
## Nombre de lignes retournées lors de chaque requête SQL pour les connecteurs SQL.
dc.app.jdbc.fetchSize=5000
## Maximum payload size returned on a "take" request from the UI.
## Taille maximum de données remontées lors d'un "take" au niveau de l'IHM.
dc.app.take.max-object-size=258002000
## File extensions handled as Excel workbooks.
## Extensions de fichier traitées comme des classeurs Excel.
dc.app.xlsx.file.extensions=xlsx,xlsm
## Timezone used by the date-based window functions. Empty means the JVM default.
## Fuseau horaire utilisé pour les fonctions window basées sur les dates. Vide = défaut de la JVM.
## example / exemple : dc.app.window.default.tz=Europe/Paris
dc.app.window.default.tz=
Principaux paramètres
Les paramètres server., management., dc.app.module. et dc.app.job.manager. sont ceux du companion. Les paramètres dc.app.spark. et dc.app.job.execution. sont ceux du job Spark. Les autres paramètres dc.app.* sont lus par les deux processus.
| Paramètre | Valeur par défaut | Description |
|---|---|---|
server.port |
8090 |
port http du companion |
server.compression.enabled |
true |
interrupteur d’activation de la compression http |
server.compression.mime-types |
application/json,application/xml,text/html,text/xml,text/plain,text/csv,application/octet-stream |
"mime-types" à compresser |
server.compression.min-response-size |
2KB |
compresser à partir de |
dc.app.module.plateform-id |
default |
code de la plateforme. Il sert, avec |
dc.app.module.instance-id |
DATACHAIN_CORE |
À positionner avec l’identifiant de l’instance Datachain Core, c’est-à-dire la même valeur que pour le module backend ( |
dc.app.job.manager.spark.thread.number |
5 |
nombre de threads du companion chargés de dépiler et exécuter les jobs Spark venant du backend (mode FAIR uniquement). À adapter à la puissance allouée au contexte, sinon des jobs attendent en permanence |
dc.app.job.manager.other.thread.number |
5 |
nombre de threads du companion chargés des jobs non Spark (import/export de projets) |
dc.app.job.execution.thread.number |
5 |
nombre de jobs Spark exécutés en parallèle par le job Spark |
dc.app.job.execution.http.thread.number |
10 |
nombre de threads du job Spark servant les appels HTTP (statut, annulation), distinct du pool d’exécution |
dc.app.spark.scheduler.mode |
FAIR |
mode d’ordonnancement Spark : FAIR accepte plusieurs jobs en parallèle, FIFO les exécute un par un |
dc.app.spark.master |
local[2] |
chaîne de connexion vers le master spark (spark://HOST:PORT) ou local[n] pour tourner en mode local. Cette valeur est aussi remontée au backend par le companion (capacité du contexte) |
dc.app.spark.executor.memory |
2g |
mémoire allouée à un exécuteur |
dc.app.spark.cores.max |
2 |
nombre de coeurs maximum disponibles pour les exécuteurs |
dc.app.spark.ui.port |
4040 |
console de monitoring spark |
dc.app.spark.blockManager.port |
7010 |
port de communication pour les blockManager valable pour le driver (job Spark) et les exécuteurs (uniquement pour le mode cluster) |
dc.app.spark.driver.port |
7020 |
port de communication entre le driver (job Spark), le master et les exécuteurs (pour le mode cluster) |
dc.app.spark.driver.host |
localhost |
nom d’hôte ou adresse IP du driver pour la communication entre le driver (job Spark), le master et les exécuteurs (pour le mode cluster) |
dc.app.spark.driver.bindAddress |
localhost |
nom d’hôte ou adresse IP où lier les interfaces de connexion (sockets). Cette configuration outrepasse (remplace) la variable d’environnement "SPARK_LOCAL_IP" (uniquement valable pour le mode cluster) |
dc.app.spark.driver.maxResultSize |
1g |
mémoire maximale des données sérialisées pour les partitions après une action de collection (supérieure à dc.app.take.max-object-size) |
dc.app.spark.local.dir |
/tmp |
emplacement tmp pour les exécuteurs : il devrait se situer sur un disque dur local et rapide, du système. Il peut également se présenter sous la forme d’une liste de répertoires, séparés par des virgules, issus de différents disques. |
dc.app.spark.formula.http.timeout.read |
200 |
valeur du timeout-read en milliseconde pour les requêtes http depuis les formules |
dc.app.spark.formula.http.timeout.connect |
200 |
valeur du timeout-connect en milliseconde pour les requêtes http depuis les formules |
dc.app.take.max-row |
500000 |
nombre maximal de lignes (sur un "take") |
dc.app.take.max-object-size |
258002000 |
taille maximale des chaines de caractères en octets (sur un "take") |
dc.app.jdbc.fetchSize |
5000 |
valeur utilisée par les connecteurs de type BD, indique la taille d’un lot de données à traiter |
dc.app.connector.sftp.timeout |
10000 |
timeout des connecteurs SFTP, en millisecondes |
dc.app.backend.cipher.key |
(vide) |
clé de chiffrement, optionnelle : si elle est renseignée, elle doit faire exactement 16 caractères et être identique à celle du backend. Si elle change, tous les mots de passe des connecteurs sont à revalider |
dc.app.context.id |
0 |
id du contexte courant (doit être unique pour un backend) |
dc.app.context.name |
context_1 |
nom du contexte courant |
dc.app.context.url |
http://localhost:8090 |
url du contexte courant, communiquée au backend |
dc.app.api.backend |
http://localhost:8089 |
adresse http de l’api backend |
dc.app.api.maps.url |
http://localhost/service/maps/udf/ |
adresse http de l’api google-map dans le module backend |
dc.app.backend.user.username |
sparktobackend |
utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark |
dc.app.backend.user.password |
** |
password de l’utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark |
dc.app.backend.security.oauth.client.id |
** |
client id oauth2 du module backend |
dc.app.backend.security.oauth.client.secret |
** |
client secret oauth2 du module backend |
management.endpoints.web.base-path |
/management |
préfixe des endpoints actuator |
management.prometheus.metrics.export.enabled |
false |
interrupteur d’activation de l’export des métriques au format Prometheus |
management.server.port |
9090 |
port http du service actuator |
management.server.address |
127.0.0.1 |
adresse réseau à laquelle les endpoints actuator doivent se lier |
spring.security.user.name |
** |
login du "context" spark |
spring.security.user.password |
** |
mot de passe du "context" spark |
dc.app.data-file.hdfs |
file:///tmp/hdh |
chaîne de connexion racine HDFS : file:/// pour le disque local, s3a://bucket pour S3, hdfs://host:port pour HDFS |
dc.app.data-file.hdfs.dataLinks.root |
${dc.app.data-file.hdfs.project.root}/dataLinks |
répertoire racine des snapshots des DataLinks |
dc.app.data-file.s3.endpoint |
none |
url de l’endpoint du service S3 (accès S3 renseigné par le déploiement) |
dc.app.data-file.s3.bucket |
none |
bucket S3 |
dc.app.data-file.s3.access.key |
** |
clé d’accès S3 |
dc.app.data-file.s3.secret.key |
** |
clé secrète S3 |
dc.app.free-disk.safety-margin-minutes |
10 |
lors d’un nettoyage de l’espace disque demandé par le backend, les dossiers écrits pendant cette durée (en minutes) avant la demande sont conservés : ils peuvent appartenir à des éléments que le backend ne connaissait pas encore |
Module de migration dc core - Image dc/pg_migration
Description de l’image
Description |
Responsable de l’exécution des patchs de mise à jour liées à PostgreSQL. |
|---|---|
Taille |
~400Mo |
Briques techniques |
Application Java 17/Groovy |
Utilisateur |
|
Volumes |
Pas de volumes |
Logs |
Logs du module de migration sur la sortie standard docker |
Urls |
Pas d’Url sur ce composant |
Variables d’environnement
| Variable | Valeur par défaut | Description |
|---|---|---|
PG_HOST |
localhost |
Nom DNS de la base de donnée : sera généralement positionné à dc-pg |
PG_PORT |
5432 |
Port de la base de donnée : Ne devrait pas être modifié |
PG_USER |
postgres |
Utilisateur qui sera utilisé pour les migrations de tables |
PG_PASSWORD |
changeIt |
Mot de passe qui sera utilisé pour les migrations de tables : devrait être changé via ce paramètre ou le paramètre suivant : PG_PASSWORD_FILE |
PG_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de définir le Mot de passe qui sera utilisé pour les migrations de tables : devrait être changé via ce paramètre ou le paramètre précédent : PG_PASSWORD |
|
PG_DB |
adobis |
Nom de la base de donnée |
PG_EXPOSE_DB |
expose |
Nom de la base de donnée d’exposition |
PG_EXPOSE_HOST |
localhost |
Nom DNS de la base de donnée d’exposition: sera généralement positionné à dc-pg |
PG_EXPOSE_PORT |
5432 |
Port de la base de donnée d’exposition: Ne devrait pas être modifié |
PG_EXPOSE_USER |
postgres |
Utilisateur qui sera utilisé pour les migrations de tables d’exposition |
PG_EXPOSE_PASSWORD |
changeIt |
Mot de passe qui sera utilisé pour les migrations de tables d’exposition: devrait être changé via ce paramètre ou le paramètre suivant : PG_EXPOSE_PASSWORD_FILE |
PG_EXPOSE_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de définir le Mot de passe qui sera utilisé pour les migrations de tables d’exposition : devrait être changé via ce paramètre ou le paramètre précédent : PG_EXPOSE_PASSWORD |
|
PG_JOB_HOST |
valeur de PG_HOST |
Nom DNS de la base de données « job » (nettoyage des requêtes de jobs à chaque nouvelle version). Par défaut, c’est la base principale : à renseigner uniquement si les jobs utilisent une base distincte |
PG_JOB_PORT |
valeur de PG_PORT |
Port de la base de données « job » |
PG_JOB_DB |
valeur de PG_DB |
Nom de la base de données « job » |
PG_JOB_USER |
valeur de PG_USER |
Utilisateur de la base de données « job » |
PG_JOB_PASSWORD |
valeur du mot de passe de la base principale |
Mot de passe de la base de données « job » : devrait être changé via ce paramètre ou le paramètre suivant : PG_JOB_PASSWORD_FILE |
PG_JOB_PASSWORD_FILE |
Nom du fichier de type "docker secret" qui permet de définir le mot de passe de la base de données « job » : devrait être changé via ce paramètre ou le paramètre précédent : PG_JOB_PASSWORD |
Dernière mise à jour le 2 novembre 2026 à 15:16