其他配置
使用自定义配置设置
MR3 发布版本中的脚本可以根据以下语法接受额外的配置设置作为命令行选项:
--hiveconf <key>=<value> 添加配置键/值;可在末尾重复
用户可以根据需要将尽可能多的 --hiveconf 实例追加到命令中。用 --hiveconf 指定的配置值具有最高优先级,会覆盖 hive-site.xml、mr3-site.xml 和 tez-site.xml 中的任何现有值(而不仅仅是 hive-site.xml 中的值)。因此,用户可以完全无需修改预设配置文件即可更改 HivePlus 的行为。(需要注意的是,用户可以使用 --hiveconf 不仅配置 Hive,还可以配置 MR3 和 Tez。)或者,用户可以直接修改预设配置文件以使更改永久生效。
用户可以在配置目录中创建 hivemetastore-site.xml 和 hiveserver2-site.xml,分别作为 Metastore 和 HiveServer2 的配置文件。Hive 在读取 hive-site.xml 时会自动读取这些文件。配置文件的优先级顺序如下(从低到高):
hive-site.xml→hivemetastore-site.xml→hiveserver2-site.xml→--hiveconf命令行选项
使用 LocalThread 或 LocalProcess 模式时监视 /tmp
MR3Client 默认在 HDFS 上的 /tmp/<user name>/ 下创建临时目录。但是,如果 DAGAppMaster 以 LocalThread 或 LocalProcess 模式运行,而 ContainerWorker 以 Local 模式运行,它会在本地文件系统上的 /tmp/<user name>/ 下创建临时目录。 如果在创建临时目录时 /tmp/ 恰好已满,Yarn 会错误地认为 HDFS 已满,然后转入安全模式,阻止所有操作。因此,当 DAGAppMaster 使用 LocalThread 或 LocalProcess 模式时,用户应监视本地文件系统上的 /tmp/。
以 LocalThread 或 LocalProcess 模式运行的 DAGAppMaster 会在本地文件系统上的 /tmp/<user name>/ 下创建其工作目录和日志目录。用户可以在 mr3-site.xml 中使用键 mr3.am.delete.local.working-dir 指定在 DAGAppMaster 终止时是否删除工作目录。但是,日志目录在 DAGAppMaster 终止时不会自动删除。因此,用户负责清理这些目录,以防止 Yarn 转入安全模式。
模拟
为了在 HiveServer2 中支持模拟,Yarn 应配置为允许启动 Metastore 和 HiveServer2 的用户进行模拟。例如,为了允许用户 hive 进行模拟,管理员应在 core-site.xml 中添加两个配置设置并重启 Yarn。
vi /etc/hadoop/conf/core-site.xml
<property>
<name>hadoop.proxyuser.hive.groups</name>
<value>hive,foo,bar</value>
</property>
<property>
<name>hadoop.proxyuser.hive.hosts</name>
<value>red0</value>
</property>
在此示例中,hadoop.proxyuser.hive.groups 和 hadoop.proxyuser.hive.hosts 中的 hive 表示启动 Metastore 和 HiveServer2 的用户。因此,hadoop.proxyuser.hive.groups 是用于指定可以被用户 hive 模拟的组成员列表的键,而 hadoop.proxyuser.hive.hosts 是用于指定用户 hive 可以进行模拟的主机列表的键。
启用 doAs 时上传 MR3 jar 文件
要运行启用了 doAs 的 HiveServer2(通过在 hive-site.xml 中将 hive.server2.enable.doAs 设置为 true),用户(通常是管理员用户)应在上传到 HDFS 后将 MR3 jar 文件设置为对所有最终用户可读。这是因为每个作业都在实际提交它的最终用户下运行。如果 MR3 jar 文件对最终用户不可读,作业会立即失败,因为无法将文件注册为本地资源。