하둡은 데이터를 저장할 때 HadoopFileSystem API를 이용하여 파일 시스템에 데이터를 저장합니다. 이 API를 이용하여 HDFS나 S3에 데이터를 저장할 수 있습니다.
HDFS
- 분산 파일 시스템
- 대량의 데이터 처리에 유리
- 큰 사이즈의 파일에 최적화
- 네임노드가 메타데이터를 관리하고, 데이타노드가 데이터를 블록단위로 저장
- 하둡 3.x에서는 이레이져 코딩, 라우터 기반 연합, ozone 도입
- Hadoop FileSystem API, 하둡 fs 커맨드, 웹 UI로 접근
S3
- AWS에서 제공하는 객체 저장 시스템
- 확장성, 고가용성, 내구성, 보안, 성능 등의 특징을 가짐
- 저장용량과 요청 횟수에 따라 과금
- 키 기반으로 데이터가 저장됨. 디렉토리 시스템 아님. 파일 시스템 아님
- REST API, AWS CLI, AWS SDK, S3 콘솔로 접근
S3를 이용하기 위한 파일 시스템 API
S3에 접근하기 위한 파일 시스템은 다음과 같습니다. 이중에서 EMRFS는 AWS의 EMR에서만 사용가능합니다.
- S3: S3FileSystem
- S3N: NativeS3FileSystem
- S3A: S3AFileSystem
- EMRFS: EmrFileSystem
S3 접근 설정
하둡에서 AWS의 S3에 접근하기 위해서는 core-site.xml
에 다음과 같이 설정합니다. 다음은 s3 스키마에 접근하기 위한 설정이며 s3n, s3bfs로 접근하기 위해서는 주간의 스키마명을 바뀌주면 됩니다. (ex: fs.f3n.impl)
<!-- s3 타입 설정 -->
<property>
<name>fs.s3.impl</name>
<value>com.amazon.ws.emr.hadoop.fs.S3FileSystem</value>
</property>
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>액세스키</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>시크릿키</value>
</property>
<!-- s3a 타입 설정 -->
<property>
<name>fs.s3a.access.key</name>
<value>액세스키</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>시크릿키</value>
</property>
EMR에서의 설정
EMR에서는 EMRFS 를 이용합니다.
<property>
<name>fs.s3.impl</name>
<value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value>
</property>
참고
반응형