本地文件系统上的 Hadoop

标签 hadoop filesystems hdfs

我在伪分布式上运行 Hadoop。我想通过为我的工作抽象 HDFS 从本地文件系统读取和写入。我正在使用 file:/// 参数。 我关注了this link.

这是core-site.xml的文件内容,

<configuration>
 <property>
  <name>hadoop.tmp.dir</name>
  <value> /home/abimanyu/temp</value>   
 </property>

 <property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
 </property>

</configuration>

这是mapred-site.xml的文件内容,

<configuration>

 <property>
  <name>mapred.job.tracker</name>
  <value>localhost:54311</value>
 </property>

 <property>
    <name>fs.default.name</name>
    <value>file:///</value>
 </property>

 <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>1</value>
 </property>

 <property>
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>1</value>
 </property>

</configuration>

这是hdfs-site.xml的文件内容,

<configuration>

 <property>
  <name>dfs.replication</name>
  <value>1</value>
 </property>
</configuration>

这是我尝试启动恶魔时遇到的错误(使用 start-dfs 或 start-all),

localhost: Exception in thread "main" java.lang.IllegalArgumentException: Does not contain a valid host:port authority: file:///
localhost:      at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:164)
localhost:      at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:212)
localhost:      at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:244)
localhost:      at org.apache.hadoop.hdfs.server.namenode.NameNode.getServiceAddress(NameNode.java:236)
localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:194)
localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:150)
localhost:      at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:676)

令我感到奇怪的是,这种从本地文件系统读取的操作在 hadoop-0.20.2 中完全正常,但在 hadoop-1.2.1 中却不行。从最初的版本到后来的版本有什么变化吗?让我知道如何从本地文件系统读取 Hadoop JAR。

最佳答案

您可以从 mapred-site.xml 文件中删除 fs.default.name 值 - 这应该只在 core-site.xml 文件中。

如果您想在本地文件系统上以伪模式运行,这通常通过以所谓的本地模式运行来实现——通过将 core-site.xml 中的 fs.default.name 值设置为文件:///(您当前已为 hdfs://localhost:54310 配置它)。

您看到的堆栈跟踪是在辅助名称节点启动时 - 在“本地模式”下运行时不需要这样做,因为没有供 2NN 使用的 fsimage 或编辑文件。

修复您的 core-site.xml 和 mapred-site.xml。停止所有 hadoop 守护进程并启动 map-reduce 守护进程(Job Tracker 和 Task Tracker)。

关于本地文件系统上的 Hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157502/

相关文章:

performance - Hive:是否有更好的方法对列进行百分位排名?

windows - 在 Windows 中获取安全的临时文件夹

c# - Windows 不变文化之谜

hadoop - putHDFS处理器中的Nifi错误:无法确定当前用户

linux - 如何编辑 HDFS 组?

java - 使用Hive JDBC连接的Hive ACID事务属性

xml - 在 Hive 中使用 XMLSerDe 进行 XML 文件配对的问题

linux - 如何完全更改每个 Hadoop DataNode 上的底层磁盘?

c - 后台文件索引器(Windows、*Nix、跨平台)

hadoop - 生产级配置单元和Sqoop配置