분산처리/빅데이터-하둡, 하이브로 시작하기 13

5-2) hive 테이블 1

1. 테이블 하이브에서 테이블은 HDFS 상에 저장된 파일과 디렉토리 구조에 대한 메타 정보 실제 저장된 파일의 구조에 대한 정보와 저장 위치, 입력 포맷, 출력 포맷, 파티션 정보, 프로퍼티에 대한 정보 등 다양한 정보를 가지고 있음 1) 테이블 생성 CREATE 명령을 이용하여 테이블 생성 -- 테이블 생성 쿼리 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [COMMENT col_comment], ... [constraint_specification])] [COMMENT table..

5-1) 하이브(hive)

1. 하이브 하둡 에코시스템 중에서 데이터를 모델링하고 프로세싱하는 경우, 가장 많이 사용하는 데이터 웨어하우징용 솔루션 RDB의 데이터베이서, 테이블과 같은 형태로 HDFS에 저장된 데이터의 구조를 정의하는 방법을 제공 SQL과 유사한 HiveQL 쿼리를 이용하여 데이터를 조회하는 방법을 제공 구성요소 UI 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스 Driver 쿼리를 입력받고 작업을 처리 사용자 세션을 구현하고, JDBC/ODBS 인터페이스 API 제공 Compiler 메타 스토어를 참고하여 쿼리 구문을 분석하고 실행계획을 생성 Metastore 디비, 테이블, 파티션의 정보를 저장 Execution Engine 컴파일러에 의해 생성된 실행 계획을 실행 실행 순서 사용자가 제출..

4) YARN

1. YARN(Yet Another Resource Negotiator) 하둡에서 도입한 클러스터 리소스 관리 및 애플리케이션 생명 주기 관리를 위한 아키텍처 구성 리소스 매니저(Resource Manager) 노드 매니저(Node Manager) 애플리케이션 마스터(Application Master) 컨테이너(Container) 자원 관리 클러스터 자원 관리는 리소스 매니저와 노드 매니저를 이용하여 처리 노드 매니저는 클러스터의 각 노드마다 실행되고 현재 노드의 자원 상태를 관리하여 리소스 매니저에 보고 리소스 매니저는 전달받은 정보를 이용하여 클러스터 전체의 자원을 관리 자원을 분배하는 규칙을 설정하는 스케줄러(Scheduler)에 설정된 규칙에 따라 자원을 효율적으로 분배 라이프사이클 관리 애플리케..

3) 맵리듀스

1. 맵리듀스(MapReduce) 맵리듀스는 간단한 단위 작업을 반복하여 처리할 때 사용하는 프로그래밍 모델 하둡에서 분산처리를 담당하는 맵리듀스 작업은 맵과 리듀스로 나누어져 처리 맵(Map) 단계 간단한 단위작업을 처리 리듀스(Reduce) 단계 맵 작업의 결과물을 모아서 집계 맵, 리듀스 작업은 병렬로 처리가 가능하기 때문에 여러 컴퓨터에서 동시에 작업하여 속도를 높임 2. 처리 단계 입력 데이터를 입력하는 단계 텍스트, csv, gzip 형태의 데이터를 읽어서 맵으로 전달 맵(Map) 입력을 분할하여 키별로 데이터를 처리 컴바이너(Combiner) 네트워크를 타고 넘어가는 데이터를 줄이기 위하여 맵의 결과를 정리 로컬 리듀서라고 함 컴바이너는 작업의 설정에 따라 없을 수도 있음 파티셔너(Parti..

2-4) HDFS 기능 2

1. WebHDFS REST API HDFS는 REST API를 이용해 파일을 조회하고 생성, 수정, 삭제하는 기능을 제공 이 기능을 통해 원격지에서 HDFS의 내용에 접근 REST API를 사용 #hdfs-site.xml dfs.webhdfs.enabled true dfs.namenode.http-address 0.0.0.0:50070 파일 리스트 확인 curl 명령을 이용하여 요청을 처 # /user/hadoop/ 위치를 조회 $ curl -s http://127.0.0.1:50070/webhdfs/v1/user/hadoop/?op=LISTSTATUS 2. HDFS 암호화 민감정보의 보안을 위해 암호화 기능을 제공 디스크에 저장되는 파일을 암호화하여 저장 HDFS의 디렉토리에 접근할 때 하둠 KMS를..

2-3) HDFS 기능 1

