2016-08-01 7 views
3

아파치 스톰과 비교했을 때 아파치 헤론의 가장 큰 장점 중 하나는 debug-ability이며 여러 가지 태스크를 번들로 묶는 대신 각 스파우트/볼트 작업을 하나의 헤론 인스턴스 (JVM 프로세스)로 옮기는 방식으로 이루어집니다. 한명의 JMV (폭풍우가 그것을 어떻게했는지).디버깅 아파치 헤론 sccheduler

이 접근법은 토폴로지 디버깅에 도움이됩니다. 하지만 제 질문은 어떻게 스케줄러 나 리소스 관리 파트처럼 헤론의 핵심 부분을 디버깅 할 수 있는지입니다. 로깅/인쇄 출력 이외의 다른 방법을 사용할 수 있습니까? 왜냐하면 이것은 Really Time & 에너지 소비 프로세스이기 때문입니다. IDE와 같은 도구 (예 : IntelliJ)를 사용하여 일부 검사 점을 설정하고 왜가리에서 작업을 예약하는 전체 프로세스를 디버깅 할 수 있습니까?

미리 감사드립니다.

답변

0

오랜 시간 동안이 문제로 고생하고 나면, 마침내 헤론 개발자의 도움을 받아 답변을 찾았습니다. 대답은 원격 디버깅 jvm 프로세스입니다.

문제 해결 섹션 원격 디버깅 헤론에 필요한 지침을 제공 헤론 문서에 추가되었습니다 (디버깅 자바 토폴로지 this page에서 참조). 그것은 좋지만 필요한 것은 아닙니다. 왜냐하면 디버깅 인스턴스 (볼트/스파우트 ...) 때문입니다. 하지만 스케줄러와 같은 디버그 핵심 부품에 필요한

당신이 (에서 찾을 수 있습니다 execute.py에 두 번째 줄을 추가해야 헤론에 대한 전체 원격 디버깅을 사용하려면 등 런처 헤론/도구/CLI/SRC/파이썬) 파일 :

java_opts = ['-D' + opt for opt in java_defines] 
//add this line here 
java_opts.append('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005') 

주소 : 당신의 IDE에서 구성한 포트.

suspend : y는 클라이언트 (디버거 또는 IDE)가 서버에 연결될 때까지 실행을 일시 중단한다는 것을 의미합니다 (jvm 프로세스).

Intellij에서 원격 디버깅을 설정하는 방법은 this link입니다.

중요 사항 : 원본 및 설치 패키지를 다시 컴파일하는 것을 잊지 마십시오. 컴파일하고 당신이 원하는 어디든지 당신의 체크 포인트를 배치하고 터미널에서 topologiy를 제출 한 후 IDE에서 디버깅을 시작하고 검문소로 이동합니다 이제 헤론

bazel build --config=ubuntu heron/... 
bazel run --config=ubuntu -- scripts/packages:heron-client-install.sh --user 
bazel run --config=ubuntu -- scripts/packages:heron-api-install.sh --user --maven 

를 설치합니다. 실행 경로에 체크 포인트를 추가하는 것을 잊지 마십시오. SubmitterMain 또는 SchedulerMain은 좋은 후보가 될 수 있습니다.