Cloudera Manager CSD와 Parcel을 활용한 배포 파이프라인 연동기
과거 사내 빅데이터 모니터링 플랫폼는 클러스터의 상태(Hadoop, HBase 등)를 정밀하게 수집하기 위해, 고객사의 모든 데이터노드(DataNode) 서버마다 “플랫폼 에이전트(Agent)“를 설치해야 했습니다.
소규모 클러스터(10~20대)라면 SSH와 Ansible, Shell 스크립트로 충분히 배포/제어가 가능하지만, 대형 금융권이나 엔터프라이즈의 노드가 수백 대에서 수천 대에 이르는 환경에서는 직접 스크립트로 설치/제어하는 것이 사실상 불가능에 가깝습니다. 더욱이 대부분의 대형 고객사는 하둡 배포판으로 CDH(Cloudera Distribution including Apache Hadoop)를 채택하고 있었으며, 클러스터의 모든 라이프사이클을 Cloudera Manager (CM) 하나로 통제하길 강력히 원했습니다.
이에 따라 플랫폼 에이전트를 써드파티(3rd Party) 앱 취급이 아닌, Cloudera Manager의 네이티브 서비스처럼 관리되도록 만들어야 했고, 그 해답이 바로 CSD (Custom Service Descriptor) 와 Parcel 기술이었습니다.
1. Cloudera Parcel이란?
Parcel은 Cloudera에서 소프트웨어를 배포하기 위해 사용하는 바이너리 패키징 포맷입니다. 리눅스의 RPM이나 DEB 패키지와는 달리, /opt/cloudera/parcels 디렉터리에 독립적으로 압축 해제되며 심볼릭 링크(Alternatives)를 통해 버전을 관리합니다. 이를 통해 OS 시스템 레벨의 라이브러리 충돌을 막고 무중단 롤링 업그레이드(Rolling Upgrade)를 매우 쉽게 지원할 수 있습니다.
Parcel의 핵심 meta 구조
직접 자체 소프트웨어를 Parcel 패키지로 만들기 위해서는 반드시 내부에 meta 디렉터리를 가져야 하며, 주요 구성 요소는 다음과 같습니다:
parcel.json: 애플리케이션 이름, 버전, 제공 컴포넌트, 의존성 등을 정의하는 가장 중요한 메타 파일입니다. 이 안에 환경 구성을 위한 배시 스크립트(Env Script)도 지정합니다.permissions.json: Parcel 압축이 풀렸을 때 파일/디렉터리의 소유자(User/Group)와 권한 모드(chmod)를 정의합니다. 플랫폼 에이전트가 실행될 최소 권한을 여기서 설정했습니다.alternatives.json: 시스템의$PATH에 런타임 심볼릭 링크를 어떻게 잡을지 정의합니다.
Cloudera Manager는 이 Parcel 포맷 중에서도 uncompressed 상태의 폴더 또는 gzip으로 압축된(.tar.gz) 파일만을 지원하므로, 배포 시 빌드 파이프라인에서 gzip 모맷으로 패키징하는 자동화를 구축해야 했습니다.
2. CSD (Custom Service Descriptor)
Parcel이 단순히 “프로그램 바이너리 배포 체계”라면, CSD는 그 프로그램을 Cloudera Manager UI에 등록하고 제어(시작/정지/설정 변경)하기 위한 인터페이스 정의서(XML/Config)입니다.
CSD는 JAR 파일 형태로 묶어서 배포되며, 그 안의 descriptor, service.sdl 파일에 아래와 같은 항목을 명시합니다.
- Start/Stop/Restart 명령 정의: CM이 에이전트를 어떻게 구동시킬 것인가?
- 파라미터 주입: CM UI 화면에서 사용자가 웹 브라우저를 통해 포트 번호, Java Heap Size 등을 입력하면, 이 값을 에이전트의
agent.properties등으로 치환해 줍니다. - Roles: 어떤 서버에 설치할지 (예: 플랫폼 마스터 노드 전용 롤, 플랫폼 에이전트 워커 전용 롤 등).
3. 적용 효과
플랫폼 에이전트를 CSD와 Parcel로 래핑(Wrapping)한 패키지를 고객사 서버망 내에 Local Parcel Repository 형태로 제공하자, 고객사의 하둡 관리자(Admin)는 다음과 같은 엄청난 이점을 얻을 수 있었습니다.
- 원클릭 배포: 수백 대의 노드에 SSH 로깅 없이 Cloudera Manager 웹 UI에서 “플랫폼 에이전트 배포” 버튼 클릭 한 번으로 일괄 설치가 끝납니다.
- 중앙 집중식 통합 제어: 하둡 서비스(HDFS, YARN)를 껐다 킬 때 플랫폼 에이전트도 CM 대시보드에서 함께 제어하고, 에러 로그도 CM 화면에서 직접 볼 수 있었습니다.
- 손쉬운 업그레이드: 플랫폼 1.0 -> 1.1 업데이트 시, 신규 Parcel만 Activate하고 재기동하면 즉시 최신 버전으로 롤링 릴리즈(Rolling Release)가 적용됩니다.
자사 솔루션을 타사의 거대한 인프라 플랫폼 표준 규격에 완벽히 맞추어 융합시키는 이 과정은, 데이터 엔지니어링 생태계를 이해하는 데 있어 아주 흥미롭고 보람찬 과제였습니다.
References: