안녕하세요.
Default task scheduler의 스케줄링 과정 중에 질문이 있습니다.
스케줄링 중에 Task assign 하고 나서 그 다음에 getCancellationTaskCount를 통해 cancel 과정을 수행하게 되어있는데, 저는 이 부분이 거의 안쓰이거나 나중에 아주 소량만 쓰일 것으로 예상했습니다.
헌데 로그를 찍어보니 총 593개의 태스크중 최소 30개, 최대 70개의 태스크가 캔슬되는것이 발견되었습니다. 또한 로그를 통해 쿼리 실행 처음부터 3개의 태스크 캔슬이 반복해서 일어나고 있는 것을 확인하였습니다.
아래는 로그중 일부입니다.
2016-07-29 19:43:11,132 INFO querymaster.DefaultTaskScheduler (DefaultTaskScheduler.java:assignToLeafTasks(923)) - Assigned Local/Rack/Total: (232/8/240), Attempted Cancel/Assign/Total: (12/240/252), Locality: 96.67%, Rack host: h16
...(중략)
2016-07-29 19:43:14,104 INFO querymaster.DefaultTaskScheduler (DefaultTaskScheduler.java:assignToLeafTasks(923)) - Assigned Local/Rack/Total: (570/23/593), Attempted Cancel/Assign/Total: (34/593/627), Locality: 96.12%, Rack host: h17
...
2016-07-29 19:43:13,535 INFO querymaster.DefaultTaskScheduler (DefaultTaskScheduler.java:cancel(608)) - CANCEL h5 ta_1469788961378_0001_000001_000550_00
2016-07-29 19:43:13,535 INFO querymaster.DefaultTaskScheduler (DefaultTaskScheduler.java:cancel(608)) - CANCEL h32 ta_1469788961378_0001_000001_000550_00
2016-07-29 19:43:13,535 INFO querymaster.DefaultTaskScheduler (DefaultTaskScheduler.java:cancel(608)) - CANCEL h27 ta_1469788961378_0001_000001_000550_00
...
수행한 쿼리는
select count(*) from lineitem100G;
입니다.
캔슬되는 태스크가 어째서 발생하는 것인지 잘 모르겠습니다. 왜 그런것인지 설명해 주신다면 감사하겠습니다.
임병남 드림.