设置 Apache Hadoop core-site.xml 属性

有一个方案需要 Apache Hadoop 属性。

通常你会在 core-site.xml 文件中执行此操作。

本文介绍如何在群集中设置 core-site.xml

在 DBFS 中创建 core-site.xml 文件

需要创建 core-site.xml 文件,并将其保存到群集上的 DBFS 中。

创建此文件的一个简单方法是通过 bach 脚本在笔记本中创建。

此示例代码在群集上创建 hadoop-configs 文件夹,然后将单个属性 core-site.xml 文件写入该文件夹。

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

可以通过向脚本添加其他名称/值对,将多个属性添加到文件。

还可以在本地创建此文件,然后将它上传到群集。

创建加载 core-site.xml 的 init 脚本

此示例代码创建名为 set-core-site-configs.sh 的 init 脚本,该脚本使用刚创建的 core-site.xml 文件。

如果手动上传 core-site.xml 文件并将其存储在其他位置,应在示例代码中更新 config_xml 值。

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)

将 init 脚本附加到群集

需要将新创建的 init 脚本配置为群集范围的 init 脚本

如果使用了示例代码,则 目标 为, Init 脚本路径

如果自定义了示例代码,请确保在将 init 脚本附加到群集时输入其正确的路径和名称。