[java] TestContainers로 Hadoop 컨테이너를 시작하는 방법

이 문서에서는 TestContainers를 사용하여 Hadoop 컨테이너를 시작하는 방법에 대해 알아보겠습니다. TestContainers는 테스트를 위한 컨테이너 환경을 쉽게 구성할 수 있는 도구로 많은 개발자들에게 인기가 있습니다.

사전 요구 사항

TestContainers 종속성 추가

먼저 Maven 프로젝트를 사용하는 경우 pom.xml 파일에 다음 종속성을 추가합니다:

<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.15.0</version>
    <scope>test</scope>
</dependency>

Gradle 프로젝트를 사용하는 경우 build.gradle 파일에 다음 종속성을 추가합니다:

testImplementation 'org.testcontainers:testcontainers:1.15.0'

Hadoop 컨테이너 시작하기

TestContainers를 사용하여 Hadoop 컨테이너를 시작하려면 다음과 같은 코드를 작성할 수 있습니다:

import org.testcontainers.containers.GenericContainer;
import org.testcontainers.utility.MountableFile;

public class HadoopContainerTest {

    private static final String HADOOP_IMAGE = "sequenceiq/hadoop-docker:2.7.1";

    private static GenericContainer<?> hadoopContainer = new GenericContainer<>(HADOOP_IMAGE)
            .withFileSystemBind("<local_directory>", "<container_directory>")
            .withClasspathResourceMapping("<local_file>", "<container_file>", BindMode.READ_WRITE)
            .withEnv("HADOOP_HOME", "<container_hadoop_home>");

    @Test
    public void testHadoopContainer() {
        // Hadoop 컨테이너 시작
        hadoopContainer.start();

        // Hadoop 테스트 코드 작성

        // Hadoop 컨테이너 종료
        hadoopContainer.stop();
    }

}

위의 코드에서 <local_directory>, <container_directory>, <local_file>, <container_file>, <container_hadoop_home>을 실제 값으로 대체해야 합니다. <local_directory>은 호스트 시스템의 로컬 디렉토리입니다. 이 디렉토리는 컨테이너의 <container_directory>와 바인딩됩니다. <local_file>은 호스트 시스템에서 사용할 파일이고 <container_file>은 컨테이너에서 사용할 파일입니다.

이제 Hadoop 컨테이너를 시작하고 테스트할 준비가 되었습니다. 위의 테스트 코드에서 Hadoop 컨테이너를 활용하여 실제 테스트를 진행할 수 있습니다.

결론

이제 TestContainers를 사용하여 Hadoop 컨테이너를 시작하는 방법에 대해 알아보았습니다. TestContainers를 통해 테스트 환경을 쉽게 구성하고 관리할 수 있으므로 테스트 작성 시 효율성을 높일 수 있습니다.

더 자세한 내용은 TestContainers 공식 문서를 참고하시기 바랍니다.