1.修改 conf/core-site.xml,增加
Xml代码
fs.checkpoint.period表示多长时间记录一次hdfs的镜像。默认是1小时。 2.修改 conf/hdfs-site.xml,增加
Xml代码
3.重启hadoop,然后检查是否启动是否成功。 登录secondarynamenode所在的机器,输入jps查看secondarynamenode进程 进入secondarynamenode的目录/data/work/hdfs/namesecondary 正确的结果: 如果没有,请耐心等待,只有到了设置的checkpoint的时间或者大小,才会生成。 4.恢复 制造namenode宕机的情况 1) kill 掉namenode的进程
Java代码
Java代码
3)从secondarynamenode远程拷贝namesecondary文件到namenode的namesecondary
Java代码
Java代码
5)检查 使用hadoop fsck /user命令检查文件Block的完整性 6)停止namenode,使用crrl+C或者会话结束 7)删除namesecondary目录下的文件(保存干净)
Java代码
Java代码
balancer 在使用start-balancer.sh时, 默认使用1M/S(1048576)的速度移动数据(so slowly...) 修改hdfs-site.xml配置,这里我们使用的是20m/S <property> <name>dfs.balance.bandwidthPerSec</name> <value>20971520</value> <description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> </property> 然后结果是导致job运行变得不稳定,出现一些意外的长map单元,某些reduce时间处理变长(整个集群负载满满的情况下,外加20m/s的balance),据说淘宝的为10m/s,需要调整后实验,看看情况如何。
Java代码
有两个方法离开这种安全模式: (1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。 dfs.safemode.threshold.pct(缺省值0.999f) HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。 (2)hadoop dfsadmin -safemode leave命令强制离开 dfsadmin -safemode value 参数value的说明: enter - 进入安全模式 leave - 强制NameNode离开安全模式 get - 返回安全模式是否开启的信息 wait - 等待,一直到安全模式结束。 附:namenode与secondaryNamenode的联系
NameNode将对文件系统的改动追加保存到本地文件系统上的一个日志文件(edits)。当一个NameNode启动时,它首先从一个映像文件(fsimage)中读取HDFS的状态,接着应用日志文件中的edits操作。然后它将新的HDFS状态写入(fsimage)中,并使用一个空的 edits文件开始正常操作。因为NameNode只有在启动阶段才合并fsimage和edits,所以一段时间后日志文件可能会变得非常庞大,特别是对大型的集群。日志文件太大的另一个副作用是下一次NameNode启动会花很长时间。 (责任编辑:IT) |