Establecimiento de las core-site.xmlpropiedades de Apache Hadoop

Hay un escenario que requiere que se configuren las propiedades de Apache Hadoop.

Normalmente, esto se realizaría en el archivo core-site.xml.

En este artículo se explica cómo se puede establecer core-site.xml en un clúster.

Cree el archivocore-site.xml en DBFS

Tiene que crear un archivo core-site.xml y guardarlo en DBFS en el clúster.

Una manera sencilla de crear este archivo es por medio de un script de bash en un cuaderno.

Este código de ejemplo crea una carpeta hadoop-configs en el clúster y, a continuación, escribe un único core-site.xml archivo de propiedades en esa carpeta.

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

Puede agregar varias propiedades al archivo al añadir pares de valores o nombres adicionales al script.

También puede crear este archivo localmente y cargarlo después en el clúster.

Cree un script de inicialización que cargue core-site.xml

Este código de ejemplo crea un script de inicialización denominado set-core-site-configs.sh que usa el archivo core-site.xml recién creado.

Si cargó manualmente un archivo core-site.xml y lo almacenó en otro lugar, debería actualizar el valor config_xml en el código de ejemplo.

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)

Adjunte el script de inicialización al clúster

Tiene que configurar el script de inicialización recién creado como un script de inicialización con ámbito de clúster.

Si usó el código de ejemplo, el Destino es DBFS y la ruta de acceso del script de inicialización es dbfs:/databricks/scripts/set-core-site-configs.sh.

Si personalizó el código de ejemplo, asegúrese de escribir la ruta de acceso correcta y el nombre del script de inicialización al adjuntarlo al clúster.