아파치 하둡은 대용량의 데이터를 처리하고 저장하기 위한 오픈 소스 프레임워크입니다. 이 프레임워크는 분산 파일 시스템에 데이터를 저장하고 분산 컴퓨팅을 통해 데이터 처리 작업을 수행합니다. 자바와 함께 아파치 하둡의 파일 시스템을 사용하기 위해 알아야 할 몇 가지 인터페이스가 있습니다.
아파치 하둡의 파일 시스템 인터페이스는 org.apache.hadoop.fs
패키지에 정의되어 있습니다. 이 패키지에는 다양한 파일 시스템에 대한 인터페이스와 구현 클래스가 포함되어 있습니다. 일반적으로 가장 많이 사용되는 파일 시스템은 HDFS(Hadoop Distributed File System)입니다.
HDFS를 사용하기 위해 FileSystem
인터페이스를 사용할 수 있습니다. 이 인터페이스는 HDFS와 다른 파일 시스템의 구현체에 대한 추상화 계층을 제공합니다. 다음은 FileSystem
인터페이스의 몇 가지 주요 메서드입니다.
open(Path path)
: 주어진 경로에 대한 스트림을 열어 반환합니다.create(Path path)
: 주어진 경로에 새 파일을 생성하여 반환합니다.rename(Path src, Path dst)
: 주어진 경로의 파일을 변경합니다.delete(Path path, boolean recursive)
: 주어진 경로의 파일을 삭제합니다. 만약recursive
매개변수가 true로 설정되면 하위 디렉터리도 함께 삭제합니다.
FileSystem
인터페이스를 사용하여 HDFS에 파일을 읽고 쓰기 위해서는 다음과 같은 예제 코드를 사용할 수 있습니다.
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HdfsExample {
public static void main(String[] args) {
try {
// HDFS에 연결하기 위한 설정 객체 생성
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
// 파일 시스템 객체 생성
FileSystem fs = FileSystem.get(conf);
// 파일 생성
Path filePath = new Path("/user/hadoop/example.txt");
fs.create(filePath);
// 파일 읽기
Path readPath = new Path("/user/hadoop/example.txt");
InputStream inputStream = fs.open(readPath);
// 파일 쓰기
Path writePath = new Path("/user/hadoop/new-example.txt");
OutputStream outputStream = fs.create(writePath);
// 스트림을 사용하여 데이터 읽기/쓰기
// 파일 삭제
Path deletePath = new Path("/user/hadoop/example.txt");
fs.delete(deletePath, false);
// 파일 시스템 객체 종료
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 예제 코드에서는 HDFS에 연결하기 위해 Configuration
객체를 생성하고 fs.defaultFS
속성을 설정합니다. 그 후, FileSystem
클래스의 정적 메서드인 get()
을 사용하여 파일 시스템 객체를 얻습니다. 이제 해당 객체를 사용하여 파일을 생성하고 읽고 쓸 수 있습니다. 마지막으로, 파일을 삭제한 후 close()
메서드를 호출하여 파일 시스템 객체를 종료합니다.
위의 코드는 간단한 HDFS 파일 시스템 인터페이스의 사용 예를 보여줍니다. 더 자세한 내용은 아파치 하둡 공식 문서와 예제 코드를 참조하시기 바랍니다.