1

Hadoop クラスターのデータノードについて誤解していると思います。master、slave1、slave2、slave3 で構成される Hadoop 仮想クラスターがあります。マスターとスレーブ 1 は物理マシンにあり、スレーブ 2 とスレーブ 3 は 1 つの物理マシンにあります。クラスターを開始すると、HDFS WebUI で、slave1、master、slave2 の 3 つの生きているデータノードしか表示されません。ただし、3 つの生きているデータノードがマスター、スレーブ 1、スレーブ 3 である場合もあります。それは奇妙だ。開始されていないデータノードに ssh します。jps を実行してデータノードが見つかりませんでしたが、このノードの HDFS でファイルをコピーおよび削除できます。したがって、datanode を正しく理解してはいけないと思います。ここで 3 つの質問があります。1 ノードごとに 1 つのデータノードがありますか? 2 データノードではないノードでも HDFS で読み書きできるのはなぜですか? 3 データノードの数を決めることはできますか?

未起動のデータノードのログは次のとおりです。


STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = slave11/192.168.111.31
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-    1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:31:25 UTC 2012
************************************************************/
2012-08-03 17:47:07,578 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded     properties from hadoop-metrics2.properties
2012-08-03 17:47:07,595 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean     for source MetricsSystem,sub=Stats registered.
2012-08-03 17:47:07,596 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2012-08-03 17:47:07,596 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2012-08-03 17:47:07,911 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2012-08-03 17:47:07,915 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2012-08-03 17:47:09,457 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.111.21:54310. Already tried 0 time(s).
2012-08-03 17:47:10,460 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.111.21:54310. Already tried 1 time(s).
2012-08-03 17:47:11,464 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.111.21:54310. Already tried 2 time(s).
2012-08-03 17:47:19,565 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Registered FSDatasetStatusMBean
2012-08-03 17:47:19,601 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened info server at 50010
2012-08-03 17:47:19,620 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2012-08-03 17:47:24,721 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2012-08-03 17:47:24,854 INFO org.apache.hadoop.http.HttpServer: Added global filtersafety (class=org.apache.hadoop.http.HttpServer$QuotingInputFilter)
2012-08-03 17:47:24,952 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dfs.webhdfs.enabled = false
2012-08-03 17:47:24,953 INFO org.apache.hadoop.http.HttpServer: Port returned by webServer.getConnectors()[0].getLocalPort() before open() is -1. Opening the listener on 50075
2012-08-03 17:47:24,953 INFO org.apache.hadoop.http.HttpServer: listener.getLocalPort() returned 50075 webServer.getConnectors()[0].getLocalPort() returned 50075
2012-08-03 17:47:24,953 INFO org.apache.hadoop.http.HttpServer: Jetty bound to port 50075
2012-08-03 17:47:24,953 INFO org.mortbay.log: jetty-6.1.26
2012-08-03 17:47:25,665 INFO org.mortbay.log: Started SelectChannelConnector@0.0.0.0:50075

2012-08-03 17:47:25,688 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: ソース jvm の MBean が登録されました。2012-08-03 17:47:25,690 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: ソース DataNode の MBean が登録されました。2012-08-03 17:47:30,717 INFO org.apache.hadoop.ipc.Server: SocketReader を開始しています 2012-08-03 17:47:30,718 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: ソース RpcDetailedActivityForPort50020 の MBean登録済み。2012-08-03 17:47:30,718 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: ソース RpcActivityForPort50020 の MBean が登録されました。2012-08-03 17:47:30,721 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dnRegistration = DatanodeRegistration (slave11:50010、ストレージ ID = DS-1062340636-127.0.0.1-50010-1339803955209、infoPort = 50075 、50020 の IPC サーバーリスナー: 2012-08-03 17:47:30,773 INFO org.apache.hadoop.ipc.Server: 50020 の IPC サーバーハンドラー 0: 2012-08-03 17:47:30,773 INFO org.apache の開始.hadoop.ipc.Server: 50020 の IPC サーバー ハンドラー 1: 2012-08-03 17:47:30,795 INFO org.apache.hadoop.hdfs.server.datanode.DataNode を開始: 定期的なブロック スキャナーを開始しています。2012-08-03 17:47:30,816 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: 非同期ブロック レポート スキャンが 52 ミリ秒で完了しました 2012-08-03 17:47:30,838 INFO org.apache.hadoop.hdfs .server.datanode.DataNode: 32 ミリ秒で大まかな (ロックレス) ブロック レポートを生成しました2 ミリ秒 2012-08-03 17:47:31,158 INFO org.apache.hadoop.hdfs.server.datanode.DataBlockScanner: blk_-6072482390929551157_78209 の検証に成功しました 2012-08-03 17:47:33,775 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: 1 ミリ秒で現在の状態に対して調整された非同期ブロック レポート33,793 警告 org.apache.hadoop.hdfs.server.datanode.DataNode: DataNode がシャットダウンしています: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.protocol.UnregisteredDatanodeException: データ ノード 192.168.111.31:50010ストレージ ID DS-1062340636-127.0.0.1-50010-1339803955209 を報告しようとしています。ノード 192.168.111.32:50010 は、このストレージを提供することが期待されています。org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getDatanode(FSNamesystem.java:4608) で org.apache.hadoop.hdfs.server.namenode.FSNamesystem.processReport(FSNamesystem.java:3460) で org.apache .hadoop.hdfs.server.namenode.NameNode.

    at org.apache.hadoop.ipc.Client.call(Client.java:1070)
    at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
    at $Proxy5.blockReport(Unknown Source)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.offerService(DataNode.java:958)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.run(DataNode.java:1458)
    at java.lang.Thread.run(Thread.java:636)

2012-08-03 17:47:33,873 INFO org.mortbay.log: SelectChannelConnector@0.0.0.0:50075 を停止しました 2012-08-03 17:47:33,980 INFO org.apache.hadoop.ipc.Server: 50020 でサーバーを停止しています2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: 50020 の IPC サーバー ハンドラー 0: 2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: 50020 の IPC サーバー ハンドラー 2: 終了中 2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: 50020 の IPC サーバー ハンドラー 1: 終了

2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: IPC Server handler 0 on 50020: exiting
2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: IPC Server handler 2 on 50020: exiting
2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.Server: IPC Server handler 1 on 50020: exiting
2012-08-03 17:47:33,981 INFO org.apache.hadoop.ipc.metrics.RpcInstrumentation: shut down
2012-08-03 17:47:33,982 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(192.168.111.31:50010, storageID=DS-1062340636-127.0.0.1-50010-1339803955209, infoPort=50075, ipcPort=50020):DataXceiveServer:java.nio.channels.AsynchronousCloseException
    at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:170)
    at sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:102)
    at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:131)
    at java.lang.Thread.run(Thread.java:636)

2012-08-03 17:47:33,982 INFO org.apache.hadoop.ipc.Server: Stopping IPC Server listener on 50020
2012-08-03 17:47:33,982 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting DataXceiveServer
2012-08-03 17:47:33,983 INFO org.apache.hadoop.ipc.Server: Stopping IPC Server Responder

2012-08-03 17:47:33,982 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: スレッドグループが終了するのを待っています。アクティブなスレッドは 1 2012-08-03 17:47:33,984 INFO org.apache. hadoop.hdfs.server.datanode.DataBlockScanner: DataBlockScanner スレッドを終了しています。2012-08-03 17:47:33,985 INFO org.apache.hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: すべての非同期ディスク サービス スレッドをシャットダウンしています... 2012-08-03 17:47:33,985 INFO org.apache. hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: すべての非同期ディスク サービス スレッドがシャットダウンされました。2012-08-03 17:47:33,985 情報 org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration (192.168.111.31:50010、ストレージ ID = DS-1062340636-127.0.0.1-50010-1339803955209、infoPort = 5007 , ipcPort=50020): DataNode を終了しています: FSDataset{dirpath='/app/hadoop/tmp/dfs/data/current'} 2012-08-03 17:47:

com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:540) で org.apache.hadoop.metrics2.util.MBeans.unregister(MBeans.java:71) で org.apache.hadoop.hdfs.server org.apache.hadoop.hdfs.server.datanode.DataNode.shutdown(DataNode.java:799) の .datanode.FSDataset.shutdown(FSDataset.java:2067) org.apache.hadoop.hdfs.server.datanode.DataNode の.run(DataNode.java:1471) at java.lang.Thread.run(Thread.java:636)

2012-08-03 17:47:33,988 WARN org.apache.hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: AsyncDiskService は既にシャットダウンされています。2012-08-03 17:47:33,989 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Datanode を終了しています

4

1 に答える 1

3

単一のホスト名ごとに複数の DataNode を使用すると問題が発生します。あなたはそれが仮想だと言いますが、それらは異なる仮想マシン上にありますか? なら、これで問題ないはず…

スレーブ 2 とスレーブ 3 の DataNode ログを確認し、起動しない理由を確認します。そこにエラーメッセージが出力されます。エラーが、使用されているポートの行に沿って何かを示している場合、またはそのようなものです。


HDFS にアクセスするために DataNode 上にいる必要はありません。HDFS クライアント ( などhadoop fs -put) は、ローカルのプロセスにアクセスすることなく、NameNode およびその他の DataNode プロセスと直接通信します。

大規模なクラスターでは、HDFS と MapReduce にアクセスできるが、DataNode または TaskTracker サービスを実行していない別の「クエリ ノード」を持つことは、実際には非常に一般的です。

Hadoop パッケージがインストールされていて、構成ファイルが NameNode と JobTracker を正しく指している限り、クラスターに「リモートで」アクセスできます。

于 2012-08-04T00:35:54.080 に答える