Hasoop hdfs форматирование получает ошибку не удалось для пула блоков

После форматирования моих hdfs я получаю следующие ошибки:

2015-05-28 21:41:57,544 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/dfs/datanode: namenode clusterID = CID-e77ee39a-ab4a-4de1-b1a4-9d4da78b83e8; datanode clusterID = CID-6c250e90-658c-4363-9346-972330ff8bf9
2015-05-28 21:41:57,545 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000. Exiting. 
java.io.IOException: All specified directories are failed to load.
    at.. org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:477)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1387)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1352)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:316)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:852)
    at java.lang.Thread.run(Thread.java:745)
...blah...
SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at der-Inspiron-3521/127.0.1.1
************************************************************/

Вот шаги, которые я сделал:

 sbin/stop-dfs.sh
 hdfs namenode -format
 sbin/start-dfs.sh

Для вашей информации: у моего core-site.xml есть temp dir следующим образом:

<property>
      <name>hadoop.tmp.dir</name>
     <value>/usr/local/hadoop</value>
      <description>A base for other temporary directories.    
</description>
 </property>

и мой hdfs-site.xml в качестве наменода и datanode следующим образом:

 <property>
     <name>dfs.namenode.name.dir</name>  
     <value>file:/usr/local/hadoop/dfs/namenode</value>
  </property>



 <property> 
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/dfs/datanode</value>
    </property>

Обновление: Я получил немного больше с проблемой, но все же я получаю такую ​​же ошибку. Мне удалось запустить hdfs dfs -format и изменить версию в соответствии с рекомендациями. После этого я использовал hdfs dfs -ls and hdfs dfs -mkdir to create /user/der wher der имя моего журнала. Однако, когда я побежал  файл свиньи, я принимаю mkDirs и chmod ошибки в моем файле свиньи.  Вот разрешения для моего datanode и namenode:

drwx------ 3 der  der  4096 May 29 08:13 datanode
drwxrwxrwx 4 root root 4096 May 28 11:34 name
drwxrwxr-x 3 der  der  4096 May 29 08:13 namenode
drwxrwxr-x 3 der  der  4096 May 29 08:13 namesecondary
drwxr-xr-x 2 root root 4096 May 28 11:46 ww

Кажется, что datanode имеет разрешения только для владельца и группы, но не для пользователя.

Вот моя ошибка script:

2015-05-29 08:37:27,152 [JobControl] INFO  org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob - PigLatin:totalmiles.pig got an error while submitting 
ENOENT: No such file or directory
    at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmodImpl(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmod(NativeIO.java:230)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:724)
    at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:502)
    at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:600)
    at org.apache.hadoop.mapreduce.JobResourceUploader.uploadFiles(JobResourceUploader.java:94)
    at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:98)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:193)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
    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:1657)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
    at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:335)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl

Вот моя свинья script:

records = LOAD '1987.csv' USING PigStorage(',') AS
        (Year, Month, DayofMonth, DayOfWeek, 
         DepTime, CRSDepTime, ArrTime, CRSArrTime, 
         UniqueCarrier, FlightNum, TailNum,ActualElapsedTime,
         CRSElapsedTime,AirTime,ArrDelay, DepDelay, 
         Origin, Dest,  Distance:int, TaxIn, 
         TaxiOut, Cancelled,CancellationCode,  Diverted, 
         CarrierDelay, WeatherDelay, NASDelay, SecurityDelay,
         lateAircraftDelay);
milage_recs= GROUP records ALL;
tot_miles = FOREACH milage_recs GENERATE SUM(records.Distance);
STORE tot_miles INTO 'totalmiles4';

Обновление: Кстати, я использовал chmod go + rw в datanode (после того, как я остановил сервер namenode и сервер datanode). Это не сработало.


Обновление 30 мая: Немного больше деталей.  Я изменил родительский каталог свиньи script в моей свине script:

records = LOAD '/user/der/1987.csv' USING PigStorage(',') AS

У меня такая же ошибка. На стороне клиента здесь ошибка. Единственное различие заключается в том, что не существует префикса hdfs://для отказавшего ввода.

Failed to read data from "/user/der/1987.csv"

Output(s):
Failed to produce result in "hdfs://localhost:9000/user/der/totalmiles4"

На стороне сервера это журнал имен в тот момент, когда я получаю неверный запрос файла от моей свиньи script. Журнал (используя хвост -f) прокручивается. Это означает, что сервер принимает запрос на команду свиньи.

          2015-05-30 07:01:28,140 INFO BlockStateChange: BLOCK* addStoredBlock: blockMap updated: 127.0.0.1:50010 is added to 
        blk_1073741885_1061{UCState=UNDER_CONSTRUCTION, 
    truncateBlock=null,
 primaryNodeIndex=-1, replicas=[ReplicaUC[[DISK]DS-c84e0e37-2726-44da-af3e-67167c1010d1:NORMAL:127.0.0.1:50010|RBW]]}
     size 0

            2015-05-30 07:01:28,148 INFO org.apache.hadoop.hdfs.StateChange: DIR* completeFile:
     /tmp/temp-11418443/tmp85697770/automaton-1.11-8.jar 
is closed by DFSClient_NONMAPREDUCE_-1939565577_1

Мне просто нужно получить исходный код свиньи script и проверить выданные команды hdfs. Я думаю, что кто-то не прав в службах huds hadoop, которые я настроил.

Ответ 1

2015-05-28 21: 41: 57,544 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Несовместимые идентификаторы кластера в /usr/local/hadoop/dfs/datanode: namenode clusterID = CID-e77ee39a-ab4a-4de1-b1a4-9d4da78b83e8; datanode clusterID = CID-6c250e90-658c-4363-9346-972330ff8bf9

Идентификатор кластера namenode и datanode не совпадает с.

Откройте файл usr/local/hadoop/dfs/datanode/current/VERSION и измените:

clusterID=CID-6c250e90-658c-4363-9346-972330ff8bf9

к

clusterID=CID-e77ee39a-ab4a-4de1-b1a4-9d4da78b83e8

ПРИМЕЧАНИЕ.. Когда вы форматируете свой namenode, проверьте VERSION файл namenode и datanode. Они оба должны иметь одинаковые clusterID и namespaceID. В противном случае ваш datanode не запустится.

Ответ 2

То же самое случилось со мной. Я удалил содержимое каталога данных, а затем запустил datanode hdfs. Это создало VERSION и другие файлы внутри каталога datanode. Это решило мою проблему.