데이터 엔지니어 직무와 관련된 지식, 기술질문 등을 정리합니다.
- HDFS의 replication-factor를 3->5로 변경하면 최대 몇 번의 장애까지 견딜 수 있는가? + Erasure Coding
- YARN이 도입된 이유
- HA consensus of HDFS
- 손상된 블록을 탐지하고 처리하는 프로세스
- HDFS의 read/write/replication 절차
- Parquet와 칼럼 기반 스토리지
- Standby Namenode vs Secondary Namenode
- YARN scheduler
- Secured Hadoop - Kerberos
- 클러스터로 구성된 서비스를 무중단으로 업데이트하려면?(Rolling Restart) (link)
- WebHDFS와 HttpFS의 차이점 (link)
- HDFS Federation - Namespace, Block storage, Block pools 개념의 도입 (link)
- Service RPC port 설정이 필요한 경우
How to set up Cloudera Hadoop
- Coursera 강좌 "Big Data Analysis with Scala and Spark"
- RDD, DataFrame, Dataset
- SparkContext and SparkSession
- Spark Executor의 메모리 구조
- 언어에 따른 Spark 성능 차이(Spark API, UDF 등)
- RDD 커스텀 파티셔닝
- RDD Aggregation: groupByKey vs reduceByKey
- repartition과 coalesce의 차이점
- Spark access first n rows: take() vs limit()
- 효율적인 DataFrame Join 전략
- Kafka + Spark Streaming : 2가지 Integration 방법 비교
- spark.executor.memoryOverhead와 spark.memory.offHeap.size 설정은 어떻게 다른가?
- Project Tungsten의 주요 Spark 성능 개선 사항은 무엇인가?
- Spark bucketing이란?
- Spark 3.0 버전대부터 추가된 AQE(Adaptive Query Execution)가 기존 Spark SQL 옵티마이저와 다른 점
- Kafka의 partition은 많을 수록 좋을까?
- Kafka Streams Topology
- Zookeeper가 Kafka에서 수행하는 역할
- 효율적인 Kafka consume 방법 (파티션 수와 컨슈머 수의 관계)
- exactly-once delivery
- Burrow와 Telegraf로 Kafka Lag 모니터링하기 (link)
- ISR (In Sync Replica)
- Kafka의 Controller Broker(KafkaController)란 무엇인가? (link)
- dead letter queue (link)
- Kafka Connect overview
- Schema Registry
- Debezium CDC
- Mirror Maker 2를 이용한 Kafka 클러스터간 토픽 복제 (link)
- Elasticsearch
- 기본 개념과 구조
- How to Set up
- REST API
- ES 성능 튜닝하기 : Shard, Replica의 개수와 사이즈 등 (link)
- es의 ingest pipeline을 이용한 전처리 (link)
- Logstash
- Dynamic DAG 생성하기
- execution_date와 DAG 실행시간 이해하기
- Executor Types: Local vs Remote (link)
- Celery 개념과 Celery Excutor
- schedule_interval과 execution_date 의 난해함 (link)
- catchup 설정과 주의사항 (link)
- Airflow dataset과 Data-aware scheduling (link)
- Airflow의 Trigger와 Sensor, ExternalTaskSensor 의 기능
- Triggerer와 Deferrable Operators & Triggers (link)
- Sensor의 poke, reschedule 모드의 차이 (link)
- 커스텀 operator에 jinja templates 적용하기 - template_fields (link1, link2)
- (도서학습) Apache Airflow 기반의 데이터 파이프라인
- HiveServer2 (link)
- Hive Design and Architecture (link)
- Hive ACID (link)
- Hive Replication (link)
- Hive Query Planner and Optimizer (link)
- Partition, Bucket, Index
- Partitioning vs Bucketing(CLUSTERED BY) (link1, link2)
- Which is faster, SORT BY or ORDER BY in HiveQL?
- What is HCatalog?
- Hive UDF란?
- Hive의 View와 Table
- HiveQL Merge Into
- STORED AS의 INPUTFORMAT, OUTPUTFORMAT, SERDE (link1, link2)
- Trino
- DataHub
- 데이터 거버넌스란 무엇이고 왜 필요한가? (link)
- Apache HBase
- Apache Flink
- Apache Druid
- Apache SeaTunnel (link)
- Sqoop, Logstash, Fluentd, Kafka Connect를 모두 대체할 수 있을까?
- Apache Doris (link)
- Apache Doris is a new-generation open-source real-time data warehouse based on MPP architecture, with easier use and higher performance for big data analytics.
- Apache StreamPark (link)
- Make stream processing easier! easy-to-use streaming application development framework and operation platform
- Apache Airbyte (link)
- The only tool you need to move data
- dbt (link)
- 데이터 엔지니어 면접 질문 모음
- Top 50 Hadoop Interview Questions You Must Prepare In 2020
- Top Hadoop Interview Questions To Prepare In 2020 – HDFS
- Top 20 Apache Spark Interview Questions 2019
- Top 62 Data Engineer Interview Questions & Answers
- Hadoop MapReduce Interview Questions In 2020
- Top Hadoop Interview Questions To Prepare In 2020 – Apache Hive
- Docker
- Kubernetes (link)
- Amazon EC2
- Amazon S3
- Amazon Redshift
- Amazon EMR
- Node Types: Master, Core, Task Nodes (link)
- 멀티스레드와 멀티프로세스
- 교착상태(deadlock)의 발생조건
- 다익스트라의 은행원 알고리즘
- 세마포어와 뮤텍스
- 프로세스 스케줄러
- CPU 스케줄링 알고리즘
- 페이지 교체 알고리즘
- 페이징과 세그먼테이션, 그리도 단편화
- Big-endian, Little-endian
- 캐시 메모리와 버퍼 메모리
- 페이지 캐시와 버퍼 캐시
- Polling과 Interrupt
- Sync와 Async, Blocking과 Non-blocking
- Context Switching이 진행되는 단계
- 데이터 무결성 (Data Integrity)
- 데이터베이스 인덱스
- 데이터베이스 정규화
- 파티셔닝과 샤딩의 차이
- 트랜잭션과 ACID
- DDL / DML / DCL / TCL
- DELETE / TRUNCATE / DROP
- Top 50 SQL Interview Questions
- TCP and UDP
- TCP's 3-way handshake, 4-way handshake
- HTTP 요청 메소드: GET과 POST의 차이
- 웹 브라우저가 웹 페이지의 이미지를 보여주기까지의 과정 (link)
- Array vs Linked List
- Stack and Queue
- Stack으로 Queue 구현하기
- Tree
- Binary Search Tree (BST), (notebook)
- AVL Tree
- Heap
- Hash Table
- Graph
- Sorting, (notebook)
- Recursion
- Dynamic Programming
- Java
- JVM, JIT Compiler, GC
- GC 정리
- ZGC란
- Java 메모리 누수
- On-heap과 Off-heap
- String 대신 StringBuffer, StringBuilder를 쓰는 이유
- 인터페이스 vs 추상클래스
- 싱글톤 패턴
- static 선언과 GC
- Primitive type, Reference type, Wrapper class
- Scala
- Scala의 함수형 프로그래밍 성질
- Scala의 pass-by-name (link)
- 동반 객체 (Companion Object)
- 케이스 클래스 (case class)
- Python
- GIL(Global Interpreter Lock)
- 데이터 클래스 (ataclasses) (link)
- Kotlin
객체지향프로그래밍, 디자인패턴, 아키텍처패턴, 개발방법론, 소프트웨어공학 등
- OOP
- 캡슐화
- 상속
- 메소드 오버라이딩
- 다형성
- 메소드 오버로딩
- 객체지향 5원칙: SOLID
- 객체-관계 매핑 (Object Relational Mapping, ORM) (link)
- Idempotence(멱등성)
- 테스트 도구와 절차
- 트래픽/트랜잭션량 측정
- Lambda architecture (link)
- ETL과 ELT
- Java Spring 스터디
- DAO, DTO, VO, BO, Entity, Service
기타 읽을거리 및 관심있는 연구주제, 토이 프로젝트 등
- 읽을거리
- The future of the data engineer (part 1)
- 쿠팡 빅데이터 플랫폼의 진화, 그리고 향후 발전 방향 (link)
- 도서학습
- 연구주제