Welcome! 🙋‍♂️ View more

Engineering 💻/Hadoop 8

[HIVE] 하이브-Python 연동 (feat. sqlalchemy)

프로젝트를 진행하면서 Python을 통해 Hive를 컨트롤하는 니즈가 발생했다. sqlalchemy를 활용하여, create select insert를 구현했다. sqlalchemy 란? Python에서 사용가능한 ORM(Object-relational maping)이다. 즉, 데이터베이스의 데이터를 Object필드와 매핑해준다는 것이다. 사실 DB의 스키마와 Object는 서로 기존부터 호환가능성을 두고 만들어진 것이 아니기에 불일치가 발생하는데,, ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 이러한 불일치를 해결한다. 이를 통해서 쿼리를 실행할 수도 있고, Python의 Dataframe과 데이터베이스간을 연결할 수 있다. Hive-Python 연동 1. select from sq..

[Spark] Exception while deleting Spark temp dir 에러 해결

Python에서 Spark을 실행할 때, 아래 에러가 나타났다. 살펴보니 Spark를 실행하는 동안 %Temp% 폴더에 폴더를 생성하는데, 그것을 지울 수 없다는 내용이다. 💡 우선 방법은 있다. %SPARK_HOME%\conf 폴더에 log4j.properties 파일을 수정하는 것이다. 만약 경로에 해당 파일이 없다면 log4j.properties.template를 복사하여 뒤에 .template를 지워주고, 만들어준다. 그리고 메모장으로 해당 파일을 열어 아래 명령어를 입력하고, 저장한다. log4j.logger.org.apache.spark.util.ShutdownHookManager=OFF log4j.logger.org.apache.spark.SparkEnv=ERROR 그러면 Python에서 S..

[Hadoop] Spark 동작 단계

Spark는 Hadoop의 연산 프레임 워크 중 하나로서, 대규모 통합 분석 엔진으로 가장 범용적으로 쓰이는 기술 중 하나이다. 이에 동작 단계에 대해 좀 더 상세히 알아보기 위해 블로그에 정리해보기로 했다. 해당 자료는 이전에 작성했던 글이다. https://deep-flame.tistory.com/10 [Hadoop] 연산 프레임워크 (feat. MapReduce, Spark, Flink) 대다수 프레임워크는 사용자가 정의하거나 합성한 임의의 연산을 잘게 나눠서 분산 실행한다. Hadoop MapReduce 대용량의 데이터를 분산/병렬 컴퓨팅 환경에서 처리하기 위해 제작된 모델이다. 단순 deep-flame.tistory.com Spark의 동작 단계 크게 5단계로 이루어진다. DataFrame이나 ..

[Hadoop] 오케스트레이션 (feat. Oozie, Airflow)

데이터 추출 배치 작업과 데이터 분석 파이프라인은 독립적인 여러 단계로 구성되어있으며, 각 단계마다 다른 기술이 사용될 수 있다. 이런 파이프라인 작업에 대한 오케스트레이션 및 스케줄링과 같은 복잡한 상호 의존 관계를 나타낼 방법이 필요하다. Oozie 하둡에서 사용되는 작업 스케줄링 및 실행 프레임워크이다. 우지서버는 하둡 작업을 직접 실행하지 않고, 하둡 클러스터에 맡기는 아키텍처 덕분에 가볍다 따라서 수백 개의 액션을 동시에 쉽게 실행할 수 있다. 프로세스 Client: XML 파일로 정의된 작업을 제출한다. 처리 과정이 플로우 차트와 비슷하다고 볼 수 있다. Workflow Engine: 기본 실행단위인 액션을 구성하고, 연쇄적으로 함께 실행돼야 하는 액션을 묶어 워크플로우를 구성한다. Sched..

[Hadooop] 분석용 SQL 엔진 (feat. Hive, Impala, Presto)

