我目前正在尝试在本地文件系统上运行emr作业。对于emr,本地文件系统位于emr作业创建的ec2示例上。我遵循以下链接:在没有hdfs的情况下,是否可以在伪分布式操作中运行hadoop?
配置似乎很简单,设置 fs.default.name
在core-site.xml中 file:///
. 然后hadoop将在本地文件系统而不是hdfs上运行。
(我首先在本地机器(redhat)上用hadoop尝试了这个配置。设置时 fs.default.name
至 file:///
不起作用,但是 file://home/<username>/
使hadoop运行平稳。)
我通过在创建作业流时添加引导操作来更改此值。
./elastic-mapreduce --create --alive --subnet <subnet-id> --instance-type c3.2xlarge --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop --args "-c,fs.default.name=file:///"
遵循此emr文档:创建引导操作
引导操作总是成功的,日志说它总是在core-site.xml中成功地更改这个值。
但是hadoop总是在这个引导操作之后无法启动,这会导致以下错误:java.lang.illegalargumentexception:不包含有效的host:port authority:文件:///
我也试过了 fs.default.name=file://home/hadoop/
:java.net.unknownhostexception:服务器的主机名无效:home
或者, fs.default.name=file:///home/hadoop/
:java.lang.illegalargumentexception
或者, fs.default.name=file://127.0.0.1/home/hadoop/
:namenode日志文件甚至没有发出错误消息。它没有像其他错误一样关闭消息。它只是突然终止。
emr hadoop在本地文件系统上工作吗?如何配置它来执行此操作?
1条答案
按热度按时间utugiqy61#
我认为这里的关键点是在本地文件系统上运行hadoop在单节点集群上运行良好,emr是一个完全分布式的hadoop集群。看看这篇关于fs.default.name及其用法的文章。