Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 每次重新启动群集时HDFS中的文件都无法访问?_Hadoop_Hdfs - Fatal编程技术网

Hadoop 每次重新启动群集时HDFS中的文件都无法访问?

Hadoop 每次重新启动群集时HDFS中的文件都无法访问?,hadoop,hdfs,Hadoop,Hdfs,我刚刚配置了一个克隆hadoop版本2.7.3,我加载的数据大小从1 g到20 go,我使用这些数据(可以操纵它们…),但当我重新启动集群时,这些数据将无法访问。 我将收到以下信息: 警告:大约有xx个块丢失。请检查日志或运行fsck,这意味着HDFS安装中的某些块在任何活动数据节点上都没有单个副本。 以下是hdfs-site.xml: <configuration> <property> <name>dfs.namenode.name

我刚刚配置了一个克隆hadoop版本2.7.3,我加载的数据大小从1 g到20 go,我使用这些数据(可以操纵它们…),但当我重新启动集群时,这些数据将无法访问。 我将收到以下信息: 警告:大约有xx个块丢失。请检查日志或运行fsck,这意味着HDFS安装中的某些块在任何活动数据节点上都没有单个副本。 以下是hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/hduser/hadoop-2.7.3/namenode</value>
        <description>NameNode directory for namespace and transaction logs storage.</description>
    </property>
   <property>
    <name>dfs.safemode.threshold.pct</name>
    <value>0</value>
   </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.datanode.use.datanode.hostname</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
    </property>
    <property>
         <name>dfs.namenode.http-address</name>
         <value>node1:50070</value>
         <description>Your NameNode hostname for http access.</description>
    </property>
    <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>node1:50090</value>
         <description>Your Secondary NameNode hostname for http access.</description>
    </property>
</configuration>

dfs.namenode.name.dir
file:///home/hduser/hadoop-2.7.3/namenode
名称空间和事务日志存储的名称节点目录。
dfs.safemode.threshold.pct
0
dfs.replication
1.
dfs.0权限
假的
dfs.datanode.use.datanode.hostname
假的
dfs.namenode.datanode.registration.ip-hostname-check
假的
dfs.namenode.http-address
节点1:50070
用于http访问的NameNode主机名。
dfs.namenode.secondary.http-address
节点1:50090
用于http访问的辅助名称节点主机名。

属性
dfs.datanode.data.dir
的默认值是
${hadoop.tmp.dir}/dfs/data
hadoop.tmp.dir
/tmp
,它会在重新启动时被清除,因此所有的块都会丢失

必须将此属性添加到所有数据节点中的
hdfs site.xml

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///home/hduser/hadoop-2.7.3/datanode</value>
</property>

dfs.datanode.data.dir
file:///home/hduser/hadoop-2.7.3/datanode

属性
dfs.datanode.data.dir
的默认值是
${hadoop.tmp.dir}/dfs/data
hadoop.tmp.dir
/tmp
,它会在重新启动时被清除,因此所有的块都会丢失

必须将此属性添加到所有数据节点中的
hdfs site.xml

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///home/hduser/hadoop-2.7.3/datanode</value>
</property>

dfs.datanode.data.dir
file:///home/hduser/hadoop-2.7.3/datanode

您运行时没有复制。这意味着,如果任何DataNode发生故障,将有损坏的文件(丢失的块)。这是测试配置吗?您正在运行多个DataNodes吗?是的,我只用于多个DataNodes,我只是将复制参数设置为3,但它不起作用,当我重新启动群集时,此数据不可访问。您可能还需要将safemode.threshold配置为更高的值(默认值为0.99)。我的猜测是,在重新启动期间,DataNodes没有使用NameNode签入,并且由于禁用了安全模式,因此会出现丢失的块错误。感谢您的建议,您可以给我一个值以在安全模式参数中设置。我会尝试在没有复制的情况下运行的默认值(0.99)。这意味着,如果任何DataNode发生故障,将有损坏的文件(丢失的块)。这是测试配置吗?您正在运行多个DataNodes吗?是的,我只用于多个DataNodes,我只是将复制参数设置为3,但它不起作用,当我重新启动群集时,此数据不可访问。您可能还需要将safemode.threshold配置为更高的值(默认值为0.99)。我猜在重新启动期间,DataNodes没有使用NameNode签入,并且由于禁用了safemode,因此会出现丢失的块错误。感谢您的建议,您可以给我一个值以在安全模式参数中设置。我会尝试默认值(0.99)