我的家園

          我的家園

          Hadoop使用常見問題以及解決方法3

          Posted on 2012-04-15 16:37 zljpp 閱讀(393) 評論(0)  編輯  收藏

          單個node新加硬盤
          1.修改需要新加硬盤的node的dfs.data.dir,用逗號分隔新、舊文件目錄
          2.重啟dfs

          同步hadoop 代碼
          hadoop-env.sh
          # host:path where hadoop code should be rsync'd from.  Unset by default.
          # export HADOOP_MASTER=master:/home/$USER/src/hadoop

          用命令合并HDFS小文件
          hadoop fs -getmerge <src> <dest>

          重啟reduce job方法
          Introduced recovery of jobs when JobTracker restarts. This facility is off by default.
          Introduced config parameters "mapred.jobtracker.restart.recover", "mapred.jobtracker.job.history.block.size", and "mapred.jobtracker.job.history.buffer.size".
          還未驗證過。

          IO寫操作出現問題
          0-1246359584298, infoPort=50075, ipcPort=50020):Got exception while serving blk_-5911099437886836280_1292 to /172.16.100.165:
          java.net.SocketTimeoutException: 480000 millis timeout while waiting for channel to be ready for write. ch : java.nio.channels.SocketChannel[connected local=/
          172.16.100.165:50010 remote=/172.16.100.165:50930]
                  at org.apache.hadoop.net.SocketIOWithTimeout.waitForIO(SocketIOWithTimeout.java:185)
                  at org.apache.hadoop.net.SocketOutputStream.waitForWritable(SocketOutputStream.java:159)
                  at org.apache.hadoop.net.SocketOutputStream.transferToFully(SocketOutputStream.java:198)
                  at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:293)
                  at org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:387)
                  at org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:179)
                  at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:94)
                  at java.lang.Thread.run(Thread.java:619)

          It seems there are many reasons that it can timeout, the example given in
          HADOOP-3831 is a slow reading client.

          解決辦法:在hadoop-site.xml中設置dfs.datanode.socket.write.timeout=0試試;
          My understanding is that this issue should be fixed in Hadoop 0.19.1 so that
          we should leave the standard timeout. However until then this can help
          resolve issues like the one you're seeing.

          HDFS退服節點的方法
          目前版本的dfsadmin的幫助信息是沒寫清楚的,已經file了一個bug了,正確的方法如下:
          1. 將 dfs.hosts 置為當前的 slaves,文件名用完整路徑,注意,列表中的節點主機名要用大名,即 uname -n 可以得到的那個。
          2. 將 slaves 中要被退服的節點的全名列表放在另一個文件里,如 slaves.ex,使用 dfs.host.exclude 參數指向這個文件的完整路徑
          3. 運行命令 bin/hadoop dfsadmin -refreshNodes
          4. web界面或 bin/hadoop dfsadmin -report 可以看到退服節點的狀態是 Decomission in progress,直到需要復制的數據復制完成為止
          5. 完成之后,從 slaves 里(指 dfs.hosts 指向的文件)去掉已經退服的節點

          附帶說一下 -refreshNodes 命令的另外三種用途:
          2. 添加允許的節點到列表中(添加主機名到 dfs.hosts 里來)
          3. 直接去掉節點,不做數據副本備份(在 dfs.hosts 里去掉主機名)
          4. 退服的逆操作——停止 exclude 里面和 dfs.hosts 里面都有的,正在進行 decomission 的節點的退服,也就是把 Decomission in progress 的節點重新變為 Normal (在 web 界面叫 in service)


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 德钦县| 大庆市| 海盐县| 无为县| 阳信县| 庆元县| 罗城| 疏勒县| 沂源县| 城步| 厦门市| 周宁县| 北碚区| 盐池县| 大厂| 灵宝市| 南部县| 新龙县| 日喀则市| 布尔津县| 涿鹿县| 无为县| 屯留县| 阳高县| 阿勒泰市| 阳春市| 余江县| 崇信县| 英山县| 宁远县| 托克托县| 克什克腾旗| 石景山区| 满城县| 忻州市| 九台市| 大关县| 公主岭市| 阳江市| 马公市| 阿瓦提县|