맵리듀스와 스파크가 아주 유연하고 강력한 프레임워크이긴하지만, 이를 사용하려면 개발/배포/운영에 익숙해야한다. 하지만 대부분의 분석 기법은 SQL을 기반으로 하며, 복잡한 절차없이 분석 작업이 선호될 때가 있다. 그래서 하둡에 저장되는 데이터를 SQL과 비슷한 인터페이스로 사용할 수 있게 해주는 도구를 들이 생겨났다. 이들은 내부적으로 맵리듀스나 스파크를 근간으로하지만, 독자적인 연산 엔진을 갖춘 것도 있다. 각 엔진은 데이터를 쿼리하거나 대량 데이터를 저장하는 데 중점을 둔다. Hive 하둡에 사용되는 데이터 웨어하우징 기술이다. HDFS에 저장된 정형 데이터를 하이브QL로 쿼리할 수 있게 만든 최초의 기술이다. 이는 ETL, 대용량 데이터 처리, 오프라인 배치 작업, 보고서 데이터 생성 등에 적합하다..

[Hadoop] 연산 프레임워크 (feat. MapReduce, Spark, Flink)

대다수 프레임워크는 사용자가 정의하거나 합성한 임의의 연산을 잘게 나눠서 분산 실행한다. Hadoop MapReduce 대용량의 데이터를 분산/병렬 컴퓨팅 환경에서 처리하기 위해 제작된 모델이다. 단순한 구조에도 불구하고, 강력하고 견고하며 확장성이 높다. 큰 데이터가 들어왔을 때, 데이터를 블록으로 나누고 각 블록에 대해서 Map Task와 Reduce Task를 수행한다. Map Task: 파일에 있는 각 레코드를 Key-Value형태로 변환한 결과를 반환한다. (보통 블록당 하나의 Map Task가 배정되는 것이 이상적) Reduce Task: 하나의 키에 대한 여러 값의 집계 또는 결합해서 입력값의 개수보다 더 작은 개수의 결과값을 산출한다. 처리 과정 예시 단어 개수를 세기 위한 파일을 HDFS..

[Hadoop] 핵심 컴포넌트 (feat. HDFS, YARN, ZooKeeper, Hive Metastore)

하둡 에코시스템 빅데이터 활용을 극대화 하기위한 분산 스토리지와 연산 기능을 갖춘 프로젝트. 흔히 '하둡'이라하면 일반적으로 하둡을 중심으로 만들어진 프로젝트와 프레임워크 전부를 의미한다. 핵심 컴포넌트 HDFS (Hadoop Distributed File System) 확장성과 장애 허용성을 가진 분산 파일 시스템 파일 수정이나 삭제가 불가능하고, 추가만 가능하다. 따라서 대규모 데이터를 저장하는 데 탁월하다. 데이터를 분산하여 저장하기 때문에, 개별 디스크나 데이터노드 또는 랙에 장애가 발생하더라도 데이터 안정성이 유지 데이터노드를 클러스터에 추가하기만 하면 파일시스템 용량이 늘어남 클러스터 저장이나 연산 등 하나 이상의 기능을 제공하기 위해 협력하는 서버 조합을 말한다. 워커노드: 데이터 처리/연산..

[DW] 데이터 웨어하우스 기초

데이터 웨어하우스란? 다양한 시스템에서 데이터를 공통의 형식으로 추출하여 적재된 분석용 중앙 데이터베이스를 의미한다. 사용자의 의사결정에 도움을 주기 위해 설계되었다. 만약 분석을 위해 필요한 큰 쿼리들을 시스템에서 사용하는 데이터베이스에 직접 요청한다면 부하로 인해 서비스에 영향을 미칠 수 있다. Ex. 분석을 위해서 1년 간의 고객데이터를 운영되고 있는 데이터베이스에 요청하게 된다면 과도한 트래픽에 의해서 장애가 날 수 있다. 데이터 웨어하우스의 성격 주제지향성 데이터 웨어하우스는 구축 전 사용 목적이 정의되어있다. DW의 데이터들은 이용자에게 이해하기 쉬운 형태로 제공된다. 통합성 여러 소스의 데이터를 통합해서 분석이 가능하다. (데이터 속성의 이름, 단위 등의 일관성을 통합한다.) 시계열성 시간에..