본문 바로가기

IT for developer/Storm

[스톰] Setting up development environment

원문: https://github.com/nathanmarz/storm/wiki/Setting-up-development-environment


Setting up development environment


이 페이지는 스톰 개발 환경을 설정하기 위해 무엇이 필요한지에 대한 개요를 서술한다. 요약해서, 다음 과정들이다.

1. 스톰 릴리즈를 다운로드하고 압축을 풀고 bin/ 디렉토리를 PATH로 설정한다.

2. 리모트 클러스터에서 토폴로지를 시작/중지할수 있기 위해서  ~/.storm/storm/yaml 파일에 클러스터 정보를 넣는다.

좀 더 자세한 설명은 아래에 있다.


What is development environment?


스톰은 두 가지 동작 모드가 있다. 로컬과 리모트 모드, 로컬 모드에서 로컬 머시위 프로세스에서 완전하게 토폴로지를 개발하고 테스트할 수 있다. 리모트 모드에서는 머신들의 클러스터에서 실행되도록 토폴로지를 제출한다.

스톰 개발 환경은 로컬 모드에서 스톰 토폴로지를 개발하고 테스트할 수 있게 하고, 리모트 클러스터에서 수행하기 위한 토폴로지들을 패키지 할 수 있고 리모트 클러스터에서 토폴로지를 제출/종료할 수 있기 위한 모든 것을 가지고 있다.

머신과 리모트 클러스터 간의 관계에 대해서 빠르게 살펴보자. 스톰 클러스터는 마스터 노드에 의해 관리된다. (Nimbus라고 불림) 머신은 코드(jar로 패키지)와 클러스터에 실행하기위한 토폴로지들을 제출하기 위하여 Nimbus와 통신을 하고 Nimbus는 클러스터에 그 코드를 분산하고 토폴로지를 실행하기 위해 워커들을 할당한다. 머신은 Nimbus와 통신하기 위하여 storm 이라고 불리는 커맨드 라인 클라이언트를 사용한다. storm 클라이언트는 리모트 모드일 때만 사용되고 로컬 모드에서 개발하고 테스팅할때는 사용되지 않는다.

Installing a storm release locally


머신으로 부터 리모트 클러스터에게 토폴로지를 제출할 수 있기 원한다면, 스톰을 로컬에 설치해야만 한다. 스톰을 설치하는 것은 리모트 클러스터와 상호작용할 수 있는 storm을 사용할 수 있을 것이다. 스톰을 로컬로 설치하기 위해서는 다운로드후 unzip으로 풀고 bin/ 디렉토리를 PATH로 설정하고 bin/storm 스크립트에 실행가능 권한을 주도록 한다.

스톰을 로컬애 인스톨하는 것은 리모트 클러스터들과 상호작용하기 위함이다. 로컬 모드로 개발, 테스트하기 위해서는 너의 프로젝트에 dev dependency로 스톰을 포함하기 위하여 메이븐(Maven)을 사용하라. 메이븐에 대한 자세한 내용은 여기

STS(Springsource Tool Suite)를 이용하면 간단하게 컴파일 된다. 리눅스에 메이븐 설치하기 귀찮아서 STS로 설치;

maven 프로젝트 생성후 다운 받은 storm starter에서 m2-pom.xml 내용을 pom.xml에 덮어쓴다. 그런후 clojure 빌드 하는 부분을 주석처리 또는 제거한다. 이 에러는 왜나는지는 모르겠고 우선 돌려보고 대충 어떻게 돌아가는지 파악부터 ㄱㄱ 

local 모드에서 java로 실행시킬수 있는 예제는 ExclamationTopology.java ~ 이는 Tutorial에 각 컴포넌트를 사용할 때 나오는 예제이다.

Starting and stopping topologies on a remote cluster


이전 스텝에서 머신에 리모트 스톰 클러스터들과 통신하기 위해 사용되는 storm 클라이언트를 설치했다. 이제 해야할 것은 어떤 스톰 클러스터에게 말할지 클라이언트에게 알려주는 것이다. 그렇게 하기 위해서,  ~/.strom/storm.yaml 파일에 마스터의 호스트 주소를 넣어야만 한다. 다음과 같이 쓰면 된다.

nimbus.host: "123.45.678.890"

그렇지 않으면 AWS위에 스톰 클러스터 제공하기 위한 storm-deploy 프로젝트를 사용한다면 자동적으로 ~/.storm/storm.yaml 파일을 설정할 것이다. 수동으로 스톰 클러스터에 연결하기 위해서는 다음과 같이 "attach"라는 명령어를 사용하면 된다.

lein run :deploy --attach --name mystormcluster

storm-deploy에 대한 상세 정보는 여기