避免用户覆盖hadoop 2中的默认mapred属性

时间:2016-06-06 11:44:01

标签: hadoop hive hbase

如何避免用户在提交配置单元作业时覆盖hadoop配置文件的默认属性?

〔实施例:

mapred-site.xml:

<property>
    <name>mapreduce.job.heap.memory-mb.ratio</name>
    <value>0.8</value>
  </property>

用户在hive作业中使用以下属性来覆盖

set mapreduce.job.heap.memory-mb.ratio=0.9 

1 个答案:

答案 0 :(得分:2)

来自Hadoop documentation

  

配置参数可以声明为final。曾经是资源   声明一个值final,没有后续加载的资源可以改变它   值(...)管理员通常在core-site.xml中将参数定义为final,以获取用户应用程序可能无法更改的值。

<property>
  <name>dfs.hosts.include</name>
  <value>/etc/hadoop/conf/hosts.include</value>
  <final>true</final>
</property>

因此,如果您的用户通过JDBC连接,您只需修改配置。 HiveServer2使用的文件使一些道具“最终”。

如果您的用户使用旧版hive CLI连接,并且他们不是黑客,则只需(a)修补Hadoop客户端的全局配置,或 (b)修改“hive”启动程序脚本,以便它在非默认目录中选择特定的配置文件(通常通过在标准Hadoop CLASSPATH之前强制自定义目录来完成)。

如果您的用户是黑客并且他们可以访问旧版hive CLI,他们可以自行覆盖配置文件,因此从技术上讲,您无法强制执行<final>属性。但无论如何,如果有人能够做到这一点,那么无论如何他/她可能会得到你的工作; - )