Думаю, у меня должно быть какое-то недопонимание насчет узлов данных в Hadoop Cluster. У меня есть виртуальный кластер hadoop, состоящий из master, slave1, slave2, slave3. Ведущее устройство и ведомое устройство 1 находятся на физической машине, в то время как ведомое устройство 2 и ведомое устройство 3 находятся на одной физической машине. Когда я запускаю кластер, в веб-интерфейсе HDFS я вижу только три живых узла данных: slave1, master, slave2. Но иногда три живых узла данных - это master, slave1, slave3. Это странно. Я отправляю ssh на незапущенный узел данных, хотя я выполняю jps и не нашел узла данных, я все еще могу копировать и удалять файлы в HDFS на этом узле. Поэтому я считаю, что я не должен правильно понимать датанод. У меня есть три вопроса. 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 [email protected]:50075
2012-08-03 17: 47: 33,873 INFO org.mortbay.log: остановлен [email protected]: 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: обработчик IPC-сервера 0 на 50020: завершается 03.08.2012 17: 47: 33,981 INFO org.apache.hadoop.ipc.Server: Обработчик сервера IPC 2 на 50020: выход 2012-08-03 17: 47: 33,981 INFO org.apache.hadoop.ipc.Server: Обработчик сервера IPC 1 на 50020: выход
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)
на com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean (JmxMBeanServer.java:540) на org.apache.hadoop.metrics2.util.MBeans.unregister (MBeans.java:71) на org.apache.serdoop.hdf .datanode.FSDataset.shutdown (FSDataset.java:2067) на org.apache.hadoop.hdfs.server.datanode.DataNode.shutdown (DataNode.java:799) на org.apache.hadoop.hdfs.server.datanode.DataNode .run (DataNode.java:1471) в java.lang.Thread.run (Thread.java:636)
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,988 ПРЕДУПРЕЖДЕНИЕ org.apache.hadoop.hdfs.server.datanode.FSDatasetAsyncDiskService: AsyncDiskService уже отключен. 2012-08-03 17:47: 33,989 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: выход из Datanode
Возникают проблемы с наличием нескольких узлов данных на одно имя хоста. Вы говорите, что он виртуальный, значит, они на разных виртуальных машинах? Если так, то проблем быть не должно ...
Я бы проверил журналы DataNode для slave2 и slave3 и посмотрел, почему один из них не загружается. Там будет напечатано сообщение об ошибке. Если ошибка говорит что-то вроде взятого порта или что-то в этом роде.