갤럭시 분산으로 작업 수행(서론)

6148 단어 Galaxy
갤럭시 어드벤트 캘린더 2017의 10일차 보도inutano에서 갤럭시의 소극면은 다음과 같은 몇 가지를 열거했다.
  • 인프라 지식이 없으면 설치가 어렵다.
  • 특히 대규모 서버로 작업을 분산하려는 경우 등
  • 이에 따라 본고는 갤럭시를 활용하는 쪽을 고려해 실제 연구실 등 환경 구축·운용과 관련된 인프라 담당자 입장에서 갤럭시 설치를 소개하고자 한다.
    또한 여기에 설명된 내용은 갤럭시 프로젝트 공식 홈페이지Galaxy Administration 페이지에 상세한 설명이 있다.
    또한 이 문서 자체도 Giithub 페이지가 관리하기 때문에 의문점과 수정이 필요한 부분이 발견되면 이슈와pull 요청을 보낼 수 있다.
    갤럭시 활용 형태
    갤럭시를 이용한 형태는 크게 두 가지라고 본다.

  • Public Server(공용 갤럭시 서버) 활용
    이에 대해haruosuz씨는 5,7,8일째 보도에서 자신의 전공 분야의 미생물 관련을 중심으로 해설을 했다.
    세계 다양한 기관이 갤럭시를 장착한 웹 서버를 공개했기 때문에 계좌 신청 후 바로 이용할 수 있다.

  • 공용 갤럭시 서버(개요)
  • 공공 갤럭시 서버(미생물 관련)

  • 공공 갤럭시 서버(미생물 이외)

  • 자체 환경에 갤럭시 설치 및 활용
    자기 전용 서버로 시작하는 방법도 있다.
    일반 리눅스와 맥OS가 장착된 기기라면 설치 자체가 어렵지 않을 것이다.
  • 인터넷에 올릴 수 없는 데이터를 분석하고 싶다
  • 필요한 도구를 추가로 설치하고 싶어요
  • 의 경우 이 방법을 선택합니다.
    국내 커뮤니티프로젝트 이름에서 배포되는 VM도 이 활용 형태에 포함되죠.
    이번 갤럭시 설정에 관해서는 이쪽의 활용 형태에 관한 내용이다.
    갤럭시 기본 아키텍처
    우선 갤럭시의 기본 구조를 확인한다.
    갤럭시의 아키텍처는 사용자가 직접 조작하는 웹 UI의'프런트엔드'측과 데이터 분석 처리를 담당하는 서버 기능인'백엔드'측이 다르다.각자의 특징은 다음과 같다.

  • 프런트엔드
  • 원칙적으로 가능한 한 간단하고 일관된 사용자 조작을 실현할 수 있음
  • 주요 대상 사용자는 실험 시스템 연구원으로 프로그래밍과 명령행 집행의 지식과 경험을 전제로 하지 않는다
  • 이하의 요소 기술 관련
  • JavaScript driven
  • Backbone for MVC

  • webpack & RequireJS for modules

  • 백엔드
  • 원칙적으로 이 인터페이스는 플러그인 가능한 인터페이스로 구성되고 각종 기술에 적응할 수 있다
  • 다음과 같은 플러그인 구성 요소를 가지고 활용할 수 있는 플랫폼의 요구와 결합하여 조합(축소)
  • 데이터베이스 서버(bySQLAlchemy
  • 작업 관리자 또는 클러스터 백엔드
  • 스토리지
  • 프런트엔드(Web) 에이전트
  • 물론 번거로운 일을 고려하지 않고 먼저 시작하고 싶다면 아래 그림과 같은 All-in-ONe으로 구성해 운행할 수 있다.
  • Built in HTTP server (WSGI)
  • Built in database (SQLite)
  • Local job manager

  • 단일 서버 구성의 갤럭시 실행
    위에서 설명한 All-in-One 구성을 실행하는 갤럭시는 매우 간단합니다.
    이 구성에서는 갤럭시 작업이 로컬 서버에서 수행됩니다.
    실행 환경에 Python이 설치된 상태에서 다음 절차를 따라 시작할 수 있습니다.
  • 갤럭시 프로젝트의 Giithub에서 소스 코드git clone
  • 시작 스크립트 실행run.sh
  • $ git clone -b release_17.09 https://github.com/galaxyproject/galaxy.git
    
    Cloning into 'galaxy'...
    remote: Counting objects: 320926, done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 320926 (delta 1), reused 3 (delta 1), pack-reused 320917
    Receiving objects: 100% (320926/320926), 396.37 MiB | 7.69 MiB/s, done.
    Resolving deltas: 100% (256293/256293), done.
    
    $ cd galaxy/
    $ sh run.sh
    
    Initializing config/migrated_tools_conf.xml from migrated_tools_conf.xml.sample
    Initializing config/shed_tool_conf.xml from shed_tool_conf.xml.sample
    Initializing config/shed_tool_data_table_conf.xml from shed_tool_data_table_conf.xml.sample
      :
    
    Starting server in PID 6297.
    serving on http://127.0.0.1:8080
    
    
    run.sh 명령이 실행되면 인터넷에서 필요한 패키지 등을 취득하기 위해서는 네트워크 환경에 따라 시간이 걸리지만 조금 있으면 갤럭시 웹 서버가 가동된다.
    웹 브라우저에서 localhost:8080을 방문하면 평소에 자주 보던 갤럭시 화면을 볼 수 있을 것이다.

    클러스터 구성의 갤럭시 환경
    단일 서버 구성은 로컬 서버에서만 작업을 수행할 수 있기 때문에 막대한 데이터와 무거운 처리를 처리하기 어려울 수 있습니다.
    백엔드 옆에 있는 플러그인을 설정하면 그룹에서 작업을 수행할 수 있습니다.
    갤럭시는 작업의 원격 집행·분산 집행 메커니즘으로 이미 있는 각종 분산 자원 스케줄러와의 연결을 지원하고 있다.
  • Univa Grid Engine
  • Slurm
  • HTCondor
  • PBS Professional
  • 추가 DRMAA 인터페이스 대응 제품
  • 클러스터로 구성된 갤럭시를 설치할 때 백엔드 측면의 플러그인으로 어떤 것을 선택해야 할지 고민이 되는데, 우선 오픈소스에서 가장 사용하기 쉬운 조합을 시도해 보고 싶다.
    시간이 길어졌기 때문에 다음은 내일
    Reference
  • Galaxy Architecture
    https://github.com/galaxyproject/galaxy/blob/master/doc/source/slideshow/architecture/galaxy_architecture.md
  • Galaxy Administration > Subtopics in Configuration > Running Galaxy Tools on a Cluster
    https://galaxyproject.org/admin/config/performance/cluster/
  • 좋은 웹페이지 즐겨찾기