我正在引导代码中设置一个环境变量
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是我的引导脚本的名称。
对这里发生的事情有什么评论吗?
4条答案
按热度按时间c0vxltue1#
我想你不需要环境变量。只要改变
到
1tu0hz3e2#
使用分类配置此类特定于spark(和其他)的环境变量,请参阅https://docs.aws.amazon.com/emr/latest/releaseguide/emr-configure-apps.html
另一个(相当肮脏的)选择是充实
bashrc
用一些export FOO=bar
在引导操作中。y53ybaqx3#
我找到了解决我问题的适当办法。我尝试使用
hadoop fs
命令是徒劳的。我刚刚了解到S3DistCp
命令在emr中可用于文件传输,因此我跳过$HADOOP_CMD
方法。对于那些关心S3DistCp
aws emr文件的works链接。我仍然不明白为什么引导脚本在随后的语句中不接受环境变量。wnrlj8wa4#
回到问题的主题,似乎环境变量不能从任何引导代码中设置,它们只能从必须命名的脚本中设置或更新
更多详情请参见:http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/emr-hadoop-config_hadoop-user-env.sh.html