create table orc_table (
col1 string,
col2 string,
col3 int
)
STORED AS ORC
;
특징:
Hadoop에서 최적화된 컬럼 기반 저장 포맷.
데이터를 컬럼 단위로 저장해 쿼리 성능이 빠름.
Zlib과 Snappy와 같은 고압축 지원.
Hive 전용 포맷으로 다른 시스템과의 호환성이 낮음.
장점:
압축률이 높고, 읽기 성능이 뛰어남.
복잡한 분석 쿼리에서 최적화된 성능 제공.
단점:
데이터 적재 전에 포맷 변환이 필요하며, LOAD DATA 명령어를 지원하지 않음.
2. Parquet
CREATE TABLE parquet_table (
col1 STRING,
col2 STRING,
col3 INT
)
STORED AS PARQUET;
특징:
Hadoop에서 최적화된 컬럼 기반 저장 포맷.
데이터를 컬럼 단위로 저장해 쿼리 성능이 빠름.
Zlib과 Snappy와 같은 고압축 지원.
Hive 전용 포맷으로 다른 시스템과의 호환성이 낮음.
장점:
압축률이 높고, 읽기 성능이 뛰어남.
복잡한 분석 쿼리에서 최적화된 성능 제공.
단점:
데이터 적재 전에 포맷 변환이 필요하며, LOAD DATA 명령어를 지원하지 않음.
!! STORED AS PARQUET는 내부적으로 올바른 InputFormat 및 OutputFormat 클래스를 자동으로 설정합니다.
3. CSV (Textfile)
CREATE TABLE csv_table (
col1 STRING,
col2 STRING,
col3 INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
CREATE TABLE csv_table_partitioned (
col1 STRING,
col2 STRING,
col3 INT
)
PARTITIONED BY (part_col STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
특징:
텍스트 기반 포맷으로 간단하고 가독성이 좋음.
Hadoop에서 기본적으로 지원되며, 별도 라이브러리가 필요하지 않음.
대량 데이터 처리에서는 비효율적(압축 없음, 스키마 없음).
장점:
데이터 적재와 읽기가 매우 간단하며, LOAD DATA 명령어 사용 가능.
단점:
데이터 스키마를 보장하지 않으며, 크기가 크고 느림.
4. Avro
create table avro_table (
col1 string,
col2 string,
col3 int
)
STORED AS AVRO
;
Caused by: java.io.IOException: javax.security.sasl.SaslException: DIGEST-MD5: No common protection layer between client and server at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:755) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:709) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:813) at org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:363) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1649) at org.apache.hadoop.ipc.Client.call(Client.java:1474)
For more detailed output, check the application tracking page: http://호스트:38088/cluster/app/application_1727638811672_0119 Then click on links to logs of each attempt. . Failing the application. at org.apache.tez.client.TezClientUtils.getAMProxy(TezClientUtils.java:945) at org.apache.tez.client.FrameworkClient.getProxy(FrameworkClient.java:187) at org.apache.tez.client.FrameworkClient.shutdownSession(FrameworkClient.java:176) at org.apache.tez.client.TezClient.stop(TezClient.java:738) at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.closeAndIgnoreExceptions(TezSessionState.java:480) at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.startSessionAndContainers(TezSessionState.java:473) at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.access$100(TezSessionState.java:101) at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$1.call(TezSessionState.java:376) at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$1.call(TezSessionState.java:371) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:748) 2024-10-17 15:03:35,913 INFO client.TezClient: Could not connect to AM, killing session via YARN, sessionName=HIVE-4141fb36-7eda-485a-964d-2e41d72d815f, applicationId=application_1727638811672_0119 2024-10-17 15:03:35,917 INFO impl.YarnClientImpl: Killed application application_1727638811672_0119 2024-10-17 15:03:35,918 ERROR tez.TezSessionState: Failed to start Tez session org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1727638811672_0119 failed 2 times due to AM Container for appattempt_1727638811672_0119_000002 exited with exitCode: 1 Failing this attempt.Diagnostics: [2024-10-17 15:03:35.842]Exception from container-launch. Container id: container_e16_1727638811672_0119_02_000001 Exit code: 1
그 전에 Hadoop 에서 고객사가 요청한 보안 사항을 적용 후 Hadoop 재실행을 했는데,
Yarn 은 하지 않았다.
Yarn 을 재실행하니 해결됐는데, 그 이유는
YARN이 재시작되면서 클러스터 내 모든 노드 간의 통신과 인증이 다시 설정되었기 때문. YARN의 NodeManager와 ResourceManager 간의 통신이나 인증 문제가 초기화되고, Hive와의 SASL 연결이 정상적으로 설정되었을 가능성이 크다.
또, Tez가 실행될 때 HDFS를 읽는 것이 일반적이며, Tez는 대규모 데이터 처리 엔진으로, 주로 HDFS나 YARN과 통합되어 동작하며, 데이터를 처리하는 과정에서 HDFS에 저장된 데이터를 읽고 쓸 수 있다.
- yarn.nodemanager.aux-services 속성은 mapreduce.shuffle이라는 보조 서비스를 사용할지를 노드매니저에 알려준다. 보조 서비스를 구현하는 노드매니저에 전달한 후, 서비스를 구현하는 수단으로서 클래스 이름을 전달한다. 이런 특정 설정을 통해 어떤 방식으로 셔플이 일어날지를 맵리듀스에게 알려준다. 기본적으로 비 맵리듀스 잡에 대해서는 노드매니저가 데이터를 셔플하지 않기 때문에, 맵리듀스 서비스를 설정할 필요가 있다.
- yarn.resourcemanager.recovery.enabled : ResourceManager 시작 시 state 복구 여부