본문 바로가기

빅데이터

아파치 드루이드 tranquility로 데이터 추가시 MessageDroppedException 이슈

옛날버전(0.9이하)에서 외부 실시간 데이터를 드루이드에 넣기 위해서는 tranquility를 사용해야 했습니다. tranquility-core를 사용하여 데이터를 넣을 때 아래와 같은 오류를 경험할 때가 있습니다.

com.metamx.tranquility.tranquilizer.MessageDroppedException: Message dropped

MessageDroppedException는 줄여서 MDE라고도 부르는데요. 이 오류가 발생하게 되는 원인은 크게 두가지라고합니다.

 

원인1 : 이벤트의 timestamp가 window period 외부에 있을 경우

원인2 : 태스크 또는 오버로드와 통신에 이슈가 있는 경우(within your firehoseRetryPeriod or indexRetryPeriod)

 

위 원인 2개에 대해서 Gian Merlino(imply 공동 창업자)가 설명하였습니다.

https://www.druidforum.org/t/messagedroppedexception-causes/1284

 

MessageDroppedException : Causes?

All, We are running Tranquility, with HOUR granularity. At the top of the hour, presumably when a new RT task spins up, we receive an increased number of MessageDroppedExceptions (MDE). The timestamps on the events appear to be well within the windowPeriod

www.druidforum.org

 

그리고 이 에러에 관해서는 tranquility 소스코드에도 언급하고 있습니다.

The future may contain a Unit, in which case the message was successfully sent. Or it may contain an exception, in which case the message may or may not have been successfully sent. One specific exception to look out for is MessageDroppedException, which means that a message was dropped due to unrecoverable reasons. With Druid this can be caused by message timestamps being outside the configured windowPeriod.

https://github.com/druid-io/tranquility/blob/c0a42da4089151363e27ff17fee71d4ba3eee6ba/core/src/main/scala/com/metamx/tranquility/tranquilizer/Tranquilizer.scala#L152-L157

 

druid-io/tranquility

Tranquility helps you send real-time event streams to Druid and handles partitioning, replication, service discovery, and schema rollover, seamlessly and without downtime. - druid-io/tranquility

github.com

 

반응형