SW Engineering/Hadoop 98

Hive Partition 생성,수정,복구

Hive Partition(파티션) · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브는 파일 기반 테이블을 사용하기 때문에 데이터 조회시 모든 ROW 정보를 읽고 처리하는 방식으로 데이터가 많으면 속도가 느려진다. 그래서 데이터를 저장할때, 특정 키 기준으로 파티션을 구성하면 조건에 해당하는 파일만 읽기 때문에 데이터 처리 속도가 빨라진다. 파티션은 데이터를 디렉토리로 분리하여 저장한다. 파티션 컬럼은 WHERE 조건에 컬럼처럼 사용할 수 있다. 아래 스크립트는 파티션 테이블을 생성하는 예제이다. CREATE TABLE tbl( Col_1 STRING ) PARTITIONED BY (date STRING); 파티션은 동적 (Dynamic) 파티션과 고정(Static) 파티션이..

Hive Meta Database

Hive Meta Database · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브(Hive)의 메타정보는 파일의 물리적인 위치 및 데이터에 대한 디렉터리 정보를 저장를 데이터베이스에 저장하며 기본적으로 사용되는 데이터베이스로는 더비(Derby), MySQL, Oracle, PostgreSQL이 있다. 하이브 클라이언트를 이용해서 확인하는 정보는 메타 데이터베이스 정보에 기반하고 있으며, 각 테이블 관련 정보는 메타 데이터베이스에서 직접 쿼리하여 확인이 가능하다. · Hive Architecture : http://sqlmvp.kr/221718439399 hive메타 데이터베이스가 설치된 DB에 접속하여 테이블 목록을 살펴보면 매우 많은 테이블이 있는 것을 확인할 수 있다. ..

Hive Meta Store 설정

Hive Meta Store 설정 · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브(Hive)의 메타정보는 파일의 물리적인 위치 및 데이터에 대한 디렉터리 정보를 저장하고 있다. 메타스토어는 쓰리프트(Thrift) 프로토콜을 사용하여 다른 서비스에 정보를 제공한다. 메타 정보는 JDBC 드라이버를 이용하여 RDBMS에 저장한다. 메타스토어는 3가지 타입(Embedded, Local, Remote)이 있으며 타입에 대한 특징은 아래 링크를 참고 한다. · Hive Architecture : http://sqlmvp.kr/221718439399 [Embedded Meta Store] 하이브 기본설정은 더비DB를 사용하며, 이 DB는 한명의 사용자만 접근할수 있어 실제 서비스에는 ..

MapReduce 메모리 부족으로 인한 쿼리 실패

MapReduce 메모리 부족으로 인한 쿼리 실패 - FAILED Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask · Version : Hadoop 3.0.0-cdh6.3.2, Hive Hue에서 Hive 로 결과셋이 큰 쿼리를 실행하였을때 아래와 같은 오류가 발생하였다. Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 위의 에러로그는 실제 에러로그가 아니기 때문에 문제를 해결하기 위해서는 실제 에러로그를 살펴보아야 한다. 필자의 경우 Ha..

HiveServer2 와 Beeline

HiveServer2 와 Beeline · Version : Hadoop 3.0.0-cdh6.3.2, Hive HiveServer2(HS2)는 HiveServer1의 후속으로 클라이언트가 하이브에 대해 쿼리를 실행할 수 있게 해주는 서비스이며 아래와 같은 특징이 있다. · HS2는 다중 클라이언트 동시성 및 인증을 지원 · JDBC 및ODBC와 같은 공개 API 클라이언트를 지원 · Thrift 기반 하이브 서비스 (TCP 또는HTTP)와 웹 UI용 Jetty 웹 서버를 포함하는 복합 서비스로 실행되는 단일 프로세스 Beeline은 HiveServer2에 접속하여 Command shell을 수행할 수 있도록 도와주는 Client이며 SQLLine CLI를 기반으로하는 JDBC 클라이언트이기도 하다. Be..

Hive CLI