1. HDFS Federation 디렉토리(네임 스페이스) 단위로 네임노드를 등록하여 사용하는 것 파일, 디렉토리의 정보를 가지는 네임 스페이스와 블록의 정보를 가지는 블록 풀을 각 네임 노드가 독립적으로 관리 네임스페이스의 블록풀을 네임스페이스 볼륨이라고 하고, 네임스페이스 볼륨은 독립적으로 관리되기 때문에 하나의 네임노드에 문제가 생겨도 다른 네임노드에 영향 X ex) user, hadoop, tmp 3개의 디렉토리가 존재할 때, /user, /hadoop, /tmp 디렉토리 단위로 총 3개의 네임노드를 통해 파일을 관리 2. HDFS 고가용성(High Availability) 고가용성 서버, 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간동안 지속적으로 정상 운영이 가능한 성질 고가용성은 ..

2-3) 블록과 세컨더리 네임노드

1. 블록 HDFS 파일은 지정한 크기의 블록으로 나누어지고, 각 블록은 독립적으로 저장 블록은 탐색 비용을 최소화하기 위해 128MB와 같이 매우 큼 블록이 크면 하드디스크에서 블록의 시작점을 탐색하는 데 걸리는 시간을 줄임 네트워크를 통해 데이터를 전송하는데 더 많은 시간을 할당 여러 개의 블록으로 구성된 대용량 파일을 전송하는 시간은 디스크 IO 속도에 크게 영향 2. 블록 추상화의 이점 파일 하나의 크기가 단일 디스크의 용량보다 더 커짐 큰 파일을 블록 단위로 나누어 단일 디스크의 용량보다 큰 파일 저장 가능 파일 단위보다 블록 단위로 추상화를 하면 스토리지의 서브 시스템을 단순하게 구현 가능 파일 탐색 지점이나 메타정보를 저장할 때 사이즈가 고정됨으로 구현이 단순 복제를 구현할 때 매우 적합 블..

2-2) HDFS

1. HDFS Hadoop Distributed File System 범용 하드웨어에서 동작하고, 장애 복구성을 가지는 분산 파일 시스템 배치러리를 위해 설계됨 빠른 데이터 응답시간이 필요한 작업에 부적합 네임노드가 단일 실패 지점(SPOF)이 되기 때문에 네임노드 관리가 중요 특징 블록 복제를 이용한 장애 복구 장애 복구를 위해 각 블록을 복제하여 저장 기본 복제 단위는 3개로, 하나의 블록이 3개의 블록으로 복제 문제가 생기면 다른 블록을 이용해 데이터 복구 읽기 중심 데이터를 한 번 쓰면 여러 번 읽는 것이 목적 파일의 수정 지원 X 데이터 지역성 데이터가 있는 곳에서 알고리즘을 처리하여 네트워크를 통해 대용량 데이터를 이동시키는 비용을 줄임 2. 구조 마스터 - 슬레이브 구조 하나의 네임노드와 여..

2-1) 하둡이란?

하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신, 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고, 대용량 데이터를 클러스터에서 병렬로 동시에 처리하여 처리 속도를 높이는 것을 목적으로 하는 분산처리를 위한 오픈소스 프레임워크 1. 하둡의 구성 요소 Hadoop Common 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈 Hadoop HDFS 분산저장을 처리하기 위한 모듈 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장 Hadoop YARN 병렬처리를 위한 클러스터 자원관리 및 스케줄링 담당 Hadoop Mapreduce 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈 Hadoop Ozone 하둡을 위한 오브젝트 저장소 2. 하둡의 장단점 장점 오픈소스로 라..

1-3) 빅데이터 에코시스템

빅데이터는 수집, 정제, 적재, 분석, 시각화의 여러 단계를 거침 이 단계를 거치는 동안 여러가지 기술을 이용하여 처리되고, 이 기술들을 통틀어 빅데이터 에코 시스템(Bigdata Eco System)이라고 함 1. 수집 기술 빅데이터 분석을 위한 원천 데이터를 수집하는 기술 원천 데이터는 실시간 데이터 수집 기술, 배치 데이터 수집기술이 있음 원천 데이터의 종류에도 로그 데이터, DB 데이터, API 호출 데이터 등 여러가지 종류가 있음 ex) Flume, Kafka, NiFi 등 2. 작업 관리 기술 빅데이터를 분석하는 여러가지 단계를 효율적으로 생성, 관리하고 모니터링 할 수 있게 도와주는 기술 ex) Airflow, Azkaban 등 3. 데이터 직렬화 빅데이터 에코 시스템이 다양한 기술과 언어로..