日志输出
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.xml中mr3.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.sh 中 LOG_LEVEL 的值,${sys:yarn.app.container.log.dir} 会展开为 Yarn 确定的日志目录。