Secondarynamenode無法正常備份:ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint


     

      原先使用hadoop默認設置(hadoop1.2.1),secondarynamenode會正常進行備份,定時從namenode拷貝image文件到SNN。但是具體SNN備份的時間周期和log文件的大小無法定制,后來樓主就修改了SNN的設置,將fs.checkpoint.period修改為3600s,fs.checkpoint.size修改為64兆。在core-site.xml配置文件中添加這兩個參數之后,卻發現SNN總是無法備份。后來google查找發現還是配置文件沒有配置完整造成的,修改配置文件core-site.xml 和hdfs-site.xml文件后問題解決。

貼一下這兩個文件內容:

core-site.xml:

1
<!-- ****************************************************************************************--> 2 <!-- This file only used in secondnamenode!!--> 3 <!-- ****************************************************************************************--> 4 5 <configuration> 6 7 <property> 8 <name>hadoop.tmp.dir</name> 9 <value>/bigdata/hadoop/tmp/</value> 10 <description>A base for other temporary directories.</description> 11 </property> 12 13 <property> 14 <name>fs.default.name</name> 15 <value>hdfs://namenode:54310</value> 16 </property> 17 18 <property> 19 <name>fs.checkpoint.period</name> 20 <value>3600</value> 21 <description>The number of seconds between two periodic checkpoints. </description> 22 </property> 23 24 <property> 25 <name>fs.checkpoint.size</name> 26 <value>67108864</value> 27 <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't 28 expired. </description> 29 </property> 30 31 32 <property> 33 <name>fs.checkpoint.dir</name> 34 <value>/bigdata/hadoop/namesecondary/</value> 35 </property> 36 </configuration>
hdfs-site.xml

1
<!-- ****************************************************************************************--> 2 <!-- This file only used in secondnamenode!!--> 3 <!-- ****************************************************************************************--> 4 5 <configuration> 6 7 8 <property> 9 <name>fs.checkpoint.period</name> 10 <value>3600</value> 11 <description>The number of seconds between two periodic checkpoints. </description> 12 </property> 13 14 15 <property> 16 <name>dfs.secondary.http.address</name> 17 <value>secondnamenode:50090</value> 18 </property> 19 20 21 <property> 22 <name>dfs.http.address</name> 23 <value>namenode:50070</value> 24 <final>true</final> 25 </property> 26 27 28 <property> 29 <name>dfs.replication</name> 30 <value>2</value> 31 </property> 32 33 <property> 34 <name>dfs.name.dir</name> 35 <value>/bigdata/hadoop/secondnamenodelogs/</value> 36 </property>
......

      其中紅色部分為關鍵參數。樓主剛開始以為hdfs-site.xml不需要做修改,后來發現問題主要是出現在這個文件中,真是坑爹@!!!

在hdfs-site.xml文件中需要加上core-site.xml文件中的參數fs.checkpoint.period 或者fs.checkpoint.size;dfs.http.address指定namenode的訪問地址,SNN根據這個地址來獲取NN保存的image。dfs.secondary.http.address則是SNN自己Web接口,這個參數必須配置,樓主就是因為沒有配置這個參數一直報下面這個錯誤:

 1 2014-06-25 14:17:40,408 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint:
 2 2014-06-25 14:17:40,408 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: java.io.FileNotFoundException: http://namenode:50070/
 3 getimage?putimage=1&port=50090&machine=0.0.0.0&token=-41:620270652:0:1403579817000:1403578915285&newChecksum=7fcdd4793ce44f017d290e7db78870e7
 4         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1434)
 5         at org.apache.hadoop.hdfs.server.namenode.TransferFsImage.getFileClient(TransferFsImage.java:177)
 6         at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.putFSImage(SecondaryNameNode.java:462)
 7         at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:525)
 8         at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:396)
 9         at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:360)
10         at java.lang.Thread.run(Thread.java:662)



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM