Architecting Modern Data Platforms 11

11장 클러스터의 접근 및 상호작용

사용자가 클러스터를 다루는 여러 방법을 살펴보고 클러스터 아키텍처와 프록시, 로드 밸런서 등의 지원 기술을 이용해 이를 가능하게 하는 기법들을 설명한다. 클러스터 서비스와 데이터에 사용자의 접근을 허용하면서도 인증과 권한을 적용하는 보편적인 아키텍쳐에 대해 설명한다.

접근 메커니즘

프로그래밍적인 접근
  • API

    • API 라이브러리는 RPC를 이용하는 메커니즘의 추상화, 보안 고려사항, 데이터 직렬화 등을 제공한다. 일부는 다른 언어를 위한 API 구현체를 제공하거나 여러 언어에 대한 바인딩을 지원하는 RPC 프로토콜 라이브러리를 사용한다.
  • REST

    • HDFS, 우지, 솔라 등이 REST 인터페이스를 제공
    • HTTP 엔드포인트를 통해 상호작용하는 API이다.
  • JDBC, ODBC

    • SQL 엔진은 분석용 질의와 ETL에만 사용해야 한다.

      ETL을 위한 원천 데이터 Select

명령줄 접근

일반적으로 SSH 로 접근한다.

웹 UI

최종 사용자를 위한 웹 인터페이스 제공.

  • 얀 리소스매니저
  • 맵리듀스 작업 히스토리 서버
  • 스파크 히스토리 서버

  • 휴 프로젝트
    • HDFS
    • Hive
    • Impala
    • Oozie
    • Solr
  • 주피터 노트북
  • 아파치 제플린
  • 클라우데라 데이터 사이언스 워크벤치

접근 토폴로지

클러스터 구성과 노드 종류에서 확인한 것처럼 사용자가 서비스에 접근하는 위치를 고려할 때는 사용 편의성, 보안, 격리, 성능, 고가용성, 유연성 등 여러가지 요소를 고려해야 한다.

※ 마스터, 워커 노드 접근 제한, 엣지 노드의 서비스 엔드포인트만 사용하도록 한다.

상호작용 패턴
  • 팬아웃
    • 사용자 앱이 먼저 마스터와 해당 역할의 노드와 통신으로 메타데이터를 확보, 데이터를 수정하기 위해 여러 워커노드들과 직접 통신한다.
    • ex) HDFS, HBase
  • 단일 엔드포인트
    • 사용자 접근을 엔드포인트로 제한, 이 엔드포인트가 사용자 대신 다른 클러스터 노드와 상호작용하는 방식
    • ex) Oozie, Hive
  • 설정 전용 엣지 노드
    • 설정 전용 엣지 노드(게이트웨이)에서 클러스터 서비스를 실행하지 않지만 사용자가 서비스를 사용하기 위해 필요한 클라이언트 설정 파일을 가진 클러스터 매니저처럼 동작한다.
    • 사용자는 설정 전용 노드에 로그인해서 (클러스터 노드에 접근하는) 팬아웃 패턴과 단일 엔드포인트 패턴을 활용하는 애플리케이션과 CLI 도구를 사용하게 된다.
    • ex) Hiveserver2, Oozie, 오케스트레이션(Apache Airflow), 워크벤치 도구(Hue, Apache 제플린), 프록시(HBase REST와 스리프트 게이트웨이, HttpFs)
프록시 접근

ex) 사용자와 개발자는 얀 리소스 매니저 웹 UI에 접근해서 작업을 확인하고 애플리케이션마스터 UI를 사용할 수 있어야 한다.

  • 방화벽 설정에 영향을 받는 호스트 관련 서비스 포트 open
  • 프록시 서버를 이용해 접근 중계
HTTP 프록시

대부분의 서비스는 사용자와 관리자를 위한 웹 UI를 제공한다. 프록시를 사용하기 위해 포워드(forward), 리버스(reverse) 프록시 중 선택해 사용한다. 하지만 각각을 선택해 사용함에 있어 추가적으로 해야하는 작업이 있다. 일반적으로 포워드 프록시를 추천하며 인증 자격증명으로 접근 제한을 관리한다.

