跳到主要内容

日志输出

Metastore 的输出目录

执行 hive/metastore-service.sh 会为 Metastore 创建一个输出目录(例如 hive-2025-03-14-00-20-47-89f10360),位于目录 hive/metastore-service-result 下。

hive-2025-03-14-00-20-47-89f10360
├── conf
│ ├── env.sh
│ └── hive-site.xml
├── hive-logs
│ └── hive.log
└── out-metastore.txt
  • conf 是包含启动 Metastore 时所有有效配置文件的目录。
  • hive-logs/hive.log 是 Metastore 的日志文件。
  • out-metastore.txt 包含 hive/metastore-service.sh 的输出。

HiveServer2 的输出目录

执行 hive/hiveserver2-service.sh 会为 HiveServer2 创建一个输出目录(例如 hive-2025-03-14-00-35-08-b34a5b8f),位于目录 hive/hiveserver2-service-result 下。

hive-2025-03-14-00-35-08-b34a5b8f
├── conf
│ ├── env.sh
│ └── hive-site.xml
├── env
└── hive-logs
├── hive.log
└── out-hiveserver2.txt
  • conf 是包含启动 HiveServer2 时所有有效配置文件的目录。
  • env 列出了启动 HiveServer2 时所有有效的环境变量。
  • hive-logs/hive.log 是 HiveServer2 的日志文件。
  • hive-logs/out-hiveserver2.txt 包含 hive/hiveserver2-service.sh 的输出。

对于使用 --amprocess 选项启动的 HiveServer2,MR3 DAGAppMaster 会在 HiveServer2 输出目录下创建自己的输出目录,名称与应用程序 ID 相同(例如 application_1739072579773_0335)。它包含 MR3 DAGAppMaster 的日志文件、stderr 输出和 stdout 输出。

hive-2025-03-14-00-35-08-b34a5b8f
└── application_1739072579773_0335
├── run.log
├── stderr
└── stdout

修改日志配置

对于 Metastore 和 HiveServer2,HivePlus 使用位于配置目录中的日志配置文件 hive-log4j2.properties。用户可以直接在 hive-log4j2.properties 中修改日志级别,例如:

vi conf/tpcds/hive-log4j2.properties
property.hive.log.level = ERROR

对于 MR3 的 DAGAppMaster 和 ContainerWorker,HivePlus 使用包含在 MR3 jar 文件中的日志配置文件 mr3-container-log4j2.properties。用户可以通过在 env.sh 中设置环境变量 LOG_LEVEL 来间接修改日志级别,例如:

vi env.sh
LOG_LEVEL=ERROR

为 MR3 使用自定义日志配置

用户可以通过两个步骤为 MR3 的 DAGAppMaster 和 ContainerWorker 使用自定义日志配置文件。

首先,更新 DAGAppMaster 和 ContainerWorker 的命令行选项。在 mr3-site.xml 中,mr3.am.launch.cmd-opts 指定 DAGAppMaster 的命令行选项,mr3.container.launch.cmd-opts 指定 ContainerWorker 的命令行选项。因此,用户应该将新的命令行选项 -Dlog4j.configurationFile=<自定义日志配置文件的名称> 添加到这些键的值中,例如:

vi conf/tpcds/mr3-site.xml
<property>
<name>mr3.am.launch.cmd-opts</name>
<value>... -Dlog4j.configurationFile=custom-log4j.properties</value>
</property>
<property>
<name>mr3.container.launch.cmd-opts</name>
<value>... -Dlog4j.configurationFile=custom-log4j.properties</value>
</property>

其次,将自定义日志配置文件注册为本地资源,使其出现在 classpath 中。以下是将 custom-log4j.properties 注册为本地资源的示例。

  • 将文件复制到 HDFS 上的 /tmp/custom-log4j.properties
  • 将路径追加到 mr3-site.xmlmr3.aux.uris 的值
vi conf/tpcds/mr3-site.xml
<property>
<name>mr3.aux.uris</name>
<value>${auxuris},/tmp/custom-log4j.properties</value>
</property>

自定义日志配置文件可以使用 ${sys:mr3.root.logger}${sys:yarn.app.container.log.dir}。在运行时,${sys:mr3.root.logger} 会展开为 env.shLOG_LEVEL 的值,${sys:yarn.app.container.log.dir} 会展开为 Yarn 确定的日志目录。