HDFS - 외부 시스템(Windows OS)에서 HDFS 파일 컨트롤
Posted 06 10, 2013 18:33, Filed under: BigData/Hadoop# Eclipse에서 HDFS 연결 환경 설정
기본적으로 외부 시스템에서 HDFS 상의 디렉토리및 파일을 읽을수는 있지만, 쓰기는 제한됨.
외부 시스템에서 HDFS 상에 파일을 업로드 하거나 MapReduce 잡 output을 저장하기 위해서는 HDFS 시스템에 권한 설정이 필요함.
# 권한(Write) 없을시 에러 메시지
# 하둡 fs 명령어 옵션 정보
* HDFS에서 기본으로 supergroup 그룹을 정의해서 사용함.
# 외부 시스템(WindowsOS and Eclipse)에서 HDFS 파일 컨트롤
기본적으로 외부 시스템에서 HDFS 상의 디렉토리및 파일을 읽을수는 있지만, 쓰기는 제한됨.
외부 시스템에서 HDFS 상에 파일을 업로드 하거나 MapReduce 잡 output을 저장하기 위해서는 HDFS 시스템에 권한 설정이 필요함.
# 권한(Write) 없을시 에러 메시지
Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=sunshiny, access=WRITE, inode="data":hadoop:supergroup:rwxr-xr-x
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:95)
at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.<init>(DFSClient.java:3424)
at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:866)
at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:193)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:555)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:536)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:443)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:435)
at lab.FileWrite.main(FileWrite.java:26)
Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=sunshiny, access=WRITE, inode="data":hadoop:supergroup:rwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:199)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:180)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:128)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5468)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:5442)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1314)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1266)
at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:668)
at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:647)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1393)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1389)
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:1149)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387)
at org.apache.hadoop.ipc.Client.call(Client.java:1107)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at sun.proxy.$Proxy1.create(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at sun.proxy.$Proxy1.create(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.<init>(DFSClient.java:3417)
... 7 more
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:95)
at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:57)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.<init>(DFSClient.java:3424)
at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:866)
at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:193)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:555)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:536)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:443)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:435)
at lab.FileWrite.main(FileWrite.java:26)
Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=sunshiny, access=WRITE, inode="data":hadoop:supergroup:rwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:199)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:180)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:128)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5468)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:5442)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1314)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1266)
at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:668)
at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:647)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:578)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1393)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1389)
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:1149)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387)
at org.apache.hadoop.ipc.Client.call(Client.java:1107)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at sun.proxy.$Proxy1.create(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at sun.proxy.$Proxy1.create(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.<init>(DFSClient.java:3417)
... 7 more
# 하둡 fs 명령어 옵션 정보
[hadoop@master ~]$ hadoop fs
Usage: java FsShell
[-ls <path>]
[-lsr <path>]
[-du <path>]
[-dus <path>]
[-count[-q] <path>]
[-mv <src> <dst>]
[-cp <src> <dst>]
[-rm [-skipTrash] <path>]
[-rmr [-skipTrash] <path>]
[-expunge]
[-put <localsrc> ... <dst>]
[-copyFromLocal <localsrc> ... <dst>]
[-moveFromLocal <localsrc> ... <dst>]
[-get [-ignoreCrc] [-crc] <src> <localdst>]
[-getmerge <src> <localdst> [addnl]]
[-cat <src>]
[-text <src>]
[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
[-moveToLocal [-crc] <src> <localdst>]
[-mkdir <path>]
[-setrep [-R] [-w] <rep> <path/file>]
[-touchz <path>]
[-test -[ezd] <path>]
[-stat [format] <path>]
[-tail [-f] <file>]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-chgrp [-R] GROUP PATH...]
[-help [cmd]]
Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|jobtracker:port> specify a job tracker
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.
Usage: java FsShell
[-ls <path>]
[-lsr <path>]
[-du <path>]
[-dus <path>]
[-count[-q] <path>]
[-mv <src> <dst>]
[-cp <src> <dst>]
[-rm [-skipTrash] <path>]
[-rmr [-skipTrash] <path>]
[-expunge]
[-put <localsrc> ... <dst>]
[-copyFromLocal <localsrc> ... <dst>]
[-moveFromLocal <localsrc> ... <dst>]
[-get [-ignoreCrc] [-crc] <src> <localdst>]
[-getmerge <src> <localdst> [addnl]]
[-cat <src>]
[-text <src>]
[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
[-moveToLocal [-crc] <src> <localdst>]
[-mkdir <path>]
[-setrep [-R] [-w] <rep> <path/file>]
[-touchz <path>]
[-test -[ezd] <path>]
[-stat [format] <path>]
[-tail [-f] <file>]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-chgrp [-R] GROUP PATH...]
[-help [cmd]]
Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|jobtracker:port> specify a job tracker
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.
# 아래의 1번 또는 2번 설정 #
1) 그룹 생성및 유저(로컬 PC 사용계정과 동일한 ID) 생성
* HDFS에서 기본으로 supergroup 그룹을 정의해서 사용함.
> 시스템 그룹 supergroup이 존재하지 않으면 생성
[root@master ~]# groupadd supergroup
[root@master ~]# cat /etc/group
hadoop:x:502:
supergroup:x:503:
> 사용자 생성(그룹,디렉토리,쉘)
[root@master ~]# useradd -g supergroup -d /home/sunshiny -c /bin/bash sunshiny
[root@master ~]# passwd sunshiny
[root@master ~]# groupadd supergroup
[root@master ~]# cat /etc/group
hadoop:x:502:
supergroup:x:503:
> 사용자 생성(그룹,디렉토리,쉘)
[root@master ~]# useradd -g supergroup -d /home/sunshiny -c /bin/bash sunshiny
[root@master ~]# passwd sunshiny
2) 그룹지정 없이 유저(로컬 PC 사용계정과 동일한 ID) 생성및 권한 설정
> 사용자 생성(그룹,디렉토리,쉘)
[root@master ~]# useradd -d /home/sunshiny -c /bin/bash sunshiny
[root@master ~]# passwd sunshiny
> 사용하고자 하는 HDFS 상의 디렉토리에 유저 권한 설정
[hadoop@master ~]$ hadoop fs -chown -R hadoop:sunshiny /user/hadoop
[hadoop@master ~]$ hadoop fs -lsr /user/hadoop/output
drwxr-xr-x - hadoop sunshiny 0 2013-05-30 17:22 /user/hadoop/output/apache_logs
> 그룹 사용자의 퍼미션(Write) 추가 설정
[hadoop@master ~]$ hadoop fs -chmod -R 775 /user/hadoop
[hadoop@master ~]$ hadoop fs -lsr /user/hadoop/output
drwxrwxr-x - hadoop sunshiny 0 2013-05-30 17:22 /user/hadoop/output/apache_logs
[root@master ~]# useradd -d /home/sunshiny -c /bin/bash sunshiny
[root@master ~]# passwd sunshiny
> 사용하고자 하는 HDFS 상의 디렉토리에 유저 권한 설정
[hadoop@master ~]$ hadoop fs -chown -R hadoop:sunshiny /user/hadoop
[hadoop@master ~]$ hadoop fs -lsr /user/hadoop/output
drwxr-xr-x - hadoop sunshiny 0 2013-05-30 17:22 /user/hadoop/output/apache_logs
> 그룹 사용자의 퍼미션(Write) 추가 설정
[hadoop@master ~]$ hadoop fs -chmod -R 775 /user/hadoop
[hadoop@master ~]$ hadoop fs -lsr /user/hadoop/output
drwxrwxr-x - hadoop sunshiny 0 2013-05-30 17:22 /user/hadoop/output/apache_logs
※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
"BigData / Hadoop" 분류의 다른 글
HDFS - Hive 실행시 System Time 오류 (0) | 2016/07/26 |
Client에서 HDFS 환경의 데이터 처리시(읽기, 쓰기) 오류 정리 (0) | 2016/06/21 |
Hadoop - MapReduce 실행 오류 (0) | 2015/11/24 |
Hadoop - 네트워크 위상(Network Topology)과 하둡 (0) | 2015/11/23 |
HDFS - Map / Reduce Task 수 설정 (0) | 2015/09/20 |
HDFS - Eclipse 개발 환경 설정 (0) | 2013/06/09 |
HDFS - DFS 블록 사이즈 수정 업로드 (0) | 2013/05/18 |
HDFS - [복구] HA 모드 백업 복구와 보조 네임노드를 이용한 복구 (0) | 2013/05/14 |
HDFS - [운영] 네임노드, 보조 네임노드 데이터 구조 (0) | 2013/05/14 |
HDFS - [운영] 데이터노드 추가, 제거 (2) | 2013/05/12 |
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/922