在引导操作中找不到Hadoop命令

时间:2016-04-15 13:30:58

标签: hadoop emr amazon-emr

我有一个EMR集群,它使用来自我的s3的script.sh作为引导动作。在此,它包含一些hadoop dfs -distcphadoop dfs -copyToLocal命令。如果我登录到构建的EMR集群并运行命令,它绝对没问题,但是如果我尝试将其作为引导操作的一部分,则它会失败。记录文件:

You are using pip version 6.1.1, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
/mnt/var/lib/bootstrap-actions/1/setup.sh: line 4: hadoop: command not found
/mnt/var/lib/bootstrap-actions/1/setup.sh: line 7: hdfs: command not found
/mnt/var/lib/bootstrap-actions/1/setup.sh: line 8: hadoop: command not found`

我认为这意味着hadoop可执行文件尚未加载,但如果是这样,我该如何延迟?我试图做的一系列动作是启动EMR集群,自动从s3获取数据,执行分析,生成输出,将输出复制回s3,关闭集群

谢谢!

2 个答案:

答案 0 :(得分:0)

虽然传统的Hadoop集群将数据存储在 HDFS (Hadoop分布式文件系统)中,但建议Amazon EMR集群将其源数据和最终输出存储在 Amazon S3 中。

使用Amazon S3进行存储可提供好处

  • 无限存储(而HDFS是群集中的固定大小)
  • 持久数据存储(当终止Amazon EMR集群时,HDFS中的数据丢失)
  • 更容易与知道如何读取/写入Amazon S3的其他系统集成

许多Hadoop服务可以与Amazon S3本地交互,而不是通过引导操作从Amazon S3加载数据。例如,这是一个 Hive 命令,它根据已存储在Amazon S3中的数据创建表:

master

当在此表上运行test.png命令时,Hive将自动在Amazon S3中查找数据文件。同样,当数据插入表中时,它将存储在Amazon S3上的文件中(这对Hive作业的最终输出有利)。

请参阅:Additional Features of Hive in Amazon EMR

Spark还可以直接从Amazon S3访问数据。

请参阅:Reading and Writing S3 Data with Apache Spark

答案 1 :(得分:0)

你说得对,hadoop可执行文件尚未在执行引导操作时加载。

如此处所述:https://aws.amazon.com/premiumsupport/knowledge-center/bootstrap-step-emr/引导操作是在配置Amazon EMR集群并从STARTING集群状态转换为BOOTSTRAPPING集群状态后首先运行的。

为了能够执行命令,您需要使用步骤。