HDFS 설정¶
Driverless AI를 통해 Driverless AI 애플리케이션 내에서 HDFS 데이터 소스를 탐색할 수 있습니다. 이 섹션에서는 HDFS와 함께 작동할 수 있도록 Driverless AI를 구성하기 위한 지침을 제공합니다.
Note: Docker 설치 버전에 따라, Driverless AI Docker 이미지를 시작할 때는 docker run --runtime=nvidia
(Docker 19.03 이후) 또는 nvidia-docker
(Docker 19.03 이전) 명령을 사용하십시오. 사용 중인 Docker 버전을 확인하려면 docker version
을 사용하십시오.
구성 속성에 관한 설명¶
Hdfs_config_path
(필수): HDFS 구성 폴더 경로의 위치입니다. 이 폴더에는 여러 구성 파일이 포함될 수 있습니다.hdfs_auth_type
(필수): HDFS 인증을 지정하십시오. 사용 가능한 값은 다음과 같습니다.principal
: 주 사용자로 HDFS로 인증하십시오.keytab
: 키탭으로 인증하십시오(권장 사항). DAI를 서비스로 실행하는 경우 Kerberos 키탭을 DAI 사용자가 소유해야 합니다.keytabimpersonation
: 키탭을 사용하여 가장으로 로그인하십시오.noauth
: 인증이 불필요합니다.
key_tab_path
: 주 키탭 파일의 경로입니다.hdfs_auth_type='principal'
일 때 필요합니다.hdfs_app_principal_user
: Kerberos 애플리케이션의 주 사용자입니다.hdfs_auth_type='keytab'
일 때 필요합니다.hdfs_app_jvm_args
: HDFS 배포용 JVM arg. 각 arg는 공백으로 구분하십시오.-Djava.security.krb5.conf
-Dsun.security.krb5.debug
-Dlog4j.configuration
hdfs_app_classpath
: HDFS 클래스패스hdfs_app_supported_schemes
: 커넥터에 대한 유효한 입력 설정 여부의 확인에 사용되는 DFS 스키마 목록입니다. 예:hdfs_app_supported_schemes = ['hdfs://', 'maprfs://', 'custom://']
다음은 해당 옵션에 대한 기본값입니다. 기본값으로 선택되지 않은 값을 목록에 추가하여 추가 스키마의 지원이 가능합니다.
hdfs://
maprfs://
swift://
hdfs_max_files_listed
: 커넥터 UI에서 확인할 수 있는 최대 파일의 수를 지정합니다. 기본값은 100개의 파일입니다. 더 많은 파일을 확인하려면 기본값을 늘리십시오.hdfs_init_path
: HDFS 브라우저 UI에 표시되는 시작 HDFS 경로를 지정합니다.enabled_file_systems
: 활성화할 파일 시스템. 데이터 커넥터를 제대로 작동시키려면 이 시스템을 구성해야 합니다.
예제 1: 인증 없이 HDFS 활성화¶
본 예시는 HDFS 데이터 커넥터를 활성화하고 HDFS 인증을 비활성화합니다. HDFS 구성 파일은 패스하지 않습니다. 그러나 HDFS 이름 노드의 이름과 IP를 패스하여 Docker DNS를 구성합니다. 이를 통해 사용자는 이름 노드 주소를 사용하여 HDFS에 저장된 데이터를 직접 참조할 수 있습니다. 예시: hdfs://name.node/datasets/iris.csv
.
nvidia-docker run \
--pid=host \
--init \
--rm \
--shm-size=256m \
--add-host name.node:172.16.2.186 \
-e DRIVERLESS_AI_ENABLED_FILE_SYSTEMS="file,hdfs" \
-e DRIVERLESS_AI_HDFS_AUTH_TYPE='noauth' \
-e DRIVERLESS_AI_PROCSY_PORT=8080 \
-p 12345:12345 \
-v /etc/passwd:/etc/passwd:ro \
-v /etc/group:/etc/group:ro \
-v /tmp/dtmp/:/tmp \
-v /tmp/dlog/:/log \
-v /tmp/dlicense/:/license \
-v /tmp/ddata/:/data \
-u $(id -u):$(id -g) \
h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
본 예제에서는 config.toml 파일에서 HDFS 옵션을 구성하는 방법과 Docker에서 Driverless AI의 시작 시 해당 파일을 지정하는 방법을 보여줍니다. 본 예제에서는 인증 없이 HDFS를 활성화합니다.
Driverless AI config.toml 파일을 구성하십시오. 아래 구성 옵션을 설정하십시오. 기본값이 12347로 설정된 procsy 포트도 변경해야 함을 기억하십시오.
enabled_file_systems = "file, upload, hdfs"
procsy_ip = "127.0.0.1"
procsy_port = 8080``
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
본 예제는 config.toml 파일에서 HDFS 데이터 커넥터를 활성화하고 HDFS 인증을 비활성화합니다. 이를 통해 사용자는 이름 노드 주소를 사용해서 HDFS에 저장된 데이터를 직접 참조할 수 있습니다. 예제: hdfs://name.node/datasets/iris.csv
.
Driverless AI config.toml 파일을 내보내거나 ~/.bashrc에 추가합니다. 아래 예를 참조하십시오.
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
config.toml 파일에서 다음 구성 옵션을 지정하십시오. 기본값이 12347로 설정된 procsy 포트도 변경해야 함을 기억하십시오.
# IP address and port of procsy process. procsy_ip = "127.0.0.1" procsy_port = 8080 # File System Support # upload : standard upload feature # file : local file system/server file system # hdfs : Hadoop file system, remember to configure the HDFS config folder path and keytab below # dtap : Blue Data Tap file system, remember to configure the DTap section below # s3 : Amazon S3, optionally configure secret and access key below # gcs : Google Cloud Storage, remember to configure gcs_path_to_service_account_json below # gbq : Google Big Query, remember to configure gcs_path_to_service_account_json below # minio : Minio Cloud Storage, remember to configure secret and access key below # snow : Snowflake Data Warehouse, remember to configure Snowflake credentials below (account name, username, password) # kdb : KDB+ Time Series Database, remember to configure KDB credentials below (hostname and port, optionally: username, password, classpath, and jvm_args) # azrbs : Azure Blob Storage, remember to configure Azure credentials below (account name, account key) # jdbc: JDBC Connector, remember to configure JDBC below. (jdbc_app_configs) # hive: Hive Connector, remember to configure Hive below. (hive_app_configs) # recipe_url: load custom recipe from URL # recipe_file: load custom recipe from local file system enabled_file_systems = "file, hdfs"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
예제 2: 키탭 기반 인증을 통해 HDFS 활성화¶
Notes:
Kerberos 인증 사용 시, Driverless AI 서버의 시간과 Kerberos 서버가 반드시 동기화되어야 합니다. 클라이언트와 DC 사이의 시간 차이가 5분 이상일 경우, Kerberos 오류가 발생합니다.
Driverless AI를 서비스로 실행 시, Kerberos 키탭은 Driverless AI 사용자에 의해 소유되어야 합니다. 아닐 경우, Driverless AI가 Keytab을 읽고 액세스할 수 없고, 단순 인증으로 대체되기 때문에 실패합니다.
해당 예제:
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록 환경 변수
DRIVERLESS_AI_HDFS_APP_PRINCIPAL_USER
를 구성하십시오(보통 user@realm 형식으로).
nvidia-docker run \
--pid=host \
--init \
--rm \
--shm-size=256m \
-e DRIVERLESS_AI_ENABLED_FILE_SYSTEMS="file,hdfs" \
-e DRIVERLESS_AI_HDFS_AUTH_TYPE='keytab' \
-e DRIVERLESS_AI_KEY_TAB_PATH='tmp/<<keytabname>>' \
-e DRIVERLESS_AI_HDFS_APP_PRINCIPAL_USER='<<user@kerberosrealm>>' \
-e DRIVERLESS_AI_PROCSY_PORT=8080 \
-p 12345:12345 \
-v /etc/passwd:/etc/passwd:ro \
-v /etc/group:/etc/group:ro \
-v /tmp/dtmp/:/tmp \
-v /tmp/dlog/:/log \
-v /tmp/dlicense/:/license \
-v /tmp/ddata/:/data \
-u $(id -u):$(id -g) \
h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
해당 예제:
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록 옵션
hdfs_app_prinicpal_user
를 구성하십시오.(보통 user@realm 형식으로)
Driverless AI config.toml 파일을 구성하십시오. 아래 구성 옵션을 설정하십시오. 기본값이 12347로 설정된 procsy 포트도 변경해야 함을 기억하십시오.
enabled_file_systems = "file, upload, hdfs"
procsy_ip = "127.0.0.1"
procsy_port = 8080``
hdfs_auth_type = "keytab"
key_tab_path = "/tmp/<keytabname>"
hdfs_app_principal_user = "<user@kerberosrealm>"
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
해당 예제:
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록 옵션
hdfs_app_prinicpal_user
를 구성하십시오.(보통 user@realm 형식으로)
Driverless AI config.toml 파일을 내보내거나 ~/.bashrc에 추가합니다. 아래 예를 참조하십시오.
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
config.toml 파일에서 아래 구성 옵션을 지정하십시오.
# IP address and port of procsy process. procsy_ip = "127.0.0.1" procsy_port = 8080 # File System Support # upload : standard upload feature # file : local file system/server file system # hdfs : Hadoop file system, remember to configure the HDFS config folder path and keytab below # dtap : Blue Data Tap file system, remember to configure the DTap section below # s3 : Amazon S3, optionally configure secret and access key below # gcs : Google Cloud Storage, remember to configure gcs_path_to_service_account_json below # gbq : Google Big Query, remember to configure gcs_path_to_service_account_json below # minio : Minio Cloud Storage, remember to configure secret and access key below # snow : Snowflake Data Warehouse, remember to configure Snowflake credentials below (account name, username, password) # kdb : KDB+ Time Series Database, remember to configure KDB credentials below (hostname and port, optionally: username, password, classpath, and jvm_args) # azrbs : Azure Blob Storage, remember to configure Azure credentials below (account name, account key) # jdbc: JDBC Connector, remember to configure JDBC below. (jdbc_app_configs) # hive: Hive Connector, remember to configure Hive below. (hive_app_configs) # recipe_url: load custom recipe from URL # recipe_file: load custom recipe from local file system enabled_file_systems = "file, hdfs" # HDFS connector # Auth type can be Principal/keytab/keytabPrincipal # Specify HDFS Auth Type, allowed options are: # noauth : No authentication needed # principal : Authenticate with HDFS with a principal user # keytab : Authenticate with a Key tab (recommended) # keytabimpersonation : Login with impersonation using a keytab hdfs_auth_type = "keytab" # Path of the principal key tab file key_tab_path = "/tmp/<keytabname>" # Kerberos app principal user (recommended) hdfs_app_principal_user = "<user@kerberosrealm>"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
예제 3: 키탭 기반 가장을 통해 HDFS 활성화¶
Notes:
Kerberos 사용 시, Driverless AI 시간이 Kerberos 서버와 동기화되었는지 확인하십시오.
Driverless AI를 서비스로 실행 시, Kerberos 키탭은 Driverless AI 사용자에 의해 소유되어야 합니다.
키탭 기반 가장이 구성된 경우, 로그인 시 대소 문자가 구분됩니다.
해당 예제:
인증 유형을``keytabimpersonation`` 으로 설정합니다.
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록
DRIVERLESS_AI_HDFS_APP_PRINCIPAL_USER
변수를 구성하십시오.(보통 user@realm 형식으로)
nvidia-docker run \
--pid=host \
--init \
--rm \
--shm-size=256m \
-e DRIVERLESS_AI_ENABLED_FILE_SYSTEMS="file,hdfs" \
-e DRIVERLESS_AI_HDFS_AUTH_TYPE='keytabimpersonation' \
-e DRIVERLESS_AI_KEY_TAB_PATH='/tmp/<<keytabname>>' \
-e DRIVERLESS_AI_HDFS_APP_PRINCIPAL_USER='<<appuser@kerberosrealm>>' \
-e DRIVERLESS_AI_PROCSY_PORT=8080 \
-p 12345:12345 \
-v /etc/passwd:/etc/passwd:ro \
-v /etc/group:/etc/group:ro \
-v /tmp/dlog/:/log \
-v /tmp/dlicense/:/license \
-v /tmp/ddata/:/data \
-u $(id -u):$(id -g) \
h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
해당 예제:
인증 유형을``keytabimpersonation`` 으로 설정합니다.
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록
hdfs_app_principal_user
변수를 구성하십시오(보통 user@realm 형식으로)
Driverless AI config.toml 파일을 구성하십시오. 아래 구성 옵션을 설정하십시오. 기본값이 12347로 설정된 procsy 포트도 변경해야 함을 기억하십시오.
enabled_file_systems = "file, upload, hdfs"
procsy_ip = "127.0.0.1"
procsy_port = 8080``
hdfs_auth_type = "keytabimpersonation"
key_tab_path = "/tmp/<keytabname>"
hdfs_app_principal_user = "<user@kerberosrealm>"
config.toml 파일을 Docker 컨테이너에 마운트하십시오.
nvidia-docker run \ --pid=host \ --init \ --rm \ --shm-size=256m \ --add-host name.node:172.16.2.186 \ -e DRIVERLESS_AI_CONFIG_FILE=/path/in/docker/config.toml \ -p 12345:12345 \ -v /local/path/to/config.toml:/path/in/docker/config.toml \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -v /tmp/dtmp/:/tmp \ -v /tmp/dlog/:/log \ -v /tmp/dlicense/:/license \ -v /tmp/ddata/:/data \ -u $(id -u):$(id -g) \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
해당 예제:
인증 유형을``keytabimpersonation`` 으로 설정합니다.
머신의
/tmp/dtmp
폴더에 키탭을 배치하고, 아래의 설명과 같이 파일 경로를 제공하십시오.keytab이 생성된 사용자를 참조할 수 있도록
hdfs_app_principal_user
변수를 구성하십시오(보통 user@realm 형식으로)
Driverless AI config.toml 파일을 내보내거나 ~/.bashrc에 추가합니다. 아래 예를 참조하십시오.
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
config.toml 파일에서 아래 구성 옵션을 지정하십시오.
# IP address and port of procsy process. procsy_ip = "127.0.0.1" procsy_port = 8080 # File System Support # upload : standard upload feature # file : local file system/server file system # hdfs : Hadoop file system, remember to configure the HDFS config folder path and keytab below # dtap : Blue Data Tap file system, remember to configure the DTap section below # s3 : Amazon S3, optionally configure secret and access key below # gcs : Google Cloud Storage, remember to configure gcs_path_to_service_account_json below # gbq : Google Big Query, remember to configure gcs_path_to_service_account_json below # minio : Minio Cloud Storage, remember to configure secret and access key below # snow : Snowflake Data Warehouse, remember to configure Snowflake credentials below (account name, username, password) # kdb : KDB+ Time Series Database, remember to configure KDB credentials below (hostname and port, optionally: username, password, classpath, and jvm_args) # azrbs : Azure Blob Storage, remember to configure Azure credentials below (account name, account key) # jdbc: JDBC Connector, remember to configure JDBC below. (jdbc_app_configs) # hive: Hive Connector, remember to configure Hive below. (hive_app_configs) # recipe_url: load custom recipe from URL # recipe_file: load custom recipe from local file system enabled_file_systems = "file, hdfs" # HDFS connector # Auth type can be Principal/keytab/keytabPrincipal # Specify HDFS Auth Type, allowed options are: # noauth : No authentication needed # principal : Authenticate with HDFS with a principal user # keytab : Authenticate with a Key tab (recommended) # keytabimpersonation : Login with impersonation using a keytab hdfs_auth_type = "keytabimpersonation" # Path of the principal key tab file key_tab_path = "/tmp/<keytabname>" # Kerberos app principal user (recommended) hdfs_app_principal_user = "<user@kerberosrealm>"
완료되면 변경 사항을 저장하고 Driverless AI를 중지/재시작하십시오.
Hadoop 플랫폼 지정¶
다음 예제는 H2O-3 Hadoop 이미지의 빌드 및 Driverless AI 실행 방법을 설명합니다. 본 예제에서는 CDH 6.0을 사용합니다. 다른 플랫폼을 지정하려면 H2O_TARGET
을 변경합니다.
CDH 6.0용 H2O-3을 복제 및 빌드
git clone https://github.com/h2oai/h2o-3.git cd h2o-3 ./gradlew clean build -x test export H2O_TARGET=cdh6.0 export BUILD_HADOOP=true ./gradlew clean build -x test
H2O를 시작합니다.
docker run -it --rm \ -v `pwd`:`pwd` \ -w `pwd` \ --entrypoint bash \ --network=host \ -p 8020:8020 \ docker.h2o.ai/cdh-6-w-hive \ -c 'sudo -E startup.sh && \ source /envs/h2o_env_python3.8/bin/activate && \ hadoop jar h2o-hadoop-3/h2o-cdh6.0-assembly/build/libs/h2odriver.jar -libjars "$(cat /opt/hive-jars/hive-libjars)" -n 1 -mapperXmx 2g -baseport 54445 -notify h2o_one_node -ea -disown && \ export CLOUD_IP=localhost && \ export CLOUD_PORT=54445 && \ make -f scripts/jenkins/Makefile.jenkins test-hadoop-smoke; \ bash'
Driverless AI HDFS 커넥터를 실행합니다.
java -cp connectors/hdfs.jar ai.h2o.dai.connectors.HdfsConnector
예를 들어,
ls
및cp
에 대한 명령을 확인합니다.
{"coreSiteXmlPath": "/etc/hadoop/conf", "keyTabPath": "", authType: "noauth", "srcPath": "hdfs://localhost/user/jenkins/", "dstPath": "/tmp/xxx", "command": "cp", "user": "", "appUser": ""}