hdfs 文件未分发

Posted

技术标签:

【中文标题】hdfs 文件未分发【英文标题】:hdfs file is not distributed 【发布时间】:2022-01-10 12:46:48 【问题描述】:

我是 Hadoop 新手,我将配置 hadoop 集群。 Hadoop 的版本是 3.1.3。我想在hadoop102主机上设置NameNode、DataNode、NodeManager,在hadoop103主机上设置DataNode、ResourceNode、NodeManager,在hadoop104上设置SecondaryNameNode、DataNode、NodeManager

核心站点.xml

<configuration> 
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://hadoop102:8020</value> 
    </property> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/opt/module/hadoop-3.1.3/data</value> 
    </property> 

</configuration> 

hdfs-site.xml

<configuration> 
  <property> 
        <name>dfs.namenode.http-address</name> 
        <value>hadoop102:9870</value> 
    </property> 
    <property> 
        <name>dfs.namenode.secondary.http-address</name> 
        <value>hadoop104:9868</value> 
    </property> 
</configuration> 

yarn-site.xml

<configuration> 
    <property> 
        <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
    </property> 
 
    <property> 
        <name>yarn.resourcemanager.hostname</name> 
        <value>hadoop103</value> 
    </property> 

    <property> 
        <name>yarn.nodemanager.env-whitelist</name> 
        
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> 
    </property> 
</configuration> 

mapred-site.xml

<configuration> 
    <property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
    </property> 
</configuration> 

工人

hadoop102
hadoop103
hadoop104

我使用命令从主机hadoop102上传测试文件

hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

为什么文件只在 hadoop102 上可用?我觉得应该把文件拷贝到本地文件系统中的hadoop103、hadoop104中。

File Information

【问题讨论】:

您将复制因子设置为什么?你收到错误信息了吗? [ hdfs fsck / -files -blocks -racks ] 的输出是什么 文件不应复制到本地文件系统中。 HDFS 复制默认只有 1。另外,我建议 Apache Ambari 正确设置分布式、已配置的 Hadoop 集群 【参考方案1】:

你需要知道HDFS不像复制的文件系统,所以如果你把一个文件放到HDFS上并不意味着它会作为文件放在数据节点上(例如/文件系统下)。

HDFS 将文件分割成块,这些块被复制到您的集群上并由复制因子进行配置。 当您运行 -copyFromLocal 或 hdfs put 时,执行的只是将文件拆分为块并以复制方式发送这些块。

所以如果一个节点出现故障。您仍然可以检索您的文件。

但是我的文件呢?该文件不会在您机器的本地文件系统中。它将存储在数据节点上。

如何配置副本数? 您可以在 hdfs-site.xml 中将 dfs.replication 设置为 3

并且你为一个文件设置了副本数:

hadoop fs –setrep –w 3 /my/file

您可以更改目录下所有文件的复制因子。

hadoop fs –setrep –w 3 -R /my/dir

【讨论】:

以上是关于hdfs 文件未分发的主要内容,如果未能解决你的问题,请参考以下文章

hadoop mapreduce开发实践之HDFS文件分发by streaming

hadoop mapreduce开发实践之HDFS压缩文件(-cacheArchive)

Hadoop运行模式SSH无密登录配置生成公钥和私钥集群配置集群部署规划默认配置文件核心配置文件HDFS配置文件YARN配置文件MapReduce配置文件在集群上分发配置好的Had

面向异构Hadoop集群的HDFS中的数据放置和分发

如何恢复未释放租约的HDFS文件

未找到用于应用商店分发的配置文件