이클립스를 이용하여 하둡 hdfs 파일전송을 하는 방법을 알아보자
먼저 하둡 hdfs 파일전송 프로젝트를 작성해야한다.
1. 이클립스 프로젝트 생성
2. Dependency jar 파일 추가 (하단 이미지 참조)
3. 소스 작성
샘플소스 >>
import java.io.IOException; import org.apache.hadoop.conf.Configuration; public class HDFSClient { Configuration conf = new Configuration(); |
소스 내용 >>
HDFS(경로 폴더)로 hello.txt 라는 파일 생성
hello.txt 에 'Hello, world!\n' 쓰기
hello.txt 읽어서 출력
java.io.IOException: Permission denied 에러 발생시 해결방안 |
실행을 해보니 아래와 같은 오류가 발생하였다.
java.io.IOException: Permission denied 에러 발생 >>
Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=CKNB, access=WRITE, inode="user":root: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 HDFSClient.main(HDFSClient.java:28) Caused by: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Permission denied: user=CKNB, access=WRITE, inode="user":root: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:5422) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:5396) 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:661) at org.apache.hadoop.hdfs.server.namenode.NameNode.create(NameNode.java:640) 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:1136) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1387) at org.apache.hadoop.ipc.Client.call(Client.java:1107) |
확인해보니 사용 권한이 없는 폴더에 대한 읽기/쓰기의 경우 이러한 에러가 발생한다.
해당 폴더에 대한 권한을 주었다.
# bin/hadoop fs -chmod 777 /tmp/ |
777 은 모든 사용자에게 권한을 부여하는 것이다.
리눅스 파일 권한 설정 참조 >>
-rwxrwxrwx ( 777 ) |
실행 결과 |
다시 실행하니 오류없이 실행되었다.
원격 접속하여 생성된 파일을 확인해 보았다.
리눅스 단에서 파일 내용확인
'My > works' 카테고리의 다른 글
MFC 다이얼로그 item 탭 순서 변경 (0) | 2013.08.07 |
---|---|
package 안에서 jni 사용하기 (0) | 2013.03.19 |
[html] input="file" 버튼 이미지 변경하는 방법 (0) | 2013.03.07 |
이클립스 Save Failed 오류 해결 (1) | 2013.03.06 |
mysql 테이블 생성 (create table) 예제 (0) | 2013.02.27 |
하둡 hadoop datanode 동작 오류 해결 (2) | 2013.02.21 |
자바 (JAVA) 설치 및 환경변수 설정하기 (쉬운설명) (0) | 2013.02.06 |
Hive 사용법 및 쿼리 샘플코드 (4) | 2013.01.28 |
이클립스에서 (java) hive thrift 연동하여 실행하기 (1) | 2013.01.28 |
Hive (하이브) 설치 및 환경구축하기 (0) | 2013.01.24 |