我目前正在尝试在本地文件系统上运行EMR作业。对于EMR,本地文件系统位于创建EMR作业的EC2实例上。我点了这个链接:Is it possible to run Hadoop in Pseudo-Distributed operation without HDFS?
配置看起来很简单,将core-site.xml中的fs.default.name
设置为file:///
。然后Hadoop将在本地文件系统而不是HDFS上运行。
(我首先在我的本地计算机上使用Hadoop尝试了这个配置(Redhat)。将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文档:Create Bootstrap Actions
引导操作总是成功,日志说它总是在core-site.xml中成功更改此值。
但是,在这个引导动作之后,hadoop总是无法启动,这给了我这个错误: java.lang.IllegalArgumentException:不包含有效的host:port authority:file:///
我也试过fs.default.name=file://home/hadoop/
:
java.net.UnknownHostException:server:home
或者,fs.default.name=file:///home/hadoop/
:
java.lang.IllegalArgumentException异常
或者,fs.default.name=file://127.0.0.1/home/hadoop/
:
namenode日志文件甚至没有给出错误消息。它没有SHUT_DOWN消息作为其他错误。它突然终止了。
EMR hadoop是否在本地文件系统上工作?你如何配置它呢?
答案 0 :(得分:1)
我认为关键点是在本地文件系统上运行Hadoop在单节点集群上运行良好,而 EMR是完全分布式Hadoop集群。请查看有关fs.default.name及其用法的this帖子。