在引导中设置的环境变量在aws emr中不起作用

ekqde3dh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(545)

我正在引导代码中设置一个环境变量

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是我的引导脚本的名称。
对这里发生的事情有什么评论吗?

c0vxltue

c0vxltue1#

我想你不需要环境变量。只要改变

fs

hadoopfs
1tu0hz3e

1tu0hz3e2#

使用分类配置此类特定于spark(和其他)的环境变量,请参阅https://docs.aws.amazon.com/emr/latest/releaseguide/emr-configure-apps.html
另一个(相当肮脏的)选择是充实 bashrc 用一些 export FOO=bar 在引导操作中。

y53ybaqx

y53ybaqx3#

我找到了解决我问题的适当办法。我尝试使用 hadoop fs 命令是徒劳的。我刚刚了解到 S3DistCp 命令在emr中可用于文件传输,因此我跳过 $HADOOP_CMD 方法。对于那些关心 S3DistCp aws emr文件的works链接。我仍然不明白为什么引导脚本在随后的语句中不接受环境变量。

wnrlj8wa

wnrlj8wa4#

回到问题的主题,似乎环境变量不能从任何引导代码中设置,它们只能从必须命名的脚本中设置或更新

hadoop-user-env.sh

更多详情请参见:http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/emr-hadoop-config_hadoop-user-env.sh.html

相关问题