避免用户覆盖 hadoop 2 中的默认 mapred 属性
Avoid user from overriding default mapred property in hadoop 2
如何避免用户在提交 Hive 作业时覆盖默认的 hadoop 配置文件 属性?
示例:
mapred-site.xml:
<property>
<name>mapreduce.job.heap.memory-mb.ratio</name>
<value>0.8</value>
</property>
用户在配置单元作业 属性 下使用来覆盖
set mapreduce.job.heap.memory-mb.ratio=0.9
Configuration parameters may be declared final. Once a resource
declares a value final, no subsequently-loaded resource can alter that
value (...) Administrators typically define parameters as final in core-site.xml for values that user applications may not alter.
<property>
<name>dfs.hosts.include</name>
<value>/etc/hadoop/conf/hosts.include</value>
<final>true</final>
</property>
因此,如果您的用户通过 JDBC 连接,您只需修改一下配置即可。 HiveServer2 用来制作一些道具的文件 "final".
如果您的用户使用遗留 hive
CLI 连接,并且他们不是黑客,您只需要 (a) 修改 Hadoop 客户端的全局配置,或者 (b) 修补 "hive" 启动器脚本,以便它在非默认目录中选择特定的配置文件(通常通过在标准目录之前强制自定义目录来完成Hadoop CLASSPATH).
如果您的用户是黑客并且他们可以访问旧版 hive
CLI,他们可以自己覆盖配置文件,因此从技术上讲您无法强制执行 <final>
属性。但无论如何,如果有人能做到这一点,那么 he/she 可能会得到你的工作 ;-)
如何避免用户在提交 Hive 作业时覆盖默认的 hadoop 配置文件 属性?
示例:
mapred-site.xml:
<property>
<name>mapreduce.job.heap.memory-mb.ratio</name>
<value>0.8</value>
</property>
用户在配置单元作业 属性 下使用来覆盖
set mapreduce.job.heap.memory-mb.ratio=0.9
Configuration parameters may be declared final. Once a resource declares a value final, no subsequently-loaded resource can alter that value (...) Administrators typically define parameters as final in core-site.xml for values that user applications may not alter.
<property>
<name>dfs.hosts.include</name>
<value>/etc/hadoop/conf/hosts.include</value>
<final>true</final>
</property>
因此,如果您的用户通过 JDBC 连接,您只需修改一下配置即可。 HiveServer2 用来制作一些道具的文件 "final".
如果您的用户使用遗留 hive
CLI 连接,并且他们不是黑客,您只需要 (a) 修改 Hadoop 客户端的全局配置,或者 (b) 修补 "hive" 启动器脚本,以便它在非默认目录中选择特定的配置文件(通常通过在标准目录之前强制自定义目录来完成Hadoop CLASSPATH).
如果您的用户是黑客并且他们可以访问旧版 hive
CLI,他们可以自己覆盖配置文件,因此从技术上讲您无法强制执行 <final>
属性。但无论如何,如果有人能做到这一点,那么 he/she 可能会得到你的工作 ;-)