|
|
@@ -387,7 +387,7 @@ LOG_ROOT_DIR="${HOME}/log"
|
|
|
|
|
|
(老项目在上一个公司/服务器只写 `defaultFS` 也能跑通 HA,最可能的原因是运维把 `hdfs-site.xml` 塞进了 DataX 的 classpath 目录 —— 比如 `datax/conf/` / `datax/lib/` / 某 plugin 的 `libs/`。新环境 `/opt/datax` 下没有这类预置文件,不走这条路。)
|
|
|
|
|
|
-**`dw_base/__init__.py:16` 的 `os.environ['HADOOP_CONF_DIR'] = '/etc/hadoop/conf'` 仅对 Spark 入口生效**:Spark on YARN 启动时,`SparkSubmitArguments.validateSubmitArguments` 会强校验该 env(不设直接抛 `When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set`,2026-04-20 实测)。对 DataX JVM 子进程无影响——一是 classpath 不含 conf 目录(见上),二是 DataX 由 `datax-single-job-starter.sh` 通过 `python3 datax.py` 启动,并未 import `dw_base`;DataX HA 靠 ini `[hadoop_config]` 节显式注入。早先 2026-04-18 曾把该行当"死代码"删除(`kb/92:158`),仅从 DataX 视角判断忽略了 Spark 路径,2026-04-20 恢复。
|
|
|
+**`dw_base/__init__.py` 的 `HADOOP_CONF_DIR` + `HIVE_CONF_DIR` export 仅对 Spark 入口生效**:(a) `HADOOP_CONF_DIR`:Spark on YARN 启动时 `SparkSubmitArguments.validateSubmitArguments` 会强校验该 env(不设直接抛 `When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set`,2026-04-20 实测)。(b) `HIVE_CONF_DIR`:Spark `.enableHiveSupport()` 找不到 `hive-site.xml` 时会静默回落 in-memory metastore——session 能起但看不到 HMS 真实库表(症状:`describe test.xxx` 在 Hive CLI 有,在 Spark 里 `Table or view not found`,2026-04-20 实测)。两者对 DataX JVM 子进程都无影响——一是 classpath 不含 conf 目录(见上),二是 DataX 由 `datax-single-job-starter.sh` 通过 `python3 datax.py` 启动,并未 import `dw_base`;DataX HA 靠 ini `[hadoop_config]` 节显式注入。早先 2026-04-18 曾把这两行当"死代码"删除(`kb/92:158`),仅从 DataX 视角判断忽略了 Spark 路径,2026-04-20 分两批恢复(HADOOP_CONF_DIR 在先,HIVE_CONF_DIR 补齐)。
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -445,7 +445,7 @@ dfs.client.failover.proxy.provider.nameservice1 = org.apache.hadoop.hdfs.server.
|
|
|
| `dw_base/datax/datasources/hdfs_data_source.py` | 覆写 `get_datasource_dict()`:父类逻辑外,检测 `[hadoop_config]` 节是否存在;存在则把整节作为 dict 塞进 `ds_dict['hadoopConfig']` |
|
|
|
| `dw_base/datax/plugins/plugin.py` | **不用改** —— `load_data_source()` 的 `for key, value in ds_dict.items()` 里,value 是 dict 时走 Python 原生赋值,json 序列化自然成立 |
|
|
|
| `dw_base/datax/plugins/reader/hdfs_reader.py` / `writer/hdfs_writer.py` | **不用改**,`defaultFS + hadoopConfig` 由 `load_data_source()` 自动注入到 `parameter` |
|
|
|
-| `dw_base/__init__.py:16` | **保留** `os.environ['HADOOP_CONF_DIR']`(Spark on YARN 启动强校验;DataX JVM 不读,HA 靠 ini `[hadoop_config]`) |
|
|
|
+| `dw_base/__init__.py` | **保留** `os.environ['HADOOP_CONF_DIR']` + `os.environ['HIVE_CONF_DIR']`(Spark on YARN 启动强校验 + Spark Hive metastore 定位;DataX JVM 不读,HA 靠 ini `[hadoop_config]`) |
|
|
|
| `bin/datax-gc-generator.py` | §2.7 从零重写时一并处理,这里不单独列 |
|
|
|
| `datasource/hdfs/{env}/*.ini` | 按新 schema 新建(prod 带 `[hadoop_config]`;dev/test 只写 `[base] defaultFS`) |
|
|
|
|