天天看点

Warning: $HADOOP_HOME is deprecated.的原因以及解决方法

今天把hadoop从0.20.2版本升级到1.2.1版本之后,在很多时候都会报如下警告:warning: $hadoop_home is deprecated.

        其实我刚看到这个警告的时候,第一反应并不是怎么屏蔽掉它,而是想知道apache为什么准备废弃掉hadoop_home这个环境变量,因为我们知道,后面好多地方都会用到这个环境变量。

        在google上搜到的结果都是关于如何屏蔽掉这个警告的,据说这个警告会影响到后面hive程序的执行,没有人解释官方为什么会给这么一个警告,所以就专门写一篇博客来替官方解释一下。

         due to a new packaging format, the apachehadoop 1.x hasdeprecated

         the hadoop_home env-var in favor of a new env-var called

         'hadoop_prefix'. you can sethadoop_prefix, or set

         hadoop_home_warn_suppress in your environment to a non-empty value to

         suppress the warning.

        里面提到了从1.x版本起,hadoop_home环境变量由hadoop_prefix这个环境变量替代。在1.2.1版本的所有配置文件里我搜索“hadoop_prefix”的结果如下:

Warning: $HADOOP_HOME is deprecated.的原因以及解决方法

        由这些结果可以看出来,新版本已经用hadoop_prefix这个环境变量替代hadoop_home了。

解决办法:

        1、在conf/hadoop-env.sh中加入(本人测试只有在hadoop-env.sh中加入才有效,在/etc/profile、~/.bashrc等中加入均无效,不知什么原因,如果哪位朋友知道希望不吝赐教):

              export hadoop_home_warn_suppress=1

              还有其他人选择将bin/hadoop-config.sh中的相关提示代码注释掉,但本人不建议这样做。

        2、用环境变量hadoop_prefix替代hadoop_home,但本人建议保留hadoop_home,因为pig和hive程序中或许会用到这个环境变量。