Hive CLI · Version : Hadoop 3.0.0-cdh6.3.2, Hive Hive CLI(Command Line Interface)는 하이브 쿼리를 실행하기 위한 명령 도구로, 쉘을 이용하여 사용자의 명령을 입력할 수 있다. 하이브 쿼리 실행시 다양한 옵션을 사용할 수 있으며, 대표적인 옵션은 아래와 같다. · -e : 커맨드라인으로 실행할 쿼리 · -f : 쿼리가 작성된 파일을 이용하여 실행할 경우 · --hiveconf : 하이브 설정값 입력 · --hivevar 쿼리에 사용할 변수 입력 hive --hiveconf mydb.data.name=queue --hivevar date=20190101 [하이브 쉘 입력] 하이브 CLI를 실행하고 쉘을 이용하여 사용한다. -- 커맨드에서 hiv..

HDFS Safe 모드

HDFS Safe 모드 · Version : Hadoop 3.0.0-cdh6.3.2 HDFS의 세이프(safe) 모드는 서버 메인터넌스를 위해 사용자가 임의로 설정할 수 있으며, 네임노드에 장애가 발생하여 정상적인 동작을 하지 않을때 자동으로 세이프 모드로 전환된다. 세이프 모드는 읽기 전용 상태가 되어 데이터 추가 및 수정이 불가능하며 복제기능이 중단된다. 아래 스크립트는 세이프모드의 상태를 확인, 세이프모드 ON/OFF 대한 명령어 이다. --Safe 모드인지 확인 hdfs dfsadmin -safemode get --Safe 모드 ON hdfs dfsadmin -safemode enter --Safe 모드 OFF hdfs dfsadmin -safemode leave HDFS가 세이프모드 일때, 데이..

HDFS 커럽션 파일 확인

HDFS 커럽션 파일 확인 · Version : Hadoop 3.0.0-cdh6.3.2 HDFS 운영중 데이터 노드에 문제가 있어 데이터 블록이 손실(정확히는 파일은 있으나 관리할 수 없는 상태)이 발생할 수 있다. 이러한 경우는 커럽트(Corrupt) 상태라 한다. 일반적으로 HDFS는 3중화 복제를 사용하기 때문에, 하트비트를 통해 데이터 블록에 문제가 발생하면 자동으로 감지하고 다른 데이터 노드의 복제본을 사용하여 복구를 진행 한다. 하지만 모든 블록에 문제가 발생하여 복구를 하지 못하는 경우 커럽트 상태가 된다. 커럽트 상태의 파일은 삭제하고 원본을 다시 업로드하여 복구해야 한다. 아래 스크립트는 현재 커럽트 블록이 있는지 확인할 수 있는 명령이다. 예제에는 hdfs 내부의 /user/data/ ..

HDFS에서 파일 삭제시 바로 삭제 될까? (휴지통 기능)

HDFS에서 파일 삭제시 바로 삭제 될까? (휴지통 기능) · Version : Hadoop 3.0.0-cdh6.3.2 HDFS에서 파일 삭제시 즉시 삭제되고 빈 공간이 반환될까? HDFS에는 휴지통 기능이라는 것이 있어서, 파일 삭제시 즉시 삭제되지 않고 휴지통 폴더 (/user/사용자명/.trash)로 이동된다. 휴지통에 있는 파일은 복구 할 수 있다. 휴지통 디렉터리는 설정된 간격으로 체크포인트가 실행되고, 설정된 기간이 지나면 영구 삭제 된다. 영구 삭제가 완료되면 유휴 공간으로 반환된다. 휴지통의 삭제 기간은 core-site.xml 파일에서 설정할 수 있다. fs.trash.interval 1440 fs.trash.checkpoint.interval 120 · fs.trash.interval ..

HDFS 고가용성 (High Availability) 개념

HDFS 고가용성 (High Availability) 개념 · Version : HDFS HDFS(Hadoop File System)에서 SPOF(Single Point of Failure) 는 네임노드이다. 네임노드가 손상되거나 중지되면 모든 작업이 중지되고 파일을 읽거나 쓸수 없게 된다. 하둡 2.0 부터는 SPOF를 보완하기 위해 네임노드 이중화를 도입하였으며, 액티브(Active) / 스탠바이(Standby)로 동작한다. 스탠바이 네임노드는 액티브네임노드로 부터 블록 리포트와 하트비트롤 모두 받아서 메타데이터를 유지하고 공유 스토리지를 이용하여 에디트 파일을 공유한다. 액티브 네임노드가 문제가 발생하면 스탠바이 네임노드가 액티브로 동작하게 되는데, 장애를 감지하기 위해 주피커를 이용하며 장애 발생..