paulwong

          配置secondarynamenode

          NAME NODE起保存DATA NODE上文件的位置信息用,主要有兩個(gè)保存文件:FsImage和EditLog,F(xiàn)sImage保存了上一次NAME NODE啟動(dòng)時(shí)的狀態(tài),EditLog則記錄每次成功后的對(duì)HDFS的操作行為。當(dāng)NAME NODE重啟時(shí),會(huì)合并FsImage和EditLog成為一個(gè)新的FsImage,清空EditLog,如果EditLog非常大的時(shí)候,則NAME NODE啟動(dòng)的時(shí)間會(huì)非常長。因此就有SECOND NAME NODE。


          SECOND NAME NODE會(huì)以HTTP的方式向NAME NODE要這兩個(gè)文件,當(dāng)NAME NODE收到請(qǐng)求時(shí),就會(huì)韋一個(gè)新的EditLog來記錄,這時(shí)SECOND NAME NODE就會(huì)將取得的這兩個(gè)文件合并,成一個(gè)新的FsImage,再發(fā)給NAME NODE,NAME NODE收到后,就會(huì)以這個(gè)為準(zhǔn),舊的就會(huì)歸檔不用。


          SECOND NAME NODE還有一個(gè)用途就是當(dāng)NAME NODE DOWN了的時(shí)候,可以改SECOND NAME NODE的IP為NAME NODE所用的IP,當(dāng)NAME NODE用。

          secondary namenoded 配置很容易被忽視,如果jps檢查都正常,大家通常不會(huì)太關(guān)心,除非namenode發(fā)生問題的時(shí)候,才會(huì)想起還有個(gè)secondary namenode,它的配置共兩步:

          1. 集群配置文件conf/master中添加secondarynamenode的機(jī)器
          2. 修改/添加 hdfs-site.xml中如下屬性:

          <property>
           <name>dfs.http.address</name>
           <value>{your_namenode_ip}:50070</value>
           <description>
           The address and the base port where the dfs namenode web ui will listen on.
           If the port is 0 then the server will start on a free port.
           </description>
           </property>


          這兩項(xiàng)配置OK后,啟動(dòng)集群。進(jìn)入secondary namenode 機(jī)器,檢查fs.checkpoint.dir(core-site.xml文件,默認(rèn)為${hadoop.tmp.dir}/dfs/namesecondary)目錄同步狀態(tài)是否和namenode一致的。

          如果不配置第二項(xiàng)則,secondary namenode同步文件夾永遠(yuǎn)為空,這時(shí)查看secondary namenode的log顯示錯(cuò)誤為:


          2011-06-09 11:06:41,430 INFO org.apache.hadoop.hdfs.server.common.Storage: Recovering storage directory /tmp/hadoop-hadoop/dfs/namesecondary from failed checkpoint.
          2011-06-09 11:06:41,433 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint: 
          2011-06-09 11:06:41,434 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: java.net.ConnectException: Connection refused
          at java.net.PlainSocketImpl.socketConnect(Native Method)
          at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
          at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:211)
          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
          at java.net.Socket.connect(Socket.java:529)
          at java.net.Socket.connect(Socket.java:478)
          at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
          at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
          at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
          at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
          at sun.net.www.http.HttpClient.New(HttpClient.java:306)
          at sun.net.www.http.HttpClient.New(HttpClient.java:323)
          at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
          at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
          at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
          at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
          at org.apache.hadoop.hdfs.server.namenode.TransferFsImage.getFileClient(TransferFsImage.java:151)
          at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.downloadCheckpointFiles(SecondaryNameNode.java:256)
          at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:313)
          at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:225)
          at java.lang.Thread.run(Thread.java:662)


          可能用到的core-site.xml文件相關(guān)屬性

          <property>
          <name>fs.checkpoint.period</name>
          <value>300</value>
          <description>The number of seconds between two periodic checkpoints.
          </description>
          </property>

          <property>
           <name>fs.checkpoint.dir</name>
           <value>${hadoop.tmp.dir}/dfs/namesecondary</value>
           <description>Determines where on the local filesystem the DFS secondary
           name node should store the temporary images to merge.
           If this is a comma-delimited list of directories then the image is
           replicated in all of the directories for redundancy.
           </description>
          </property>

          posted on 2013-01-31 17:39 paulwong 閱讀(343) 評(píng)論(0)  編輯  收藏 所屬分類: 分布式HADOOP云計(jì)算

          主站蜘蛛池模板: 兴海县| 盐山县| 甘德县| 马尔康县| 霸州市| 鹤山市| 屏东市| 桂阳县| 循化| 龙陵县| 莆田市| 南丰县| 武鸣县| 宁南县| 安岳县| 平阴县| 东乌珠穆沁旗| 城固县| 沾化县| 吴旗县| 阳江市| 广东省| 开原市| 饶阳县| 曲水县| 北碚区| 芜湖县| 密山市| 剑河县| 伊春市| 合川市| 阿勒泰市| 盐池县| 荆门市| 伊宁县| 屯留县| 双鸭山市| 武胜县| 武功县| 榆林市| 应用必备|