일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- apache spark
- Python
- 개발자
- 블로그
- 개발자혜성
- pyspark
- Terraform
- mlops
- spark
- recommendation system
- Data engineering
- 데이터엔지니어
- 빅데이터플랫폼
- 클라우데라
- cloudera
- 데이터엔지니어링
- 하둡에코시스템
- redis bloom filter
- 하둡
- DataEngineering
- dataengineer
- 추천시스템
- kubernetes
- kafka
- hadoop
- AWS SageMaker
- 빅데이터
- Spark structured streaming
- eks
- BigData
- Today
- Total
목록DataEngineering (11)
Hyesung Oh
EKS의 권한 제어 관련해서 궁금했던게 많았던 터라 공부하면서 내 나름대로 이해한 내용을 정리해보았다. RBAC (role based access control) K&8에서 정의할 수 있는 리소스 객체들을 이용하여 접근 제어를 하는 개념이다. 아래 리소스들을 사용한다. Role RoleBinding ServiceAccount Role이 binding된 (RoleBinding을 통해) ServiceAccount를 Pod에 할당함으로서 Pod는 지정된 Role을 사용할 수 있다. 이는 ServiceAcocunt 뿐만 아니라 User에도 동일하게 적용할 수 있다. 예제를 통해 작동원리에 대해 더 자세히 이해해보자. 개발자 A(아래 그림에서 test-user)가 kubernetes 클러스터의 특정 namespa..
Kafka 내부 동작 원리 이해하기 (1) Replication 편에 이어서. 다시 한번 강조하면 이 책은 고승덕님의 실전 카프카 개발부터 운영까지를 스터디하며 이해한 내용을 내 나름대로 정리한 포스팅입니다. 따라서 책과 다른 내용이 있다면 그것은 본인이 실수이니 수정 코멘트 부탁드리겠고, 자세하고 정확한 내용은 책을 참고바랍니다. 컨슈머 오프셋 관리 컨슈머가 제대로 동작하려면 오프셋(Offset) 관리가 핵심이다. 어디까지 읽었는지에 대한 북마크라고 이해하면 된다. 그렇다면 오프셋 정보는 어디에서 관리될까? 카프카에 맡길 수도 있고, 컨슈머 자체적으로 HDFS compatible storage에 저장하여 관리할 수도 있다 (ex. Spark Structured Streaming). 전자 방식의 경우 컨..
시작하기에 앞서 이번 시리즈는 고승덕님의 실전 카프카 개발부터 운영까지를 스터디하며 이해한 내용을 내 나름대로 정리한 포스팅임을 밝힌다. 양질의 저서를 출판해주신 고승덕님께 깊이 감사의 말씀을 전합니다. EDA(Event Driven Architecture)에서 Kafka는 SPOF(Single Point of Failure)가 될 수 있다. 따라서 Kafka는 물론이고 Hadoop 등의 분산 시스템에서는 애플리케이션의 HA(High Availability)를 위해 내부적으로 replication 동작을 수행하게 된다. Kafka에서 Topic 생성시 replication factor 지정은 필수이다. 그 외에도 많은 기업에선 클러스터간 미러링, 서버의 지리적 분산 등의 기본적인 조치를 취하게 된다. 분..
Structured Streaming + Kafka Integration Guide (Kafka broker version 0.10.0 or higher) 기준 내용이며, 실무에서 Kafka를 컨슈밍하는 Spark 스트리밍 어플리케이션을 운영하며 나름대로 적용하고 실험해본 옵션들에 대한 본인만의 노트인 점 참고바란다. kafka.group.id (default None) kafka consumer는 항상 하나의 consumer group에 속하게 되는데 이에 대한 식별자이다. Spark 내부적으로 스트리밍 쿼리마다 default generation 대상이며, 이를 특별히 지정하고자 하는 경우 사용한다(예를 들어 Kafka group-based authorization). 하지만 이를 사용하게 되면 bat..
TroubleShooting worker failed # redash.prod.values.yaml # 워커 수 상향 조정 adhocWorker: env: QUEUES: "queries,celery,schemas,default,periodic,scheduled_queries" WORKERS_COUNT: 6 scheduledWorker: env: QUEUES: "scheduled_queries,schemas" WORKERS_COUNT: 1 browser timeout # redash.prod.values.yaml # falsk webserver(gunicorn)의 timeout 값 상향 조정 server: env: GUNICORN_CMD_ARGS: "--timeout 600" scheduling faile..
terraform import kubernetes_config_map.aws_auth kube-system/aws-auth EKS 클러스터 생성 후 사용자 역할을 추가하기 위해 aws-auth configmap를 Terraform resource로 관리하게 되었다. 참고 resource "kubernetes_config_map" "aws_auth" { data = yamldecode(local.eks_prod_aws_auth_configmap_yaml)["data"] metadata { name = "aws-auth" namespace = "kube-system" } } aws-auth configmap의 경우 EKS 클러스터가 만들어질 때 자동으로 클러스터 생성자의 IAM Role이 systemr:ma..
조금만 검색해보면 spark Performance tuning과 관련된 좋은 참고자료들이 많이 있습니다. 그 중에서 실제 팀에서 적용하여 효과를 보고있는 내용만 선별하여 공유하고자 합니다. 크게 코드 레벨에서의 최적화와 configuration 레벨에서의 최적화 두 가지가 있을 것 같습니다. 1. Code Level Opimization point 1. filter -> aggregation. aggregation을 하게 되면 driver 노드에 많은 부하가 있을 수 있습니다. 따라서 이럴 경우 reduceByKey를 이용하여 driver로 전송되는 데이터 사이즈를 최대한 줄이는게 포인트입니다. point 2. Iterator 최대한 활용하기 driver node로 데이터를 불러와서 작업을 해야하는 경우..
Pyspark로 이전하면서 느꼈던 가장 큰 아쉬움 한가지는 바로, Scala의 Dataset API가 지원되지 않는다는 점이었습니다. Dataset API를 통해 객체지향 인터페이스를 마음껏 누리면서도 Spark tunsgten project 이후 (Scala code -> java object -> 자연스레 cpu, memory 오버헤드) CPU, Memory 작업에서 많은 최적화가 이루어져 성능도 우수한 편이었기에 개인적으로 선호했기 때문입니다. Pyspark에서 이러한 아쉬움을 달래기 위해 노력한 과정과 그 과정에서 바뀌게된 생각들을 공유하고자 합니다. Code Style Guide 코드 스타일 가이드는 https://github.com/palantir/pyspark-style-guid를 우선적으로..