[HADOOP] hadoop hdfs 형식화가 블록 풀에서 오류를 가져 오지 못했습니다.
HADOOPhadoop 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 다음과 같은 임시 디렉토리가 있습니다 :
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop</value>
<description>A base for other temporary directories.
</description>
</property>
및 namenode 및 datanode 같이 내 hdfs-site.xml 다음과 같습니다.
<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와 hdfs dfs -mkdir을 사용하여 / user / der der der my log in name을 작성했습니다. 그러나 내가 돼지 파일, 나는 돼지 파일에서 mkDirs와 chmod 에러를 취한다. 내 데이터 노드와 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는 소유자 및 그룹에 대한 권한 만 있지만 사용자는 아닌 것 같습니다.
다음은 내 돼지 스크립트 오류입니다.
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
여기 내 돼지 스크립트입니다 :
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 서버를 멈춘 후에). 그것도 잘 작동하지 않았다.
5 월 30 일 업데이트 : 좀 더 자세한 내용. 돼지 스크립트에서 돼지 스크립트의 상위 디렉토리를 다음과 같이 변경했습니다.
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"
서버 측에서는 돼지 스크립트에서 잘못된 파일 요청을받는 순간 namenode 로그가 있습니다. 로그 (tail -f 사용)가 스크롤됩니다. 이것은 서버가 pig 명령에 대한 요청을 승인하고 있음을 나타냅니다.
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
돼지 스크립트의 소스 코드를 가져 와서 문제가되는 extd hdfs 명령을 확인해야합니다. 나는 내가 구성한 hadoop hdfs 서비스에 누군가가 잘못되었다고 생각한다.
해결법
-
==============================
1.네임 노드 및 데이터 노드 클러스터 ID가 일치하지 않습니다.
네임 노드 및 데이터 노드 클러스터 ID가 일치하지 않습니다.
usr / local / hadoop / dfs / datanode / current / VERSION 파일을 열고 다음을 변경하십시오.
clusterID=CID-6c250e90-658c-4363-9346-972330ff8bf9
에
clusterID=CID-e77ee39a-ab4a-4de1-b1a4-9d4da78b83e8
-
==============================
2.나에게도 같은 문제가 발생했다. 데이터 디렉토리의 내용을 삭제 한 다음 hdfs 데이터 노드를 실행했습니다. 이것은 VERSION과 datanode 디렉토리 안에있는 다른 파일들을 만들었습니다. 이것은 내 문제를 해결했다.
나에게도 같은 문제가 발생했다. 데이터 디렉토리의 내용을 삭제 한 다음 hdfs 데이터 노드를 실행했습니다. 이것은 VERSION과 datanode 디렉토리 안에있는 다른 파일들을 만들었습니다. 이것은 내 문제를 해결했다.
from https://stackoverflow.com/questions/30521474/hadoop-hdfs-formatting-gets-error-failed-for-block-pool by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop mapreduce : MapReduce 작업 내에서 매퍼를 연결하는 드라이버 (0) | 2019.06.14 |
---|---|
[HADOOP] Mapreduce Combiner (0) | 2019.06.14 |
[HADOOP] Cygwin을 통한 Windows에서의 Hadoop 설정 (0) | 2019.06.14 |
[HADOOP] Hadoop : start-dfs.sh 권한이 거부되었습니다. (0) | 2019.06.14 |
[HADOOP] 특정 날짜까지 하이브를 사용하여 파티션을 추가하는 방법은 무엇입니까? (0) | 2019.06.14 |