오몰내알 데엔

데이터 엔지니어링/Hadoop

Sec5. Hadoop & RDB

Hive 전체 클러스터에 저장된 데이터를 표준 SQL을 통해 맵리듀스로 변환하여 사용할 수 있다. HiveQL SQL과 아주 비슷하지만 Hive에 최적화 스키마 온 리드 비구조화 된 데이터를 가져와 스키마 확인을 데이터를 읽는 시점에 한다. 데이터 위치 LOAD DATA, Managed 하이브 소유 데이터 LOAD DATA LOCAL, External tables 테이블을 사용은 하지만 소유하지는 않음 사용법 CLI Ambari JDBC, ODBC 워크플로 MySQL과 하둡 통합 Sqoop SQL + Hadoop RDB 데이터를 HDFS, Hive 등으로 임포트 하거나, 반대로 RDB로 익스포트할 수 있다. 증분 임포트가 가능 Import sqoop import —connect jdbc:mysql://l..

데이터 엔지니어링/Hadoop

Sec4. Spark

스파크 개념 대용량 데이터 처리에서 훨씬 빠른 성능을 내는 엔진 확장성 드라이버(SparkContext): 통제 → 네임 노드 클러스터 매니져 Executors: 데이터 노드 Cache Tasks 속도 맵리듀스보다 적어도 100배는 빠른 속도를 가지고 있다. DAG 엔진으로 최적화를 할 수 있다. 유행 AWS, Ebay 등 많은 기업이 스파크를 사용하고 있다. 쉬움 파이썬, 자바, 스칼라로 프로그래밍할 수 있다. RDD 스파크 구성 Spark Streaming Spark SQL SQL로 쿼리를 만들고 변환할 수 있다. MLLib 스파크로 머신러닝 GraphX 소셜 그래프를 통해 분석 RDD(Resilient Distributed Dataset) 탄력적 분산 데이터셋 클러스터 전체에 걸쳐 작업이 고르게 분..

데이터 엔지니어링/Hadoop

Sec3. Pig

Pig 개념 맵과 리듀스를 사용하지 않고 데이터를 처리하지 않아도 됨. 맵리듀스는 프로그래밍하는데 시간이 많이 걸림 간단한 스크립트 언어를 통해 더 쉽고 간결하게 가능 (SQL) 맵리듀스와 테즈를 기반으로 하기 때문에 10배 정도는 더 빠르다. 피그 스크립트 실행 방법 Grunt Script Ambari Pig 스크립트 ratings = LOAD ‘/user/maria_dev/ml-100k/u.data’ AS (userID:int, movieID:int, rating:int, ratingTime:int); metadata = LOAD ‘/user/maria_dev/ml-100k/u.item’ USING PigStorage(’|’) AS (movieID:int, movieTitle:chararray, re..

데이터 엔지니어링/Hadoop

Sec2. HDFS & MapReduce

HDFS HDFS 개요 큰 파일을 다루기 위한 도구 블록으로 분할하여 저장 - 128MB 블록들은 여러 대의 컴퓨터에 저장된다. 또한 각 블록의 복사본을 하나만 저장하는 것이 아니다. → 실패에 대처 HDFS 아키텍처 네임노드: 모든 블록이 어디에 있는지 추적 편집 로그를 통해 새로운 파일의 추가나 이동 등을 추적 데이터 노드: 궁극적으로 클라이언트와 통신 클라이언트 노드가 네임노드에 연락하여 어떤 블록이 어떤 데이터 노드에 있는지 물어보고 데이터 노드에서 실제로 블록을 찾는다. Write File 클라이언트 노드가 네임 노드에 새 항목 생성을 의뢰하고, 네임 노드의 정보가 클라이언트 노드를 통해 데이터 노드 간데이터를 복제한다. 그리고 성공했다면 성공 사실을 다시 네임노드로 전송한다. Read File..

데이터 엔지니어링/Hadoop

Sec1. 하둡 설치 및 개요

하둡 설치 VirtualBox 가상머신에 설치 Hortonworks 배포판을 사용 처음 Ambari를 초기화할 때 굉장히 느렸음. → RAM 용량이 너무 작은걸까? 하둡 개요 하둡의 정의와 탄생, 역사를 알아봄 하둡 생태계 안의 기술 종류와 각각의 정의 → 아직까지 직접 툴들을 다뤄보지 않아서 정의가 와닿지 않았음.

데이터 엔지니어링/데이터 엔지니어링 기초

빅데이터를 지탱하는 기술 Ch6 - 빅데이터 분석 기반 구축

스키마리스 데이터의 애드 훅 분석 스키마리스 데이터 수집하기 데이터 소스 -> 트위터 스트리밍 API 분산 스토리지 -> 몽고DB 분산 데이터 처리 -> Spark 데이터 정형 -> pandas 대화식 콘솔 -> 주피터 노트북 트위터 스트리밍 API를 이용하여 몽고DB에 데이터를 적재한다. 수집한 데이터는 주피터 노트북을 통해 대화식으로 볼 수 있는 환경을 마련해준다. Spark를 이용한 분산 환경 스파크를 이용하여 분산 처리를 할 수 있다. 먼저 몽고DB로부터 데이터를 읽어들이기 위해 데이터프레임을 작성한다. 이 데이터프레임은 Spark SQL을 사용하여 SQL로 집계할 수 있다. 몽고DB는 열 지향 스토리지처럼 읽기에 최적화되어 있지 않아 고속 집계에는 적합하지 않다. 스파크는 데이터 프레임을 토대로..

데이터 엔지니어링/데이터 엔지니어링 기초

빅데이터를 지탱하는 기술 Ch5 - 빅데이터의 파이프라인

워크플로 관리 워크플로: 정형적인 업무 프로세스와 같이 정해진 업무를 원활하게 진행하기 위한 구조 주요 역할 1) 정기적으로 태스크를 실행 2) 비정상적인 상태를 감지하여 그것에 대한 해결을 돕는 기능 기존에는 업무용으로 개발된 워크플로 도구를 사용하였지만 최근에는 데이터를 위한 워크플로 도구를 따로 사용한다. ex) Airflow, Luigi, Oozie 태스크: 데이터를 잇달아 이동하면서 반복되는 정해진 처리 = 데이터의 이동 주요 기능 태스크를 정기적인 스케줄로 실행하고 결과 통지 태스크 간의 의존관계를 정하고 순서에 따라 실행 태스크의 실행 결과를 보관하고, 오류 발생 시 재실행 선언형과 스크립트형 선언형: 제공된 기능만을 이용하여 최소한의 기술로 태스크를 정의한다. 유지 보수성이 높다. ex) ..

