2012-04-15 56 views
5

我正在運行使用hadoop版本1.0.1和Ubuntu linux 11.10的單節點集羣。當它崩潰時,我正在運行一個簡單的腳本,可能是因爲我的電腦進入了睡眠狀態。我試圖重新使用如何在hadoop崩潰後格式化和添加文件?

斌/ Hadoop的NameNode的文件系統-format

,並得到了以下錯誤:

錯誤namenode.NameNode:產生java.io.IOException:無法鎖定存儲/程序/ Hadoop的的/ tmp/DFS /名稱。該目錄已被鎖定。在org.apache.hadoop.hdfs.server.common.Storage $ StorageDirectory.lock(Storage.java:602)

我嘗試使用下面的命令來添加輸入文件:

斌/ Hadoop的FS -copyFromLocal DataDirectory目錄/ * TXT inputDirectory

並且得到錯誤:

15年12月4日9時05分21秒WARN hdfs.DFSClient:DataStreamer異常:org.apache.hadoop.ipc.RemoteException:java.io .IOException:文件/home/hduser/input/book1.txt只能複製到0個節點,而不是1個

12/04/15 09:05:21 WARN hdfs.DFSClient:錯誤恢復block null壞datanode [0]節點== null 12/04/15 09:05:21 WARN hdfs.DFSClient:無法獲取塊地點。源文件「/home/hduser/input/book1.txt」 - 正在中止...

之後,我看到輸入目錄中的文件,但它們的大小爲0.關於如何添加文件的任何想法?我能夠在hadoop崩潰之前添加文件,所以我可以重新安裝linux和hadoop,但它看起來像是過度殺傷。謝謝。

回答

3
  1. 嘗試手動刪除存儲namenode數據的目錄。這由mapred-site.xml中的屬性配置,如mapred.local.dir,mapred.system.dir等。之後,停止hadoop,重新格式化namenode並重試。如果仍然遇到問題,則轉到步驟2

  2. 嘗試將namenode配置設置爲某些其他路徑而不是當前路徑。之後,停止hadoop,重新格式化namenode並重試。如果仍然遇到問題,則轉到步驟3

  3. 驗證是否存在足夠的磁盤空間。如果沒有,那麼在配置namenode的分區中創建一些空間。如果仍然面臨問題,則轉到步驟4

  4. hdfs.site.xml中,將dfs.replication設置爲0.之後,停止hadoop,重新格式化namenode並重試。

如果仍然遇到問題,請讓我知道你的錯誤/異常。

+0

謝謝,Tejas的,但現在我甚至無法連接到本地主機,甚至是測試SSH之後。這是極端的,但我重新安裝Linux。 – user1106278 2012-04-16 23:54:44

+0

你會得到什麼錯誤? – 2012-04-17 01:57:52

+0

這對我有用,除了我必須在hdfs-site.xml文件中設置dfs.name.dir和dfs.data.dir。我不確定爲什麼它沒有工作,因爲沒有分區接近滿。 – MikeKulls 2013-10-22 05:09:26

2

我以前遇到過這樣的問題,對我來說是因爲我的磁盤分區已滿。所以我建議你檢查你的磁盤,看看它是否相關。

如果是這種情況,只需釋放一些空間,重新啓動守護進程(您可能必須手動殺死它,有時會發生這種情況),然後重新啓動。

+0

謝謝,鏈接器。 – user1106278 2012-04-16 23:55:44

5

你需要先使用

斌停止Hadoop的/ stop-all.sh

然後嘗試格式化,因爲Hadoop的(名字節點和數據節點仍在運行)的文件系統正鎖定的文件系統,可以給出這個錯誤。

所以,如果在給出命令bin/stop-all.sh後殺死進程,那麼你可以做的是在shell中給出命令「jps」,並且會向你顯示進程(java進程)和將有一個與每個進程有關的pid,你可以使用命令「kill processno」像「kill 23232」一樣殺死所有進程,並使用你所說的命令刪除你指定的hdfs文件系統文件夾。

並且還檢查磁盤空間是否足夠可用,假設你已經安裝了windows內的ubuntu,你可以通過在/ host /和某個文件夾中指定文件系統來獲得更多空間。

注意:您不需要格式化HDFS,你可以只是停止所有NameNode和數據節點並再次啓動Hadoop的過程,它不會頻繁currupted,停止和啓動Hadoop的,如果它給後任何錯誤,然後格式化文件系統。

希望這將幫助你......

+0

謝謝,Shaswat。 – user1106278 2012-04-16 23:55:26

0

最重要的是,檢查/etc/hadoop/conf/hdfs-site.xml,並確保你沒有脂肪的手指相同的值:

dfs.name.dir & dfs.data.dir。

兩者應該有不同的值。

艾比