Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
impala [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우
보통 Kudu tablet에짧은 시간에 다수의 CUD작업이 몰리게 되면 tablet server의 tablet단위로 할당된 설정(--tablet_transaction_memory_limit_mb)을 넘는 op요청이 몰리게 되면서 Kudu tablet에서는 다음의 WARN이 발생하며, Impala에서는 요청된 쿼리 작업이 지연되면서 지정된 시간(impalad의 kudu_operation_timeout_ms, default값은 180000)이 초과되어 아래의 INFO성 오류 메세지가 발생하고 쿼리는 실패함.
1. 쿼리 수행시 Impalad에서 발생하는 오류 메세지
Query submitted at: 2024-01-04 15:34:08 (Coordinator: http://nodeidcp01.gooper.com:25000)
Stdoutput Query progress can be monitored at: http://nodeidcp01.gooper.com:25000/query_plan?query_id=38428544158d812f:7701809d00000000
Stdoutput ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91 after 1 attempt(s): Failed to write to server: 2fc1a398e48440ea8c30987b1ff6aa06 (nodedatp01.gooper.com:7050): Write RPC to 11.22.333.111:7050 timed out after 180.000s (SENT)
Stdoutput
Stdoutput Error in Kudu table 'impala::db1.table1': Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91 after 1 attempt(s): Failed to write to server: 2fc1a398e48440ea8c30987b1ff6aa06 (nodedatp01.gooper.com:7050): Write RPC to 11.22.333.111:7050 timed out after 180.000s (SENT) (1 of 774 similar)
Stdoutput
2. Kudu tablet server(IP : 11.22.333.111) 로그에서 확인되는 WARN메세지
T 467b0cb91d0440089483af33e6e97dd7 P 2fc1a398e48440ea8c30987b1ff6aa06 -> Peer 75aa387ce53c4821bb0f9f819f4307d8 (nodedatp13.gooper.com:7050): Couldn't send request to peer 75aa387ce53c4821bb0f9f819f4307d8. Status: Illegal state: Rejecting Update request from peer 2fc1a398e48440ea8c30987b1ff6aa06 for term 2. Could not prepare a single op due to: Service unavailable: op on tablet 467b0cb91d0440089483af33e6e97dd7 rejected due to memory pressure: the memory usage of this op (562924) plus the current consumption
(134209964) exceeds the op memory limit (134217728) or the limit of an ancestral memory tracker.. This is attempt 1: this message will repeat every 5th retry.
3. 조치는 Kudu tablet서버의 configuration에서
--tablet_transaction_memory_limit_mb 값을 늘려준다.(default : 64M)
or
impala의 configuration에서
--kudu_operation_timeout_ms(default값은 180000ms)를 늘려준다.
or
impala의 configuration에서
--maintenance_manager_num_threads(default 4, 플러시 및 압축과 같은 백그라운드 유지 관리 작업에 사용되는 스레드 수)의 수를 늘려준다.
: 태블릿 서버가 쓰기 작업(삽입, 업데이트 및 삭제)에서 뒤쳐지고 CPU 및 디스크 리소스가 아직 여유가 있다면 이 스레드 수를 늘리면 백그라운드 작업에 더 많은 리소스가 할당되어 작업이 빨리 끝나게 되므로 timeout이 발생하지 않게됨.