[HADOOP] Hadoop put 명령 던지기 - 1 대신 1 개의 노드에만 복제 가능
HADOOPHadoop put 명령 던지기 - 1 대신 1 개의 노드에만 복제 가능
저는 Hadoop을 처음 사용하고 있습니다. 우분투 컴퓨터에 pseudo distributed mode setup을 시도하고 hadoop put 명령으로 문제에 직면하고 있습니다. 내 구성 세부 정보는이 게시물에서 사용할 수 있습니다 -> "hadoop namenode -format"명령이 수행 할 작업
이제 아래 명령을 사용하여 HDFS에 파일을 추가하려고합니다.
hadoop fs –mkdir /user/myuser
hadoop fs -lsr /
$ ./hadoop fs -lsr /
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:04 /tmp
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:04 /tmp/hadoop-myuser
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:04 /tmp/hadoop-myuser/dfs
-rw-r--r-- 1 myuser supergroup 0 2014-11-26 16:04 /tmp/hadoop-myuser/dfs/name
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:04 /tmp/hadoop-myuser/mapred
drwx------ - myuser supergroup 0 2014-11-26 16:12 /tmp/hadoop-myuser/mapred/system
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:04 /user
drwxr-xr-x - myuser supergroup 0 2014-11-26 16:06 /user/myuser
이제 put 명령을 실행하고 있지만 다음과 같이 예외가 발생합니다.
$ ./hadoop fs -put example.txt .
14/11/26 16:06:19 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/myuser/example.txt could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)
at org.apache.hadoop.ipc.Client.call(Client.java:1113)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3720)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3580)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2783)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:3023)
14/11/26 16:06:19 WARN hdfs.DFSClient: Error Recovery for null bad datanode[0] nodes == null
14/11/26 16:06:19 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/myuser/example.txt" - Aborting...
put: java.io.IOException: File /user/myuser/example.txt could only be replicated to 0 nodes, instead of 1
14/11/26 16:06:19 ERROR hdfs.DFSClient: Failed to close file /user/myuser/example.txt
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/myuser/example.txt could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)
at org.apache.hadoop.ipc.Client.call(Client.java:1113)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3720)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3580)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2783)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:3023)
누군가이 문제를 어떻게 해결할 수 있습니까?
문제의 해결 방법 :
제공된 답변에 따라 다음 단계에 따라 문제를 해결할 수 있습니다.
1) 모든 서비스 중지 :
./stop-all.sh
2) 데이터 디렉토리 삭제 :
rm -rf /tmp/hadoop-myuser/dfs/data/
3) 서비스 시작 :
./start-all.sh
4) 그런 다음 파일을 HDFS에 넣습니다.
./hadoop fs -put example.txt .
해결법
-
==============================
1.이것은 데이터 노드 문제 때문입니다. 데이터 노드를 시작하고 지금 작업하십시오.
이것은 데이터 노드 문제 때문입니다. 데이터 노드를 시작하고 지금 작업하십시오.
-
==============================
2."hdfs-site.xml"의 "dfs.replication"에 최소 1이 있는지 확인 했습니까? 0 복제를 넣을 수 있다고 생각합니다.
"hdfs-site.xml"의 "dfs.replication"에 최소 1이 있는지 확인 했습니까? 0 복제를 넣을 수 있다고 생각합니다.
그리고 모든 hadoop 서비스가 실행 중인지 확인하십시오.
실행 상태를 확인하려면 다음을 수행하십시오. JPS 명령을 실행하다
개별적으로 서비스를 시작하려면 다음을 수행하십시오. Goto ... \ hadoop \ bin \
start hadoop {datanode \ namenode} start yarn {nodemanager \ resourcemanager}
from https://stackoverflow.com/questions/27147096/hadoop-put-command-throws-could-only-be-replicated-to-0-nodes-instead-of-1 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] MapReduce 값을 내림차순으로 정렬 (0) | 2019.07.03 |
---|---|
[HADOOP] N 일보다 오래된 hdfs의 파티션 폴더 삭제 (0) | 2019.07.03 |
[HADOOP] HDFS : Java / Scala API를 사용하여 여러 파일 이동 (0) | 2019.07.03 |
[HADOOP] HBase에서 복구가 어떻게 작동합니까? (0) | 2019.07.03 |
[HADOOP] Hive / Hadoop 간헐적 인 실패 : 대상을 대상으로 이동할 수 없습니다. (0) | 2019.07.03 |