Hadoop 명령 가이드
Hadoop 명령 가이드 (Hadoop Commands Guide)
이 문서는 Apache Hadoop 프로젝트의 명령줄 인터페이스(CLI)를 안내합니다. 모든 Hadoop 명령과 하위 프로젝트는 일반적으로 동일한 기본 구조를 따릅니다.
개요 (Overview)
모든 Hadoop 명령과 하위 프로젝트는 동일한 기본 구조를 따릅니다.
사용법: shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
| 필드 | 설명 |
|---|---|
shellcommand |
호출되는 프로젝트의 명령. 예: Hadoop common은 hadoop, HDFS는 hdfs, YARN은 yarn을 사용. |
SHELL_OPTIONS |
셸이 Java를 실행하기 전에 처리하는 옵션. |
COMMAND |
수행할 동작. |
GENERIC_OPTIONS |
여러 명령이 지원하는 공통 옵션 집합. |
COMMAND_OPTIONS |
다양한 명령과 그 옵션은 이 문서(Hadoop common 하위 프로젝트)에 설명되어 있습니다. HDFS와 YARN은 다른 문서에서 다룹니다. |
셸 옵션 (Shell Options)
모든 셸 명령은 공통 옵션 집합을 받습니다. 일부 명령의 경우 이 옵션은 무시됩니다. 예를 들어 단일 호스트에서만 실행되는 명령에 --hostnames를 전달하면 무시됩니다.
| 셸 옵션 | 설명 |
|---|---|
--buildpaths |
개발자 버전의 jar를 활성화합니다. |
--config confdir |
기본 Configuration 디렉터리를 덮어씁니다. 기본값은 $HADOOP_HOME/etc/hadoop. |
--daemon mode |
명령이 데몬화를 지원하면(예: hdfs namenode) 적절한 모드로 실행합니다. 지원 모드: start(프로세스를 데몬 모드로 시작), stop(프로세스 중지), status(프로세스의 활성 상태 결정). status는 LSB 호환 결과 코드를 반환합니다. 옵션이 제공되지 않으면 데몬화를 지원하는 명령은 포그라운드에서 실행됩니다. 데몬화를 지원하지 않는 명령의 경우 이 옵션은 무시됩니다. |
--debug |
셸 수준 구성 디버깅 정보를 활성화합니다. |
--help |
셸 스크립트 사용법 정보. |
--hostnames |
--workers가 사용될 때, 다중 호스트 서브커맨드를 실행할 호스트 이름의 공백 구분 목록으로 workers 파일을 덮어씁니다. --workers가 사용되지 않으면 이 옵션은 무시됩니다. |
--hosts |
--workers가 사용될 때, 다중 호스트 서브커맨드를 실행할 호스트 이름 목록을 포함하는 다른 파일로 workers 파일을 덮어씁니다. --workers가 사용되지 않으면 이 옵션은 무시됩니다. |
--loglevel loglevel |
로그 레벨을 덮어씁니다. 유효한 로그 레벨은 FATAL, ERROR, WARN, INFO, DEBUG, TRACE. 기본값은 INFO. |
--workers |
가능하면 workers 파일의 모든 호스트에서 이 명령을 실행합니다. |
일반 옵션 (Generic Options)
많은 서브커맨드는 동작을 변경하기 위한 공통 구성 옵션 집합을 지원합니다.
| 일반 옵션 | 설명 |
|---|---|
-archives <comma separated list of archives> |
컴퓨트 머신에서 압축 해제할 쉼표로 구분된 아카이브 목록을 지정합니다. 작업에만 적용됩니다. |
-conf <configuration file> |
애플리케이션 구성 파일을 지정합니다. |
-D <property>=<value> |
주어진 속성에 사용할 값. |
-files <comma separated list of files> |
map reduce 클러스터에 복사할 쉼표로 구분된 파일 목록을 지정합니다. 작업에만 적용됩니다. |
-fs <file:///> or <hdfs://namenode:port> |
사용할 기본 파일시스템 URL을 지정합니다. 구성의 'fs.defaultFS' 속성을 덮어씁니다. |
-jt <local> or <resourcemanager:port> |
ResourceManager를 지정합니다. 작업에만 적용됩니다. |
-libjars <comma separated list of jars> |
클래스패스에 포함할 쉼표로 구분된 jar 파일 목록을 지정합니다. 작업에만 적용됩니다. |
Hadoop Common 명령
이 모든 명령은 hadoop 셸 명령에서 실행됩니다. 사용자 명령과 관리 명령으로 나뉩니다.
사용자 명령 (User Commands)
hadoop 클러스터 사용자에게 유용한 명령.
archive
hadoop 아카이브를 만듭니다. 자세한 정보는 Hadoop Archives Guide에서 찾을 수 있습니다.
checknative
사용법: hadoop checknative [-a] [-h]
| 명령 옵션 | 설명 |
|---|---|
-a |
모든 라이브러리가 사용 가능한지 확인합니다. |
-h |
도움말 출력 |
이 명령은 Hadoop 네이티브 코드의 가용성을 확인합니다. 자세한 내용은 Native Libraries를 참고하세요. 기본적으로 이 명령은 libhadoop의 가용성만 확인합니다.
classpath
사용법: hadoop classpath [--glob |--jar <path> |-h |--help]
| 명령 옵션 | 설명 |
|---|---|
--glob |
와일드카드 확장 |
--jar path |
경로라는 이름의 jar에 매니페스트로 클래스패스 작성 |
-h, --help |
도움말 출력 |
Hadoop jar와 필수 라이브러리를 얻는 데 필요한 클래스패스를 출력합니다. 인자 없이 호출하면 명령 스크립트가 설정한 클래스패스를 출력하며, 이는 클래스패스 항목에 와일드카드를 포함할 가능성이 높습니다. 추가 옵션은 와일드카드 확장 후의 클래스패스를 출력하거나 클래스패스를 jar 파일의 매니페스트에 씁니다. 후자는 와일드카드를 사용할 수 없고 확장된 클래스패스가 최대 지원 명령줄 길이를 초과하는 환경에서 유용합니다.
conftest
사용법: hadoop conftest [-conffile <path>]...
| 명령 옵션 | 설명 |
|---|---|
-conffile |
검증할 구성 파일 또는 디렉터리의 경로 |
-h, --help |
도움말 출력 |
구성 XML 파일을 검증합니다. -conffile 옵션이 지정되지 않으면 ${HADOOP_CONF_DIR}에서 이름이 .xml로 끝나는 파일이 검증됩니다. 지정하면 해당 경로가 검증됩니다. 파일이나 디렉터리를 지정할 수 있으며, 디렉터리를 지정하면 그 디렉터리에서 이름이 .xml로 끝나는 파일이 검증됩니다. -conffile 옵션은 여러 번 지정할 수 있습니다.
검증은 상당히 최소합니다: XML이 파싱되고 중복 및 빈 속성 이름이 검사됩니다. 이 명령은 XInclude를 지원하지 않습니다. XInclude로 구성 항목을 가져온다면 XML 파일이 무효로 선언됩니다.
credential
사용법: hadoop credential <subcommand> [options]
| 명령 옵션 | 설명 |
|---|---|
create alias [-provider provider-path] [-strict] [-value credential-value] |
주어진 별명으로 저장할 자격 증명을 사용자에게 묻습니다. -provider가 표시되지 않으면 core-site.xml 파일의 hadoop.security.credential.provider.path가 사용됩니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. -value 플래그를 사용해 묻지 않고 자격 증명 값(별명 비밀번호)을 제공합니다. |
delete alias [-provider provider-path] [-strict] [-f] |
제공된 별명의 자격 증명을 삭제합니다. -provider가 표시되지 않으면 core-site.xml 파일의 hadoop.security.credential.provider.path가 사용됩니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. 명령은 -f가 지정되지 않으면 확인을 요청합니다. |
list [-provider provider-path] [-strict] |
모든 자격 증명 별명을 나열합니다. -provider가 표시되지 않으면 core-site.xml의 hadoop.security.credential.provider.path가 사용됩니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. |
check alias [-provider provider-path] [-strict] |
주어진 별명의 비밀번호를 확인합니다. -provider가 표시되지 않으면 core-site.xml의 hadoop.security.credential.provider.path가 사용됩니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. |
자격 증명 제공자 내의 자격 증명, 비밀번호, 비밀을 관리하는 명령.
Hadoop의 CredentialProvider API는 애플리케이션과 그들이 필요한 비밀번호/비밀을 저장하는 방식을 분리할 수 있게 합니다. 특정 제공자 유형과 위치를 나타내려면 사용자가 core-site.xml에 hadoop.security.credential.provider.path 구성 요소를 제공하거나 다음 각 명령에서 -provider 명령줄 옵션을 사용해야 합니다. 이 제공자 경로는 조회해야 할 제공자 목록의 유형과 위치를 나타내는 URL의 쉼표 구분 목록입니다. 예를 들어 다음 경로: user:///,jceks://file/tmp/test.jceks,jceks://[email protected]/my/path/test.jceks
는 현재 사용자의 자격 증명 파일을 User Provider를 통해 조회하고, /tmp/test.jceks의 로컬 파일이 Java Keystore Provider이며, HDFS의 nn1.example.com/my/path/test.jceks 파일도 Java Keystore Provider의 저장소임을 나타냅니다.
credential 명령을 사용할 때는 종종 특정 자격 증명 저장소 제공자에 비밀번호나 비밀을 프로비저닝하는 것입니다. 사용할 제공자 저장소를 명시적으로 나타내려면 -provider 옵션을 사용해야 합니다. 그렇지 않으면 여러 제공자 경로가 주어졌을 때 첫 번째 비일시적(non-transient) 제공자가 사용됩니다. 이것이 의도한 제공자일 수도 있고 아닐 수도 있습니다.
제공자는 종종 비밀번호나 다른 비밀이 제공되도록 요구합니다. 제공자가 비밀번호를 요구하지만 찾을 수 없는 경우 기본 비밀번호를 사용하고 기본 비밀번호가 사용되고 있다는 경고 메시지를 내보냅니다. -strict 플래그가 제공되면 경고 메시지가 오류 메시지가 되고 명령은 오류 상태로 즉시 반환합니다.
예: hadoop credential list -provider jceks://file/tmp/test.jceks
distch
사용법: hadoop distch [-f urilist_url] [-i] [-log logdir] path:owner:group:permissions
| 명령 옵션 | 설명 |
|---|---|
-f |
변경할 객체 목록 |
-i |
실패 무시 |
-log |
로그 출력할 디렉터리 |
한 번에 많은 파일의 소유권과 권한을 변경합니다.
distcp
파일이나 디렉터리를 재귀적으로 복사합니다. 자세한 정보는 Hadoop DistCp Guide에서 찾을 수 있습니다.
dtutil
사용법: hadoop dtutil [-keytab keytab_file -principal principal_name ] subcommand [-format (java|protobuf)] [-alias alias ] [-renewer renewer ] filename…
자격 증명 파일 내에서 hadoop 위임 토큰을 가져오고 관리하는 유틸리티. 더 단순한 fetchdt 명령을 대체하기 위한 것입니다. 각각 자체 플래그와 옵션이 있는 여러 서브커맨드가 있습니다.
파일을 쓰는 모든 서브커맨드에 대해 -format 옵션이 사용할 내부 형식을 지정합니다. java는 fetchdt와 일치하는 레거시 형식입니다. 기본값은 protobuf입니다.
서비스에 연결하는 모든 서브커맨드에 대해 인증에 사용할 kerberos 프린시펄 이름과 keytab 파일을 지정하는 편의 플래그가 제공됩니다.
| 서브커맨드 | 설명 |
|---|---|
print [-alias alias ] filename [ filename2 ...] |
filename(과 filename2 등)에 포함된 토큰의 필드를 출력합니다. alias가 지정되면 alias와 일치하는 토큰만 출력합니다. 그렇지 않으면 모든 토큰을 출력합니다. |
| `get URL [-service scheme ] [-format (java | protobuf)] [-alias alias ] [-renewer renewer ] filename` |
| `append [-format (java | protobuf)] filename filename2 [ filename3 ...]` |
| `remove -alias alias [-format (java | protobuf)] filename [ filename2 ...]` |
| `cancel -alias alias [-format (java | protobuf)] filename [ filename2 ...]` |
| `renew -alias alias [-format (java | protobuf)] filename [ filename2 ...]` |
import base64 [-alias alias ] filename |
base64 토큰에서 토큰을 가져옵니다. alias는 토큰의 service 필드를 덮어씁니다. |
fs
이 명령은 File System Shell Guide에 문서화되어 있습니다. HDFS를 사용할 때 hdfs dfs의 동의어입니다.
gridmix
Gridmix는 Hadoop 클러스터용 벤치마크 도구입니다. 자세한 정보는 Gridmix Guide에서 찾을 수 있습니다.
jar
사용법: hadoop jar <jar> [mainClass] args...
jar 파일을 실행합니다.
대신 yarn jar를 사용해 YARN 애플리케이션을 시작하세요.
jnipath
사용법: hadoop jnipath
계산된 java.library.path를 출력합니다.
kerbname
사용법: hadoop kerbname principal
auth_to_local 규칙을 통해 명명된 프린시펄을 Hadoop 사용자 이름으로 변환합니다.
예: hadoop kerbname [email protected]
kdiag
사용법: hadoop kdiag
Kerberos 문제를 진단합니다.
key
사용법: hadoop key <subcommand> [options]
| 명령 옵션 | 설명 |
|---|---|
create keyname [-cipher cipher] [-size size] [-description description] [-attr attribute=value] [-provider provider] [-strict] [-help] |
-provider 인자가 지정한 제공자 내에서 keyname 인자가 지정한 이름에 대한 새 키를 만듭니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. -cipher 인자로 암호를 지정할 수 있습니다. 기본 암호는 현재 "AES/CTR/NoPadding"입니다. 기본 키 크기는 128입니다. -size 인자로 요청한 키 길이를 지정할 수 있습니다. -attr 인자로 임의의 attribute=value 스타일 속성을 지정할 수 있습니다. -attr은 속성마다 여러 번 지정할 수 있습니다. |
roll keyname [-provider provider] [-strict] [-help] |
-provider 인자가 나타낸 제공자 내에서 지정된 키의 새 버전을 만듭니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. |
delete keyname [-provider provider] [-strict] [-f] [-help] |
-provider가 지정한 제공자 내에서 keyname 인자가 지정한 키의 모든 버전을 삭제합니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. -f가 지정되지 않으면 명령은 사용자 확인을 요청합니다. |
list [-provider provider] [-strict] [-metadata] [-help] |
core-site.xml에 구성되거나 -provider 인자로 지정된 특정 제공자에 포함된 키 이름을 표시합니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. -metadata는 메타데이터를 표시합니다. |
check keyname [-provider provider] [-strict] [-help] |
core-site.xml에 구성되거나 -provider 인자로 지정된 특정 제공자에 포함된 keyname의 비밀번호를 확인합니다. -strict 플래그는 제공자가 기본 비밀번호를 사용하면 명령이 실패하게 합니다. |
| 옵션 | 설명 |
|---|---|
-help |
이 명령의 사용법 출력 |
KeyProvider를 통해 키를 관리합니다. KeyProvider에 대한 자세한 내용은 Transparent Encryption Guide를 참고하세요.
제공자는 종종 비밀번호나 다른 비밀이 제공되도록 요구합니다. 제공자가 비밀번호를 요구하지만 찾을 수 없는 경우 기본 비밀번호를 사용하고 기본 비밀번호가 사용되고 있다는 경고 메시지를 내보냅니다. -strict 플래그가 제공되면 경고 메시지가 오류 메시지가 되고 명령은 오류 상태로 즉시 반환합니다.
참고: 일부 KeyProvider(예: org.apache.hadoop.crypto.key.JavaKeyStoreProvider)는 대문자 키 이름을 지원하지 않습니다.
참고: 일부 KeyProvider는 키 삭제를 직접 실행하지 않습니다(예: 실수 방지를 위해 소프트 삭제를 수행하거나 실제 삭제를 지연). 이러한 경우 삭제 후 같은 이름의 키를 생성/삭제하려 할 때 오류가 발생할 수 있습니다. 기본 KeyProvider의 세부 사항을 확인하세요.
kms
사용법: hadoop kms
KMS(Key Management Server)를 실행합니다.
version
사용법: hadoop version
버전을 출력합니다.
CLASSNAME
사용법: hadoop CLASSNAME
CLASSNAME이라는 클래스를 실행합니다. 클래스는 패키지의 일부여야 합니다.
envvars
사용법: hadoop envvars
계산된 Hadoop 환경 변수를 표시합니다.
관리 명령 (Administration Commands)
hadoop 클러스터 관리자에게 유용한 명령.
daemonlog
사용법:
hadoop daemonlog -getlevel <host:port> <classname> [-protocol (http|https)]
hadoop daemonlog -setlevel <host:port> <classname> <level> [-protocol (http|https)]
| 명령 옵션 | 설명 |
|---|---|
| `-getlevel host:port classname [-protocol (http | https)]` |
| `-setlevel host:port classname level [-protocol (http | https)]` |
완전한 클래스 이름으로 식별되는 데몬의 Log에 대한 로그 레벨을 동적으로 가져오거나 설정합니다. 기본적으로 이 명령은 HTTP 요청을 보내지만, -protocol https 인자를 사용해 HTTPS 요청을 보내도록 덮어쓸 수 있습니다.
예:
$ bin/hadoop daemonlog -setlevel 127.0.0.1:9870 org.apache.hadoop.hdfs.server.namenode.NameNode DEBUG
$ bin/hadoop daemonlog -getlevel 127.0.0.1:9871 org.apache.hadoop.hdfs.server.namenode.NameNode -protocol https
이 설정은 영구적이지 않으며 데몬이 재시작되면 재설정됩니다. 이 명령은 데몬의 내부 Jetty 서블릿에 HTTP/HTTPS 요청을 보내는 방식으로 작동하므로 다음 데몬을 지원합니다.
- Common
- key management server
- HDFS
- name node
- secondary name node
- data node
- journal node
- HttpFS server
- YARN
- resource manager
- node manager
- Timeline server
파일 (Files)
etc/hadoop/hadoop-env.sh
이 파일은 모든 Hadoop 셸 명령이 사용하는 전역 설정을 저장합니다.
etc/hadoop/hadoop-user-functions.sh
이 파일은 고급 사용자가 일부 셸 기능을 오버라이드할 수 있게 합니다.
~/.hadooprc
개별 사용자의 개인 환경을 저장합니다. hadoop-env.sh와 hadoop-user-functions.sh 파일 다음에 처리되며 같은 설정을 포함할 수 있습니다.