Подтвердить что ты не робот

Hadoop: процесс Datanode убит

В настоящее время я использую Hadoop-2.0.3-alpha, и после того, как я смог отлично работать с HDFS (копирование файлов в HDFS, получение успеха из внешней структуры с помощью webfront), после нового запуска моей виртуальной машины, datanode процесс прерывается через некоторое время. Процесс наменования и все процессы нитей работают без проблем. Я установил Hadoop в папку под другим пользователем, так как у меня также был установлен Hadoop 0.2, который тоже отлично работал. Взглянув на log файл всех процессов datanode, я получил следующую информацию:

2013-04-11 16:23:50,475 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2013-04-11 16:24:17,451 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-04-11 16:24:23,276 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-04-11 16:24:23,279 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-04-11 16:24:23,480 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Configured hostname is user-VirtualBox
2013-04-11 16:24:28,896 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:50010
2013-04-11 16:24:29,239 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2013-04-11 16:24:38,348 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2013-04-11 16:24:44,627 INFO org.apache.hadoop.http.HttpServer: Added global filter 'safety' (class=org.apache.hadoop.http.HttpServer$QuotingIn putFilter)
2013-04-11 16:24:45,163 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context datanode
2013-04-11 16:24:45,164 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context logs
2013-04-11 16:24:45,164 INFO org.apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context static
2013-04-11 16:24:45,355 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened info server at 0.0.0.0:50075
2013-04-11 16:24:45,508 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: dfs.webhdfs.enabled = false
2013-04-11 16:24:45,536 INFO org.apache.hadoop.http.HttpServer: Jetty bound to port 50075
2013-04-11 16:24:45,576 INFO org.mortbay.log: jetty-6.1.26
2013-04-11 16:25:18,416 INFO org.mortbay.log: Started [email protected]:50075
2013-04-11 16:25:42,670 INFO org.apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 50020
2013-04-11 16:25:44,955 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened IPC server at /0.0.0.0:50020
2013-04-11 16:25:45,483 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Refresh request received for nameservices: null
2013-04-11 16:25:47,079 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
2013-04-11 16:25:47,660 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to localhost/127.0.0.1:8020 starting to offer service
2013-04-11 16:25:50,515 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting
2013-04-11 16:25:50,631 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
2013-04-11 16:26:15,068 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data/in_use.lock acquired by nodename [email protected]
2013-04-11 16:26:15,720 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
java.io.IOException: Incompatible clusterIDs in /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data: namenode clusterID = CID-1745a89c-fb08-40f0-a14d-d37d01f199c3; datanode clusterID = CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
at org.apache.hadoop.hdfs.server.datanode.DataStorage .doTransition(DataStorage.java:391)
at org.apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.java:191)
at org.apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.java:219)
at org.apache.hadoop.hdfs.server.datanode.DataNode.in itStorage(DataNode.java:850)
at org.apache.hadoop.hdfs.server.datanode.DataNode.in itBlockPool(DataNode.java:821)
at org.apache.hadoop.hdfs.server.datanode.BPOfferServ ice.verifyAndSetNamespaceInfo(BPOfferService.java: 280)
at org.apache.hadoop.hdfs.server.datanode.BPServiceAc tor.connectToNNAndHandshake(BPServiceActor.java:22 2)
at org.apache.hadoop.hdfs.server.datanode.BPServiceAc tor.run(BPServiceActor.java:664)
at java.lang.Thread.run(Thread.java:722)
2013-04-11 16:26:16,212 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
2013-04-11 16:26:16,276 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363)
2013-04-11 16:26:18,396 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2013-04-11 16:26:18,940 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2013-04-11 16:26:19,668 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************** **********
SHUTDOWN_MSG: Shutting down DataNode at user-VirtualBox/127.0.1.1
************************************************** **********/

Любые идеи? Может быть, я допустил ошибку во время процесса установки? Но странно, что он работал один раз. Я также должен сказать, что если я зарегистрировался как мой дополнительный пользователь для выполнения команд ./hadoop-daemon.sh start namenode и то же самое с datanode, мне нужно добавить sudo.

Я использовал это руководство по установке: http://jugnu-life.blogspot.ie/2012/0...rial-023x.html

Кстати, я использую версию Oracle Java-7.

4b9b3361

Ответ 1

Проблема может заключаться в том, что namenode был отформатирован после того, как кластер был настроен, а datanodes не были, поэтому ведомые устройства все еще ссылаются на старый namenode.

Мы должны удалить и воссоздать папку /home/hadoop/dfs/data в локальной файловой системе для datanode.

  • Проверьте файл hdfs-site.xml, чтобы увидеть, где dfs.data.dir указывает на
  • и удалите эту папку
  • а затем перезапустите демон datanode на компьютере.

Вышеупомянутые шаги должны воссоздать папку и решить проблему.

Пожалуйста, поделитесь информацией о своей конфигурации, если приведенные выше инструкции не работают.

Ответ 2

DataNode умирает из-за несовместимых кластеридов. Чтобы устранить эту проблему Если вы используете hadoop 2.X, вам нужно удалить все в папке, указанной вами в hdfs-site.xml - "dfs.datanode.data.dir" (но не самой папке).

В этой папке будет храниться ClusterID. Удалить и перезапустить dfs.sh. Это должно работать!!!

Ответ 3

  • Вам необходимо удалить оба
    C:\hadoop\data\dfs\datanode и
    C:\hadoop\data\dfs\namenode.

Если у вас нет этих папок, откройте файл C:\hadoop\etc\hadoop\hdfs-site.xml и получите пути для этих папок для следующего удаления. Для меня это говорит:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/data/dfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/hadoop/data/dfs/datanode</value>
</property>
  1. Команда запуска для namenode формата
    c:\hadoop\bin>hdfs namenode -format

Теперь это должно сработать!

Ответ 4

Я думаю, что рекомендуемый способ сделать это, не удаляя каталог данных, - это просто изменить переменную clusterID в файле VERATATA datanode.

Если вы посмотрите в каталог ваших демонов, вы увидите каталог datanode exmaple

data/hadoop/daemons/datanode

Файл VERSION должен выглядеть следующим образом.

cat current/VERSION 
#Tue Oct 14 17:31:58 CDT 2014
storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
clusterID=CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
cTime=0
datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
storageType=DATA_NODE
layoutVersion=-55

Вам нужно изменить clusterId на первое значение в выводе сообщения, поэтому в вашем случае это будет CID-1745a89c-fb08-40f0-a14d-d37d01f199c3 вместо CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f

Обновленная версия должна выглядеть следующим образом с измененным clusterId

  cat current/VERSION 
    #Tue Oct 14 17:31:58 CDT 2014
    storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
    clusterID=CID-1745a89c-fb08-40f0-a14d-d37d01f199c3
    cTime=0
    datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
    storageType=DATA_NODE
    layoutVersion=-55

Перезапустите hadoop, и datanode должен начать нормально.