기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR의 이전 AMI 버전에 고유한 Hive 애플리케이션
로그 파일
Amazon EMR AMI 버전 2.x 및 3.x를 사용하면 Hive 로그가 /mnt/var/log/apps/
에 저장됩니다. Hive의 동시 버전을 지원하려면 다음 표와 같이 실행하는 Hive 버전에 따라 로그 파일 이름이 결정됩니다.
Hive 버전 | 로그 파일 이름 |
---|---|
0.13.1 | hive.log
참고이 버전부터 Amazon EMR은 버전 관리 미사용 파일 이름( |
0.11.0 | hive_0110.log
참고Hive 0.11.0의 마이너 버전(예: 0.11.0.1)은 Hive 0.11.0과 동일한 로그 파일 위치를 공유합니다. |
0.8.1 | hive_081.log
참고Hive 0.8.1.1의 마이너 버전(예: 0.8.1.1)은 Hive 0.8.1과 동일한 로그 파일 위치를 공유합니다. |
0.7.1 | hive_07_1.log
참고Hive 0.7.1의 마이너 버전(예: Hive 0.7.1.3 및 Hive 0.7.1.4)은 Hive 0.7.1과 동일한 로그 파일 위치를 공유합니다. |
0.7 | hive_07.log |
0.5 | hive_05.log |
0.4 | hive.log |
분할 입력 기능
0.13.1 이전의 Hive 버전(3.11.0 이전의 Amazon EMR AMI 버전)을 사용하여 분할 입력 기능을 구현하려면 다음을 사용합니다.
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat; hive> set mapred.min.split.size=
100000000
;
이 기능은 Hive 0.13.1에서 더 이상 사용되지 않습니다. Amazon EMR AMI 버전 3.11.0에서 동일한 분할 입력 형식 기능을 사용하려면 다음을 사용합니다.
set hive.hadoop.supports.splittable.combineinputformat=true;
Thrift 서비스 포트
Thrift는 나중에 분석할 수 있도록 데이터 구조를 유지하는 데 사용되는 압축된 이진 직렬화 형식을 정의하는 RPC 프레임워크입니다. 일반적으로 Hive는 다음 포트에서 작동하도록 서버를 구성합니다.
Hive 버전 | 포트 번호 |
---|---|
Hive 0.13.1 | 10000 |
Hive 0.11.0 | 10004 |
Hive 0.8.1 | 10003 |
Hive 0.7.1 | 10002 |
Hive 0.7 | 10001 |
Hive 0.5 | 10000 |
Thrift 서비스에 대한 자세한 내용은 http://wiki.apache.org/thrift/
Hive를 사용하여 파티션 복구
Amazon EMR에는 Amazon S3에 있는 테이블 데이터에서 테이블의 파티션을 복구하는 Hive 쿼리 언어의 문이 포함되어 있습니다. 다음 예제는 이 작업을 보여 줍니다.
CREATE EXTERNAL TABLE (json string) raw_impression
PARTITIONED BY (dt string)
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
파티션 디렉터리 및 데이터가 테이블 정의에 지정된 위치에 있어야 하며 Hive 규칙에 따라 이름이 지정되어야 합니다. 예: dt=2009-01-01
.
참고
Hive 0.13.1 이후에는 이 기능이 msck
repair
을 사용하여 기본적으로 지원되므로 table
recover
partitions
가 지원되지 않습니다. 자세한 내용은 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
스크립트에 Hive 변수 전달
를 사용하여 Hive 단계에 변수를 전달하려면 다음 명령을 AWS CLI입력하고 myKey
를 EC2 키 페어의 이름으로 바꾸고 amzn-s3-demo-bucket
을 버킷 이름으로 바꿉니다. 이 예에서 SAMPLE
은 앞에 -d
스위치가 붙는 변수 값입니다. 이 변수는 Hive 스크립트에서 ${SAMPLE}
로 정의됩니다.
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name "
Test cluster
" --ami-version3.9
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --steps Type=Hive
,Name="Hive Program
",ActionOnFailure=CONTINUE
,\ Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q
,-d,\ INPUT=s3://elasticmapreduce/samples/hive-ads/tables
,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/
,\ -d,SAMPLE
=s3://elasticmapreduce/samples/hive-ads/
]
외부 메타스토어 위치 지정
다음 절차에서는 Hive 메타스토어 위치에 대한 기본 구성 값을 재정의하고 재구성된 메타스토어 위치를 사용하여 클러스터를 시작하는 방법을 보여 줍니다.
EMR 클러스터 외부에 위치한 메타스토어를 생성하려면
-
Amazon RDS를 사용하여 MySQL 또는 Aurora 데이터베이스를 생성합니다.
Amazon RDS 데이터베이스 생성 방법에 대한 자세한 내용은 Amazon RDS 시작하기를 참조하세요.
-
데이터베이스와 ElasticMapReduce-Master 보안 그룹 간의 JDBC 연결을 허용하도록 보안 그룹을 수정합니다.
액세스를 위해 보안 그룹을 수정하는 방법에 대한 자세한 내용은 Amazon RDS 사용 설명서에서 Amazon RDS 보안 그룹을 참조하세요.
-
hive-site.xml
에서 JDBC 구성 값을 설정합니다.-
다음 사항이 포함된
hive-site.xml
구성 파일을 생성합니다.<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mariadb://
hostname
:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password
</value> <description>Password to use against metastore database</description> </property> </configuration>hostname
은 데이터베이스를 실행하는 Amazon RDS 인스턴스의 DNS 주소입니다.username
및password
는 데이터베이스의 보안 인증입니다. MySQL 및 Aurora 데이터베이스 인스턴스에 연결하는 방법에 대한 자세한 내용은 Amazon RDS 사용 설명서에서 MySQL 데이터베이스 엔진 기반 DB 인스턴스에 연결하기 및 Aurora DB 클러스터에 연결을 참조하세요.JDBC 드라이버는 Amazon EMR에서 설치됩니다.
참고
값 속성에는 공백이나 캐리지 리턴이 포함되어서는 안 됩니다. 속성은 모두 한 줄에 나타나야 합니다.
-
hive-site.xml
파일을 Amazon S3 위의 한 위치로 이동합니다(예:s3://
).amzn-s3-demo-bucket/
hive-site.xml
-
-
클러스터를 생성하고 사용자 지정된
hive-site.xml
파일의 Amazon S3 위치를 지정합니다.다음 예제 명령은이 작업을 수행하는 AWS CLI 명령을 보여줍니다.
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name "
Test cluster
" --ami-version3.10
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --bootstrap-actions Name="Install Hive Site Configuration
",\ Path="s3://region
.elasticmapreduce/libs/hive/hive-script",\ Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\ "--hive-site=s3://amzn-s3-demo-bucket
/hive-site.xml","--hive-versions","latest"]
JDBC를 사용하여 Hive에 연결
JDBC를 통해 Hive에 연결하려면 JDBC 드라이버를 다운로드하고 SQL 클라이언트를 설치해야 합니다. 다음 예제에서는 SQL Workbench/J에서 JDBC를 사용하여 Hive에 연결하는 방법을 보여 줍니다.
JDBC 드라이버를 다운로드하려면
-
액세스하려는 Hive 버전에 적합한 드라이버를 다운로드하고 압축을 풉니다. Hive 버전은 Amazon EMR 클러스터를 생성할 때 선택하는 AMI에 따라 다릅니다.
-
Hive 0.13.1 JDBC 드라이버: https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip
-
Hive 0.11.0 JDBC 드라이버: https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0
-
Hive 0.8.1 JDBC 드라이버: https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1
-
-
자세한 내용은 SQL Workbench/J 사용 설명서에서 Installing and starting SQL Workbench/J
를 참조하십시오. -
클러스터 마스터 노드에 대한 SSH 터널을 생성합니다. 연결용 포트는 Hive 버전에 따라 달라집니다. 예제 명령은 Linux
ssh
사용자의 경우 아래 표에, Windows 사용자의 경우 PuTTY 명령에 제공됩니다.Linux SSH 명령 Hive 버전 Command 0.13.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
0.11.0 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10004:localhost:10004 hadoop@master-public-dns-name
0.8.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10003:localhost:10003 hadoop@master-public-dns-name
0.7.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10002:localhost:10002 hadoop@master-public-dns-name
0.7 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10001:localhost:10001 hadoop@master-public-dns-name
0.5 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
Windows PuTTY 터널 설정 Hive 버전 터널 설정 0.13.1 소스 포트: 10000 대상: master-public-dns-name
:100000.11.0 소스 포트: 10004 대상: master-public-dns-name
:100040.8.1 소스 포트: 10003 대상: master-public-dns-name
:10003 -
JDBC 드라이버를 SQL Workbench에 추가합니다.
-
Select Connection Profile(연결 프로필 선택) 대화 상자에서 Manage Drivers(드라이버 관리)를 선택합니다.
-
Create a new entry(새 항목 생성)(빈 페이지) 아이콘을 선택합니다.
-
Name(이름) 필드에
Hive JDBC
을(를) 입력합니다. -
라이브러리에서 Select the JAR file(s)(JAR 파일 선택) 아이콘을 클릭합니다.
-
다음 표에 표시된 대로 JAR 파일을 선택합니다.
Hive 드라이버 버전 추가할 JAR 파일 0.13.1 hive_metastore.jar hive_service.jar HiveJDBC3.jar libfb303-0.9.0.jar libthrift-0.9.0.jar log4j-1.2.14.jar ql.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar TCLIServiceClient.jar
0.11.0 hadoop-core-1.0.3.jar hive-exec-0.11.0.jar hive-jdbc-0.11.0.jar hive-metastore-0.11.0.jar hive-service-0.11.0.jar libfb303-0.9.0.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar
0.8.1 hadoop-core-0.20.205.jar hive-exec-0.8.1.jar hive-jdbc-0.8.1.jar hive-metastore-0.8.1.jar hive-service-0.8.1.jar libfb303-0.7.0.jar libthrift-0.7.0.jar log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7.1 hadoop-0.20-core.jar hive-exec-0.7.1.jar hive-jdbc-0.7.1.jar hive-metastore-0.7.1.jar hive-service-0.7.1.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7 hadoop-0.20-core.jar hive-exec-0.7.0.jar hive-jdbc-0.7.0.jar hive-metastore-0.7.0.jar hive-service-0.7.0.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar
0.5 hadoop-0.20-core.jar hive-exec-0.5.0.jar hive-jdbc-0.5.0.jar hive-metastore-0.5.0.jar hive-service-0.5.0.jar libfb303.jar log4j-1.2.15.jar commons-logging-1.0.4.jar
-
Please select one driver(드라이버 하나를 선택하십시오) 대화 상자에서 다음 표에 해당하는 드라이버를 선택하고 확인을 클릭합니다.
Hive 버전 드라이버 클래스 이름 0.13.1 com.amazon.hive.jdbc3.HS2Driver
0.11.0 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.8.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.5 org.apache.hadoop.hive.jdbc.HiveDriver.jar
-
-
Select Connection Profile(연결 프로파일 선택) 대화 상자로 돌아가면 드라이버 필드가 Hive JDBC로 설정되어 있는지 확인하고 다음 표에 해당하는 URL 필드에 JDBC 연결 문자열을 제공합니다.
Hive 버전 JDBC 연결 문자열 0.13.1 jdbc:hive2://localhost:10000/default
0.11.0 jdbc:hive://localhost:10004/default
0.8.1 jdbc:hive://localhost:10003/default
클러스터가 AMI 버전 3.3.1 이상을 사용하는 경우 연결 프로파일 선택 대화 상자에서 사용자 이름 필드에
hadoop
을 입력합니다.