Skip to content

Commit

Permalink
docs: hadoop confs in taskmanager (#3761)
Browse files Browse the repository at this point in the history
* fix: sbin deploy can't set HADOOP_CONF_DIR for taskmanager

* docs: hadoop confs in taskmanager

---------

Co-authored-by: yangwucheng <[email protected]>
  • Loading branch information
yangwucheng and yangwucheng authored Apr 3, 2024
1 parent 86d640a commit d966a88
Showing 1 changed file with 32 additions and 3 deletions.
35 changes: 32 additions & 3 deletions docs/zh/deploy/conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,13 +273,15 @@ batchjob.jar.path=
namenode.uri=
offline.data.prefix=file:///tmp/openmldb_offline_storage/
hadoop.conf.dir=
hadoop.user.name=
#enable.hive.support=false
```

### Spark Config详解

Spark Config中重点关注的配置如下:

<a id="about-config-env"></a>
```{note}
理解配置项与环境变量的关系。
Expand Down Expand Up @@ -307,7 +309,21 @@ TaskManager只接受`local`及其变种、`yarn`、`yarn-cluster`、`yarn-client

local模式即Spark任务运行在本地(TaskManager所在主机),该模式下不需要太多配置,只需要注意两点:
- 离线表的存储地址`offline.data.prefix`,默认为`file:///tmp/openmldb_offline_storage/`,即TaskManager所在主机的`/tmp`目录,你可以修改该配置为其他目录。
- 可以配置为HDFS路径,需要在**启动TaskManager前**配置环境变量`HADOOP_CONF_DIR`为Hadoop配置文件所在目录(注意是环境变量,不是TaskManager的配置项),文件目录中应包含Hadoop的`core-site.xml``hdfs-site.xml`等配置文件,更多见[Spark官方文档](https://spark.apache.org/docs/3.2.1/configuration.html#inheriting-hadoop-cluster-configuration)
- 可以配置为HDFS路径,如果配置为HDFS路径,需要正确配置变量 `hadoop.conf.dir``hadoop.user.name`,其中 `hadoop.conf.dir` 表示Hadoop配置文件所在目录(注意该目录是TaskManager节点目录;文件目录中应包含Hadoop的`core-site.xml``hdfs-site.xml`等配置文件,更多见[Spark官方文档](https://spark.apache.org/docs/3.2.1/configuration.html#inheriting-hadoop-cluster-configuration)),`hadoop.user.name` 表示hadoop运行用户,可以通过以下三种方式之一配置这两个变量:
1.`conf/taskmanager.properties` 配置文件中配置变量 `hadoop.conf.dir`, `hadoop.user.name`
2. 在(TaskManager节点)**启动TaskManager前**配置环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME`
3. 拷贝Hadoop配置文件(`core-site.xml``hdfs-site.xml`等)到 `{spark.home}/conf` 目录中
> sbin部署不能传递非指定的变量,目前TaskManager只会传递环境变量 `SPARK_HOME``RUNNER_JAVA_HOME`。所以如果是sbin部署,尽量使用第一种方法。
>
> 如果使用第二种方式,配置的环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` 最好是永久生效的,如果不希望环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` 永久生效,可以在一个session里,先临时配置环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` ,然后启动TaskManager,例如
> ```bash
> cd <openmldb部署根目录>
> export HADOOP_CONF_DIR=<这里替换为Hadoop配置目录>
> export HADOOP_USER_NAME=<这里替换为Hadoop用户名>
> bash bin/start.sh start taskmanager
> ```
>
> 环境变量生效范围参考 <a href="#about-config-env">理解配置项与环境变量的关系</a>
```{note}
HDFS路径目前需要配置`namenode.uri`,删除离线表时会连接HDFS FileSystem`namenode.uri`,并删除离线表的存储目录(Offline Table Path)。未来将废弃此配置项。
```
Expand All @@ -319,9 +335,22 @@ local模式即Spark任务运行在本地(TaskManager所在主机),该模


##### yarn/yarn-cluster模式

"yarn"和"yarn-cluster"是同一个模式,即Spark任务运行在Yarn集群上,该模式下需要配置的参数较多,主要包括:
-**启动TaskManager前**配置环境变量`HADOOP_CONF_DIR`为Hadoop和Yarn的配置文件所在目录,文件目录中应包含Hadoop的`core-site.xml``hdfs-site.xml`、Yarn的`yarn-site.xml`等配置文件,参考[Spark官方文档](https://spark.apache.org/docs/3.2.1/running-on-yarn.html#launching-spark-on-yarn)
- 正确配置变量 `hadoop.conf.dir``hadoop.user.name`,其中 `hadoop.conf.dir` 表示Hadoop和Yarn配置文件所在目录(注意该目录是TaskManager节点目录;文件目录中应包含Hadoop的`core-site.xml``hdfs-site.xml`, `yarn-site.xml`等配置文件,参考[Spark官方文档](https://spark.apache.org/docs/3.2.1/running-on-yarn.html#launching-spark-on-yarn)),`hadoop.user.name` 表示hadoop运行用户,可以通过以下三种方式之一配置这两个变量:
1.`conf/taskmanager.properties` 配置文件中配置变量 `hadoop.conf.dir`, `hadoop.user.name`
2. 在(TaskManager节点)**启动TaskManager前**配置环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME`
3. 拷贝Hadoop和Yarn配置文件(`core-site.xml``hdfs-site.xml`等)到 `{spark.home}/conf` 目录中
> sbin部署不能传递非指定的变量,目前TaskManager只会传递环境变量 `SPARK_HOME``RUNNER_JAVA_HOME`。所以如果是sbin部署,尽量使用第一种方法。
>
> 如果使用第二种方式,配置的环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` 最好是永久生效的,如果不希望环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` 永久生效,可以在一个session里,先临时配置环境变量 `HADOOP_CONF_DIR`, `HADOOP_USER_NAME` ,然后启动TaskManager,例如
> ```bash
> cd <openmldb部署根目录>
> export HADOOP_CONF_DIR=<这里替换为Hadoop配置目录>
> export HADOOP_USER_NAME=<这里替换为Hadoop用户名>
> bash bin/start.sh start taskmanager
> ```
>
> 环境变量生效范围参考 <a href="#about-config-env">理解配置项与环境变量的关系</a>
- `spark.yarn.jars`配置Yarn需要读取的Spark运行jar包地址,必须是`hdfs://`地址。可以上传[OpenMLDB Spark 发行版](../../tutorial/openmldbspark_distribution.md)解压后的`jars`目录到HDFS上,并配置为`hdfs://<hdfs_path>/jars/*`(注意通配符)。[如果不配置该参数,Yarn会将`$SPARK_HOME/jars`打包上传分发,并且每次离线任务都要分发](https://spark.apache.org/docs/3.2.1/running-on-yarn.html#preparations),效率较低,所以推荐配置。
- `batchjob.jar.path`必须是HDFS路径(具体到包名),上传batchjob jar包到HDFS上,并配置为对应地址,保证Yarn集群上所有Worker可以获得batchjob包。
- `offline.data.prefix`必须是HDFS路径,保证Yarn集群上所有Worker可读写数据。应使用前面配置的环境变量`HADOOP_CONF_DIR`中的Hadoop集群地址。
Expand Down

0 comments on commit d966a88

Please sign in to comment.