[Podman] Deep Dive 1편: podman run 은 어떻게 동작할까?-1
·
프로그래밍/Podman
시작하며0편에서는 Podman의 매우 간략한 아키텍처를 살펴보았다.이번 글에서는 가장 기본적인 명령어인 podman run이 어떻게 동작하는지 step-by-step으로 따라가보려고 한다.예제로 아래의 명령어를 실행했을 때를 가정하여 이 글을 따라가겠다.podman run alpine echo hello겉으로 보기에는 단순하다.alpine 이미지를 사용한 컨테이너를 만들고 그 안에서 echo hello를 실행하는 명령이다.하지만 내부적으로는 아래와 같이 많은 단계가 필요하다.podman run alpine echo hello 1. Podman CLI 시작과 command 등록 -> podman CLI 실행 -> Go init()을 통한 command 등록 -> Cobra root ..
[Podman] Deep Dive 0편: Podmman 아키텍처
·
프로그래밍/Podman
Deep Dive를 시작하며최근 Podman에 기여할 기회가 있었다.작업을 진행하면서 단순히 코드를 수정하는 것보다, 그 코드가 Podman 전체 구조 안에서 어떤 위치에 있는지 이해하는 과정이 더 중요하다는 것을 느꼈다. 그래서 이번 시리즈에서는 내가 기여했던 이슈와 PR을 바로 소개하기보다는, 그 전에 이해해야 했던 Podman의 내부 아키텍처와 코드베이스 흐름을 먼저 정리해보려고 한다. 이 시리즈를 통해 Podman이 명령을 어떻게 처리하는지, local과 remote 실행 경로가 어떻게 나뉘는지, 그리고 특정 기능을 수정할 때 어느 계층을 봐야 하는지 코드 레벨에서 따라가 볼 예정이다. 나중에는 실제로 내가 기여했던 이슈와 PR 과정, 구현 방향, 리뷰를 받으며 고민했던 점들도 따로 정리할 생각이..
[Network] VRRP Protocol
·
프로그래밍/Network
VRRP란?VRRP는 여러 라우터 또는 노드를 하나의 Virtual Router 그룹으로 묶고, 클라이언트에게는 하나의 가상 게이트웨이 IP만 보이게 하는 프로토콜일반적으로 서버나 VM은 외부 네트워크로 나가기 위해 하나의 Default Gateway를 사용한다. 만약 갑자기 Gateway 역할을 하는 장비가 장애를 일으키면, 해당 네트워크에 있는 서버들은 외부와 통신할 수 없게 된다.VRRP는 이런 문제를 해결하기 위해 여러 장비가 하나의 Virtual IP를 공유하게 한다. 서버 입장에서는 Gateway IP가 하나로 보이지만, 실제로는 여러 라우터 중 하나가 Master가 되어 해당 IP를 처리하고, 나머지는 Backup으로 대기한다.동작 방식VRRP에서는 여러 라우터 중 하나가 Master가 되고..
[BigData] Parquet vs ORC vs Avro
·
카테고리 없음
Apache Parquet주요 특징컬럼별 압축과 인코딩 지원중첩된 데이터 구조 지원스키마 진화(evolution) 지원효율적인 데이터 스캐닝컬럼 기반 저장 방식Hadoop 에코시스템과 높은 호환성장점분석 쿼리 성능이 우수높은 압축률다양한 프로젝트와의 호환성(Spark, Hive, Impala 등)단점수정이 빈번한 데이터에는 적합하지 않음작은 파일의 경우 오버헤드 발생 가능권장사례대규모 분석 쿼리가 필요한 경우데이터 웨어하우스데이터 레이크머신러닝 데이터셋Apache ORC (Optimized Row Columnar)주요 특징ACID 트랜잭션 지원Hive 성능 최적화를 위해 설계내장된 인덱싱 기능타입별 최적화된 인코딩강력한 압축 지원장점Hive와의 뛰어난 통합빠른 데이터 검색 성능효율적인 메모리 사용단점Hi..
[Spark] Cluster mode vs Client mode
·
프로그래밍/Spark
Spark Driver란?애플리케이션 실행의 핵심 구성 요소로, Spark 애플리케이션의 전체 실행을 지휘하고 제어하는 역할을 한다. Spark Driver는 클러스터 내 작업의 분배와 실행 상태를 관리하며, 사용자로부터 애플리케이션 로직을 전달받아 클러스터와의 상호작용을 수행한다.Client Mode(default)driver가 클러스터 외부에 있는 형태Application Master는 node manager에게 자원 요청만을 하고 Spark에서 사용중인 리소스를 표시주로 개발 환경에서 디버깅 할 때 의미가 있는 형태장점: 로컬 머신에서 실행되기 때문에 디버깅과 실시간 로그 모니터링이 용이하다.단점: 클러스터의 자원을 효율적으로 사용하지 못할 수 있다.Cluster Modedriver가 클러스터 내부..
AWS Glue VS AWS Step Function
·
프로그래밍/aws
AWS Glue란 ?AWS Glue는 사용자가 여러 소스의 데이터를 쉽게 검색, 준비, 이동, 통합할 수 있도록 하는 서버리스 데이터 통합 서비스중앙 집중식 데이터 카탈로그에서 데이터를 관리할 수 있습니다. 추출, 변환, 로드(ETL) 파이프라인을 시각적으로 생성, 실행, 모니터링하여 데이터 레이크에 데이터를 로드할 수 있다.AWS Glue 특징ETL(Extract, Transform, Load) 툴이다.Serverless이기 때문에 운영 부담이 줄고, 데이터의 전처리를 쉽고 빠르게 한다.기본적으로 ETL을 통해서 데이터를 Data Lake(i.e. S3)나 Data Warehouse(i.e. Redshift)에 이동시킨다.Glue는 ETL 작업을 스케줄링하는 기능을 제공한다. 특정 시간이나 이벤트에 따..
[CKA] K8s 핵심 컴포넌트 기초 정리
·
자격증/CKA
Kube-api Server요청의 인증과 유효성을 확인하고 데이터를 검색하고 업데이트 하는 역할/etc/kubernetes/manifests/kube-apiserver.yaml에서 옵션 값들 수정가ETCDETCD: 분산 Key -value 데이터 베이스, 안전하고 빠르다는 특징이 있다etcdctl로 key value 설정 가능 → etcdctl set key valueETCD의 기본 저장 정보Nodes, Pods, Configs, Secrets, Accounts, Roles, BindingsControllerNode-Controller - Node의 상태를 확인 및 유지관리 할 수 있도록 관리하는 컨트롤러Replication-Controller - Replicasets의 상태를 모니터링 및 유지 관리 할..
[AWS] Lambda vpc Nat gateway 설정 with Terraform
·
프로그래밍/aws
Labmda 에 VPC를 연결하게 되면 기본적으로는 Internet에 접근할 수 없게 되어있다.이것을 해결하기 위해 Nat gateway를 설정해서 이 문제를 해결할 수 있다.가용성을 생각해서 만들기 위해 public subnet 2개, private subnet 2개를 할당하였다. #Vpc.tf#vpc 생성resource "aws_vpc" "capstone_vpc" { cidr_block = "10.10.0.0/16" tags ={ Name="capstone_vpc" }}#public subnet, private subnet 생성resource "aws_subnet" "public_subnet_1a" { vpc_id = aws_vpc.capstone_vpc.id cidr_b..
[Airflow] Azure Databricks Spark submit
·
프로그래밍/airflow
1. 필요한 library 설치 DockerfileFROM apache/airflow:2.7.1-python3.11USER rootRUN apt-get update && \ apt-get install -y gcc python3-dev openjdk-11-jdk && \ apt-get clean# Set JAVA_HOME environment variableENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-arm64USER airflowRUN pip install apache-airflow pyspark apache-airflow-providers-databricks 2. Docker-composeversion: '3'x-airflow-common: &airflow-..
[Spark] K8s로 spark cluster 구축하기
·
프로그래밍/Spark
관련 깃허브https://github.com/bitnami/charts/tree/main/bitnami/spark charts/bitnami/spark at main · bitnami/chartsBitnami Helm Charts. Contribute to bitnami/charts development by creating an account on GitHub.github.com1.  Helm 다운로드 helm install my-spark-release oci://registry-1.docker.io/bitnamicharts/spark 2.  상태 확인helm status my-spark-release 3. 웹 ui 확인# localhost:80로 ui 포트포워딩 kubectl port-forward..