Apache Hadoop-eigenschappen core-site.xml instellen

U hebt een scenario waarin Apache Hadoop-eigenschappen moeten worden ingesteld.

Normaal gesproken doet u dit in het core-site.xml bestand.

In dit artikel wordt uitgelegd hoe u kunt instellen core-site.xml in een cluster.

Het bestand core-site.xml maken in DBFS

U moet een bestand maken core-site.xml en opslaan in DBFS in uw cluster.

Een eenvoudige manier om dit bestand te maken, is via een bash-script in een notebook.

Met deze voorbeeldcode maakt u een map in uw cluster en schrijft u vervolgens hadoop-configs één core-site.xml eigenschapsbestand naar die map.

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

U kunt meerdere eigenschappen toevoegen aan het bestand door extra naam/waarde-paren toe te voegen aan het script.

U kunt dit bestand ook lokaal maken en het vervolgens uploaden naar uw cluster.

Een init-script maken dat wordt geladen core-site.xml

Met deze voorbeeldcode maakt u een init-script met de set-core-site-configs.sh naam dat gebruikmaakt van core-site.xml het bestand dat u zojuist hebt gemaakt.

Als u handmatig een bestand hebt geüpload en het ergens anders hebt opgeslagen, moet u core-site.xml de waarde in de config_xml voorbeeldcode bijwerken.

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)

Het init-script koppelen aan uw cluster

U moet het zojuist gemaakte init-script configureren als een init-script met clusterbereik.

Als u de voorbeeldcode hebt gebruikt, is uw bestemming en is DBFS het Init-scriptpad dbfs:/databricks/scripts/set-core-site-configs.sh .

Als u de voorbeeldcode hebt aangepast, moet u het juiste pad en de juiste naam van het init-script invoeren wanneer u deze aan het cluster koppelt.