Hadoop 引导中设置的环境变量在AWS EMR中无效
我正在引导代码中设置环境变量Hadoop 引导中设置的环境变量在AWS EMR中无效,hadoop,amazon-web-services,environment-variables,bootstrapping,emr,Hadoop,Amazon Web Services,Environment Variables,Bootstrapping,Emr,我正在引导代码中设置环境变量 export HADOOP_HOME=/home/hadoop export HADOOP_CMD=/home/hadoop/bin/hadoop export HADOOP_STREAMING=/home/hadoop/contrib/streaming/hadoop_streaming.jar export JAVA_HOME=/usr/lib64/jvm/java-7-oracle/ 然后使用上面定义的一个变量- $HADOOP_CMD fs -mkdir
export HADOOP_HOME=/home/hadoop
export HADOOP_CMD=/home/hadoop/bin/hadoop
export HADOOP_STREAMING=/home/hadoop/contrib/streaming/hadoop_streaming.jar
export JAVA_HOME=/usr/lib64/jvm/java-7-oracle/
然后使用上面定义的一个变量-
$HADOOP_CMD fs -mkdir /home/hadoop/contents
$HADOOP_CMD fs -put /home/hadoop/contents/* /home/hadoop/contents/
执行失败,并显示错误消息-
/mnt/var/lib/bootstrap-actions/2/cycle0_unix.sh: line 3: fs: command not found
/mnt/var/lib/bootstrap-actions/2/cycle0_unix.sh: line 4: fs: command not found
cycle0.sh是我的引导脚本的名称
对这里发生的事情有什么评论吗?我找到了解决问题的正确方法。我尝试使用
hadoop fs
命令将数据文件从S3复制到EMR,但没有成功。我刚刚了解了EMR中用于文件传输的S3DistCp
命令,因此我跳过了$HADOOP\u CMD
方法。对于那些关心S3DistCp
如何工作的人。我仍然不明白为什么引导脚本在后续语句中不接受环境变量。我认为您不需要环境变量。换衣服
fs
到
回到问题的主题,环境变量似乎不能从任何引导代码中设置,它们只能从必须命名的脚本中设置或更新
hadoop-user-env.sh
详情如下:
要使用分类配置此类特定于Spark(和其他)的环境变量,请参阅
另一个(相当肮脏的)选项是在引导操作中使用一些
export FOO=bar
来丰富bashrc
。在我看来,您的$HADOOP\u CMD没有被设置。。可能还有其他变量。你能先做一个echo$HADOOP_CMD来排除这个问题吗?@user1452132,在运行完整的引导代码之前,我无法检查。如果我删除以$HADOOP\u CMD开头的两行代码,那么引导会成功完成,并且会显示echo$HADOOP\u CMD。在引导结束之前,变量似乎不会设置。这并不是问题的答案,您只是用了不同的方法,但这并不能解决环境变量问题。
hadoop-user-env.sh