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



我有一个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,关闭集群

谢谢!

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

使用Amazon S3进行存储提供了几个好处

  • 无限制存储(而HDFS是集群中的固定大小)
  • 持久数据存储(而HDFS中的数据在AmazonEMR集群终止时会丢失)
  • 更容易与其他知道如何读/写AmazonS3的系统集成

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

CREATE EXTERNAL TABLE orders_s3_export 
( order_id string, customer_id string, order_date int, total double ) 
PARTITIONED BY (year string, month string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' 
LOCATION 's3://us-west-2-aws-training/awsu-ilt/big-data/v2.0/data/lab1/data/ddb-orders';

当在该表上运行SELECT命令时,Hive将自动在AmazonS3中查找数据文件。类似地,当数据被插入到表中时,它将被存储在AmazonS3上的文件中(这有利于Hive作业的最终输出)。

请参阅:亚马逊电子病历中Hive的其他功能

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

请参阅:使用Apache Spark 读取和写入S3数据

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

如下所述:https://aws.amazon.com/premiumsupport/knowledge-center/bootstrap-step-emr/引导操作是在提供AmazonEMR集群并从STARTING集群状态转换为BOOTSTRAPPING集群状态后运行的第一件事。

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

最新更新