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