웹 프록시는 스퀴드, 아파치 HTTP 서버, HAProxy, 엔진엑스(NGNIX) 등이다. 주로 클러스터 엣지 서비스 노드에 위치하며 대부분 올바른 프록시의 선택은 프록시 자동 설정 파일에 자동적으로 결정된다. 따라서 프록시 서버를 기업 프록시 자동 설정 파일 배포에 추가해야 한다.

SOCKS 프록시

포워드 프록시처럼 동작하지만 HTTP 애플리케이션 프로토콜보다 낮은 수준에서 동작하며, TCP와 UDP 연결을 모두 지원한다. 엣지 노드에 SSH로 로그인할 권한이 있는 클라이언트는 SSH 터널링을 이용해 자신만의 SOCKS 프록시를 셋업할 수 있다.

서비스 프록시

클러스터 아키텍트가 단일 엔드포인트 패턴을 이용해 사용자의 접근을 제한하거나 자바 외 클라이언트 혹은 웹 기반 비즈니스 애플리케이션에 연결성을 제공하고자 할 때 사용한다.

로드 밸런싱

로드 밸런싱은 사용자의 클러스터 접근에 중요한 컴포넌트이며 앞서 설명한 프록시와도 상당히 밀접하게 관련되어 있다. 하지만 로드 밸런싱은 주로 프록시와는 다른 기능을 실행하며, 사실 프록시와 로드 밸런서는 일반적으로 함께 구성한다.

엣지 노드와의 상호작용
  • API
    • SOAP(Simple Object Access Protocol)
    • REST API (Representational State Transfer)
  • 웹 UI
  • 애플리케이션 프록시
  • 로드 밸런싱
  • 명령줄 도구(CLI)
HDFS
  • API, 웹 UI, 애플리케이션 프록시, 로드 밸런싱
  • 명령줄 도구, API, 웹 UI,
맵리듀스
  • 명령줄 도구, 웹 UI
스파크
  • 명령줄 도구, 웹 UI
하이브
  • 명령줄 도구, API, 웹 UI, 애플리케이션 프록시, 로드 밸런싱
임팔라
  • 명령줄 도구, API, 웹 UI, 애플리케이션 프록시, 로드 밸런싱
HBase
  • 명령줄 도구, API, 웹 UI, 애플리케이션 프록시, 로드 밸런싱
솔라
  • 명령줄 도구, API, 웹 UI, 로드 밸런싱
우지
  • 명령줄 도구, API, 로드 밸런싱
쿠두
  • 명령줄 도구, API

접근 보안

관리용 게이트웨이

주로 클러스터 내 노드에 대한 SSH 접근을 중계하는 용도로 사용한다. 내부 클러스터 노드에 로그인하고자 하는 관리자는 우선 이 호스트를 먼저 통과해야 한다.

워크벤치

노트북

랜딩 존

랜딩존(landing zone)이란 HDFS와 다른 시스템 간의 데이터 교환을 위해 존재하며 엣지 노드가 접근할 수 있는 스토리지 공간을 의미한다.

  • CLI

    • hdfs 명령줄(CLI)를 이용해 파일을 HDFS로 업로드

      ※ 보통 사용자는 휴의 파일 브라우저 앱을 이용해 HDFS에 파일을 업로드

  • NFS 게이트웨이

    • NFS 게이트웨이 마운트 포인트에 랜딩 존의 파일을 복사하면 HDFS로 부터 읽거나 쓸수 있다. 하지만 리눅스 내에는 범용적으로 사용하기 때문에 커버로스 보안을 적용하지 않은 상태로 HDFS를 효율적으로 열어 줄 수 없다.(보안상의 문제로 사용하지 않는 것이 좋다.)
  • 웹HDFS

    • 데이터를 읽고 쓸수 있는 REST API를 제공한다.

    • HDFS 네임노드나 HttpFS 서버와 상호작용한다.

      ex) `curl -s -d execute=”select+*+from+sample_08;” -d statusdir=”output” ‘http://localhost:50111/templeton/v1/hive?user.name=root’

  • 플룸