데이터 엔지니어링/데이터 엔지니어링 기초

빅데이터를 지탱하는 기술 Ch4 - 빅데이터의 축적

벌크 형과 스트리밍 형의 데이터 수집 객체 스토리지와 데이터 수집 빅데이터는 대부분 확정성이 높은 분산 스토리지에 저장된다. 데이터베이스가 이용되는 경우도 있지만, 기본적으로 객체 스토리지에 저장한다. HDFS, Amazon S3 등이 유명하다. ※ 스토리지와 데이터베이스의 차이 스토리지는 파일 형태가 되면 무엇이든 담을 수 있다. DB는 서버를 통해 가공된 데이터가 담긴다. 게시판에서 글은 DB에 담기고, 업로드한 파일은 스토리지에 담긴다. 스토리지에 저장된 데이터를 더욱 사용하기 쉽게 만들어주는 것이 데이터베이스라고 할 수 있다. 이러한 객체 스토리지는 작은 데이터에는 오히려 비효율적이다. 네트워크를 거쳐 실행하기 때문에 데이터양에 비해 통신 오버헤드가 너무 크기 때문이다. 데이터 수집 객체 스토리지..

데이터 엔지니어링/데이터 엔지니어링 기초

빅데이터를 지탱하는 기술 Ch3 - 빅데이터 분산 처리

대규모 분산 처리의 프레임워크 구조화 데이터와 비구조화 데이터 SQL로 데이터를 집계하는 경우, 테이블이 명확하게 정의되어 있는 구조화된 데이터를 사용한다. 기존의 데이터 웨어하우스에서 데이터는 항상 구조화된 데이터로 축적하는 것이 일반적이었다. 하지만 텍스트, 이미지, 동영상 등의 구조화되지 않은 비구조화 데이터도 점차 늘어나 SQL로 제대로 집계할 수 없게 된다. 비구조화 데이터를 분산 스토리지 등에 저장하고 그것을 분산 시스템에서 처리하는 것이 데이터 레이크의 개념이다. 이 경우는 데이터를 가공하는 과정에서 스키마를 정의하고, 구조화된 데이터로 변환한다. 스키마리스 데이터: 기본 서식은 있지만, 스키마가 정의 안 됨. CSV, JSON, XML 등의 데이터는 서식은 정해져 있지만, 칼럼 수나 데이터..

데이터 엔지니어링/데이터 엔지니어링 기초

빅데이터를 지탱하는 기술 Ch2 - 빅데이터의 탐색

크로스 집계의 기본 크로스 집계의 개념: 트랜잭션 테이블, 크로스 테이블, 피벗 테이블 크로스 테이블: 엑셀에서 많이 보는 형태로 행 방향과 열 방향의 데이터가 교차하는 부분에 숫자 데이터가 들어간다. 트랜잭션 테이블: 데이터베이스를 생각하면 되는데, 행 방향으로 증가하는 테이블이다. 크로스 집계: 트랜잭션 테이블에서 크로스 데이블로 변환하는 과정. 피벗 테이블: 소량의 데이터를 크로스 집계하는데 편리한 것이 스프레드시트의 피벗 테이블 기능이다. 룩업 테이블: 트랜잭션 테이블에 새로운 항목을 추가하는 것이 아니라, 다른 테이블과 결합할 수도 있다. 예를 들면 상품 ID를 사용하여 상품명과 상품 카테고리를 참고하는 형태이다. 트랜잭션 테이블과 룩업 테이블은 서로 독립적으로 관리할 수 있다. 트랜잭션 테이블..