2

私はHadoopで手を汚そうとしています。私の質問はかなり基本的なものかもしれませんが、ご容赦ください。

Hadoop: A Definitive Guideを読んでいて、気象データのチュートリアルに従っています。データを HDFS にコピーしているときに、次のエラーが発生します。

13/09/02 16:34:35 ERROR hdfs.DFSClient: Failed to close file /user/bhushan/gz/home/bhushan/ncdc_data/ftp3.ncdc.noaa.gov/pub/data/noaa/1901.gz
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/bhushan/gz/home/bhushan/ncdc_data/ftp3.ncdc.noaa.gov/pub/data/noaa/1901.gz could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)
    at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)

私のセットアップでは何かが間違いなく正しくありません。を見るとreport、次のようになります。

bhushan@ubuntu:~/Documents/hadoop-1.2.1/bin$ hadoop dfsadmin -report
Configured Capacity: 0 (0 KB)
Present Capacity: 0 (0 KB)
DFS Remaining: 0 (0 KB)
DFS Used: 0 (0 KB)
DFS Used%: �%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 0 (0 total, 0 dead)

3つの構成ファイルは次のとおりです(すべて本による):

hdfs-site.xml:

<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

core-site.xml:

<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>

mapred-site.xml:

<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>

HDFS を数回フォーマットしましたが、役に立ちませんでした。

HDFS サイズをどこかに明示的に指定する必要がありますか? 本から:

ネームノードはファイルシステムのすべてのメタデータを管理し、データノードはクラスターに動的に参加またはクラスターから離脱できるため、データノードは初期フォーマットプロセスには関与しません。同じ理由で、作成するファイルシステムのサイズを指定する必要はありません。これは、ファイルシステムがフォーマットされた後でも、必要に応じて増やすことができるクラスター内のデータノードの数によって決定されるためです。

4

1 に答える 1

3

DataNode プロセスが実行されていないと思います。疑似クラスターで作業していると思います。「jps」コマンドを実行し、DataNode プロセスが実行中で、4 ~ 5 分間持続することを確認します。DataNode が実行されているか、数分で停止する場合は、構成に問題があります。次の解決策を試すことができます。

クラスターを停止します。DataNode 永続ディレクトリを削除します。hdfs-site.xml の「dfs.data.dir」プロパティを使用して構成しておく必要があります。構成していない場合は、Linux ユーザーの一時ディレクトリが使用されます。そのディレクトリを見つけて削除します。その後、クラスターを再起動します。ファイルをもう一度コピーしてみると、うまくいくはずです。

于 2013-09-03T08:19:08.923 に答える