Définir les core-site.xml Propriétés de Apache Hadoop

Vous avez un scénario qui requiert la définition de propriétés de Apache Hadoop.

Normalement, vous le faites dans le core-site.xml fichier.

Dans cet article, nous expliquons comment vous pouvez définir core-site.xml dans un cluster.

Créer le core-site.xml fichier dans dBFS

Vous devez créer un core-site.xml fichier et l’enregistrer sur dBFS sur votre cluster.

Un moyen simple de créer ce fichier consiste à utiliser un script bash dans un Notebook.

Cet exemple de code crée un hadoop-configs dossier sur votre cluster, puis écrit un core-site.xml fichier de propriétés unique dans ce dossier.

mkdir -p /dbfs/hadoop-configs/
cat << 'EOF' > /dbfs/hadoop-configs/core-site.xml
 <property>
    <name><property-name-here></name>
    <value><property-value-here></value>
 </property>
EOF

Vous pouvez ajouter plusieurs propriétés au fichier en ajoutant des paires nom/valeur supplémentaires au script.

Vous pouvez également créer ce fichier localement, puis le télécharger vers votre cluster.

Créer un script init qui charge core-site.xml

Cet exemple de code crée un script init appelé set-core-site-configs.sh qui utilise le core-site.xml fichier que vous venez de créer.

Si vous avez chargé manuellement un core-site.xml fichier et que vous l’avez stocké ailleurs, vous devez mettre à jour la config_xml valeur dans l’exemple de code.

dbutils.fs.put("/databricks/scripts/set-core-site-configs.sh", """
#!/bin/bash

echo "Setting core-site.xml configs at `date`"

START_DRIVER_SCRIPT=/databricks/spark/scripts/start_driver.sh
START_WORKER_SCRIPT=/databricks/spark/scripts/start_spark_slave.sh

TMP_DRIVER_SCRIPT=/tmp/start_driver_temp.sh
TMP_WORKER_SCRIPT=/tmp/start_spark_slave_temp.sh

TMP_SCRIPT=/tmp/set_core-site_configs.sh

config_xml="/dbfs/hadoop-configs/core-site.xml"

cat >"$TMP_SCRIPT" <<EOL
#!/bin/bash
## Setting core-site.xml configs

sed -i '/<\/configuration>/{
    r $config_xml
    a \</configuration>
    d
}' /databricks/spark/dbconf/hadoop/core-site.xml

EOL
cat "$TMP_SCRIPT" > "$TMP_DRIVER_SCRIPT"
cat "$TMP_SCRIPT" > "$TMP_WORKER_SCRIPT"

cat "$START_DRIVER_SCRIPT" >> "$TMP_DRIVER_SCRIPT"
mv "$TMP_DRIVER_SCRIPT" "$START_DRIVER_SCRIPT"

cat "$START_WORKER_SCRIPT" >> "$TMP_WORKER_SCRIPT"
mv "$TMP_WORKER_SCRIPT" "$START_WORKER_SCRIPT"

echo "Completed core-site.xml config changes `date`"

""", True)

Attacher le script init à votre cluster

Vous devez configurer le script init nouvellement créé en tant que script d’initialisation de l’étendue du cluster.

Si vous avez utilisé l’exemple de code, votre destination est DBFS et le chemin d’accès du script init est dbfs:/databricks/scripts/set-core-site-configs.sh .

Si vous avez personnalisé l’exemple de code, assurez-vous que vous entrez le chemin d’accès et le nom corrects du script init lorsque vous l’attachez au cluster.