www - Hadoop:... minReplication(= 1) 대신 0 개의 노드로 복제됩니다. 1 개의 데이터 노드가 실행 중이며이 작업에서 노드가 제외되지 않았습니다.
www hadoop (4)
나는 hdfs 서비스를 다시 시작하여이 문제를 해결 한 동일한 오류가 발생했습니다. 다시 시작된 NameNode 및 DataNode 서비스.
멀티 스레드 응용 프로그램의 일부로 HDFS에 쓰려고 할 때 다음 오류가 발생합니다.
could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and no node(s) are excluded in this operation.
나는 포맷팅에 대해 최고 등급의 답변을 시도했지만이 것은 나에게 도움이되지 않는다. HDFS 오류 : 1 대신 1 개의 노드로만 복제 될 수있다.
무슨 일이 일어나고있는거야?
- 내 응용 프로그램은 각각 자신의 Spring Data
PartitionTextFileWriter
구성된 2 개의 스레드로 구성됩니다. - 스레드 1은 데이터를 처리하는 첫 번째이며 이것이 HDFS에 성공적으로 쓸 수 있습니다.
- 그러나 스레드 2가 데이터를 처리하기 시작하면 파일로 플러시하려고 할 때이 오류가 발생합니다.
스레드 1과 2는 내 디렉토리 트리의 루트에 상위 디렉토리를 공유하지만 동일한 파일에 쓰지 않습니다.
내 서버의 디스크 공간에는 문제가 없습니다.
나는 또한 내 이름 - 노드 로그에서 이것을 볼 수 있지만 그것이 무엇을 의미하는지 확실하지 않다.
2016-03-15 11:23:12,149 WARN org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy: Failed to place enough replicas, still in need of 1 to reach 1 (unavailableStorages=[], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}, newBlock=true) For more information, please enable DEBUG log level on org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy
2016-03-15 11:23:12,150 WARN org.apache.hadoop.hdfs.protocol.BlockStoragePolicy: Failed to place enough replicas: expected size is 1 but only 0 storage types can be selected (replication=1, selected=[], unavailable=[DISK], removed=[DISK], policy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]})
2016-03-15 11:23:12,150 WARN org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy: Failed to place enough replicas, still in need of 1 to reach 1 (unavailableStorages=[DISK], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}, newBlock=true) All required storage types are unavailable: unavailableStorages=[DISK], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}
2016-03-15 11:23:12,151 INFO org.apache.hadoop.ipc.Server: IPC Server handler 8 on 9000, call org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from 10.104.247.78:52004 Call#61 Retry#0
java.io.IOException: File /metrics/abc/myfile could only be replicated to 0 nodes instead of [2016-03-15 13:34:16,663] INFO [Group Metadata Manager on Broker 0]: Removed 0 expired offsets in 1 milliseconds. (kafka.coordinator.GroupMetadataManager)
이 오류의 원인은 무엇입니까?
감사
데이터 노드를 실행하는 컴퓨터의 jps
명령이 데이터 노드가 실행 중인지 확인하십시오. 실행중인 경우 namenode와 연결할 수 없으므로 namenode는 hadoop 시스템에 datanode가 없다고 생각합니다.
이 경우 start-dfs.sh
를 실행 한 후 마스터 노드에서 netstat -ntlp
를 실행하십시오. 9000은 대부분의 자습서에서 core-site.xml
에 지정하도록 지시 한 포트 번호입니다. netstat
의 출력에서 이와 같은 라인이 netstat
tcp 0 0 120.0.1.1:9000 0.0.0.0:* LISTEN 4209/java
호스트 별명에. 제가 있습니다. 나는 똑같은 문제가 있었기 때문에 그것이 어떻게 풀 렸는지 진술 할 것이다.
이것이 내 core-site.xml
의 내용입니다.
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://vm-sm:9000</value>
</property>
</configuration>
따라서 마스터 컴퓨터의 vm-sm
별칭은 127.0.1.1에 매핑됩니다. 이것은 /etc/hosts
파일의 설정 때문입니다.
127.0.0.1 localhost
127.0.1.1 vm-sm
192.168.1.1 vm-sm
192.168.1.2 vm-sw1
192.168.1.3 vm-sw2
마스터 시스템의 core-site.xml
이 120.0.1.1:9000
에 매핑 된 것처럼 보이고 작업자 노드의 192.168.1.1:9000
통해 연결하려고하는 것처럼 보입니다.
그래서 /etc/hosts
파일에서 hadoop 시스템을위한 마스터 노드의 별명을 바꾸어야했습니다 (그냥 하이픈을 삭제했습니다).
127.0.0.1 localhost
127.0.1.1 vm-sm
192.168.1.1 vmsm
192.168.1.2 vm-sw1
192.168.1.3 vm-sw2
core-site.xml
, mapred-site.xml
및 slave
파일 (마스터의 이전 별칭이 발생한 곳)의 변경 사항을 반영했습니다.
hadoop 위치뿐 아니라 tmp
폴더에서 이전 hdfs 파일을 삭제하고 모든 노드를 다시 시작한 후에 문제가 해결되었습니다.
이제 DFS를 시작한 후 netstat -ntlp
반환합니다.
tcp 0 0 192.168.1.1:9000 0.0.0.0:* LISTEN ...
...
제 경우에는 COLD로 설정된 출력 경로의 저장 정책 이었습니다.
폴더 설정 확인 방법 :
hdfs storagepolicies -getStoragePolicy -path my_path
내 경우에는 돌아왔다.
The storage policy of my_path
BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]}
나는 다른 곳으로 데이터를 버리고 (HOT 스토리지에) 문제가 사라졌습니다.
최근에 비슷한 문제가 발생했습니다. 내 데이터 노드 (SSD)가 스토리지 용 [SSD]file:///path/to/data/dir
를 보유하고 dfs.datanode.data.dir
구성에 [SSD]file:///path/to/data/dir
을 dfs.datanode.data.dir
합니다. unavailableStorages=[DISK]
포함 된 로그로 인해 [SSD]
태그가 제거되어 문제가 해결되었습니다.
분명히 Hadoop은 [DISK]
를 기본 저장소 유형으로 사용하고 [DISK]
태그가있는 저장소 위치가없는 경우 SSD를 사용하도록 '대체'(fallback)하지 않습니다. 이 동작에 대한 어떤 문서도 발견 할 수 없었습니다.