얼마전에 잘 운영 중인 hiveserver에서 에러가 발생했다.
cluster 상태로는 모든게 정상이었지만 hiveserver를 통한 application이 장애가 발생했다.
HDFS 내에 있는 파일들을 읽어 들이지 못하는 현상이었는데... 처음에는 HA에 문제가 발생한 것이라고 생각했다.
하지만 hiveserver2.log를 확인해 보니
java.io.IOException: Too many open files
at sun.nio.ch.IOUtil.makePipe(Native Method)
at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:65)
at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.get(SocketIOWithTimeout.java:409)
at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:325)
at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:159)
at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:117)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at org.apache.hadoop.hdfs.DFSPacket.writeTo(DFSPacket.java:176)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:523)
음? Too many open file????
이런 말도 안돼는 일이....
그래서 확인 작업을 진행했다.
lsof -p <hiveserver PID>
java 14065 hive 761r REG 253,1 21540 25885250 /tmp/0c77e63e-d765-4639-a393-a8af39bf3043_resources/tmp.jar (deleted)
java 14065 hive 762r REG 253,1 21540 17486423 /tmp/3208a88b-4f36-41ca-960b-3fb439875be3_resources/tmp.jar (deleted)
java 14065 hive 763r REG 253,1 21540 8680226 /tmp/a3533749-4a93-4f13-810a-b4f84f9b33d7_resources/tmp.jar (deleted)
java 14065 hive 764r REG 253,1 21540 260197 /tmp/f4a63a27-618d-4dea-9f3e-f55c890a71a6_resources/tmp.jar (deleted)
java 14065 hive 765r REG 253,1 21540 260207 /tmp/d388166f-1481-44a0-a4ab-e363900563b0_resources/tmp.jar (deleted)
java 14065 hive 766r REG 253,1 21540 67664251 /tmp/0b60325e-abdf-40be-bc84-7c8573b535f6_resources/tmp.jar (deleted)
java 14065 hive 767r REG 253,1 21540 59576959 /tmp/fbdffde7-1295-454b-ae83-32942b2d8ca1_resources/tmp.jar (deleted)
java 14065 hive 768r REG 253,1 21540 50331753 /tmp/16b61320-82c1-454f-8081-45a26632364b_resources/tmp.jar (deleted)
java 14065 hive 769r REG 253,1 21540 42329719 /tmp/b7c95375-57ec-490e-b452-c725db2292e4_resources/tmp.jar (deleted)
java 14065 hive 770r REG 253,1 21540 34969216 /tmp/9fc0facd-b7a3-4dcb-b494-64ae9b06f0b9_resources/tmp.jar (deleted)
java 14065 hive 771r REG 253,1 21540 25885252 /tmp/09aec981-df7d-4fef-9d41-7ffcd4b39e9e_resources/tmp.jar (deleted)
java 14065 hive 772r REG 253,1 21540 17486425 /tmp/c79c5a48-093a-4536-96d2-72898fb266dd_resources/tmp.jar (deleted)
java 14065 hive 773r REG 253,1 21540 8680104 /tmp/1c12a3a6-ad4e-4a3d-a208-7d3f884dee22_resources/tmp.jar (deleted)
java 14065 hive 774r REG 253,1 21540 260239 /tmp/bf79182a-a582-4104-a78b-55bdfb452fe3_resources/tmp.jar (deleted)
java 14065 hive 775r REG 253,1 21540 260249 /tmp/7fba2696-840f-485a-a457-c56db32a613d_resources/tmp.jar (deleted)
java 14065 hive 776r REG 253,1 21540 67664253 /tmp/4ec9f348-35e5-4f68-975e-07e70f326107_resources/tmp.jar (deleted)
java 14065 hive 777r REG 253,1 21540 59576962 /tmp/0fde5c6c-7a9f-48de-bfc0-a5b6f5bdffe9_resources/tmp.jar (deleted)
java 14065 hive 778r REG 253,1 21540 50331755 /tmp/2f6eeb48-8b88-4c62-b795-5170ee3db374_resources/tmp.jar (deleted)
java 14065 hive 779r REG 253,1 21540 42329721 /tmp/f7ecff2b-ef77-48c7-8fef-7435f59e2b23_resources/tmp.jar (deleted)
java 14065 hive 780r REG 253,1 21540 34969218 /tmp/83f5de86-21ce-4165-bd08-37fa3b257c51_resources/tmp.jar (deleted)
java 14065 hive 781r REG 253,1 21540 25885257 /tmp/e7a4d7a6-08fd-4d61-80c2-4f5a1846c382_resources/tmp.jar (deleted)
java 14065 hive 782r REG 253,1 21540 17486427 /tmp/d2c76bc6-af3e-44bd-a56f-a3be91132080_resources/tmp.jar (deleted)
java 14065 hive 783r REG 253,1 21540 8680106 /tmp/4cd4b1f2-2789-4d9d-89bc-b48f24680b89_resources/tmp.jar (deleted)
java 14065 hive 784r REG 253,1 21540 260311 /tmp/7ec5135e-7399-4147-b56e-46c865e3b576_resources/tmp.jar (deleted)
java 14065 hive 785r REG 253,1 21540 260322 /tmp/0dddae13-528b-4ef3-9232-381077bfafa3_resources/tmp.jar (deleted)
java 14065 hive 786r REG 253,1 21540 67664255 /tmp/a27e05c0-e359-438a-add7-0ef6d2854a16_resources/tmp.jar (deleted)
ㅎㄸㄸㄸㄸ
뭐지 저 (deleted) 딱지가 붙어 있는 것들은...
파일은 실제 삭제 되었지만 REG에 남아 open file 형태로 계속 존재하고 있는 것들이 있었다.
즉 application에서 사용하기 위해 만든 UDF를 등록했는데 그 jar파일이 사용되어 질때 마다 저렇게 파일을 하나 열고 닫지 못하고 있었던 상태였던 것이다.
뭐 이런 일이...
찾아보니
https://issues.apache.org/jira/browse/HIVE-16455
이미 2017년에 보고된 bug이고 간단한 패치로 수정이 가능하다고 되어 있다.
그러나... HDP를 쓰고 있는 우리는... 어떻게 patch를 하냐고.... 쩝...
application 단에서 해결방법을 찾아봐야 할거 같은데...
아직까지는 못찾고 있다.
임시 방편으로 hiveserver를 주기적으로 재기동.... 아...
빨리 방법을 찾아야 겠다. 아 싫타...
'프로그래밍 > hive' 카테고리의 다른 글
Hive 특정 컬럼 제외 하고 선택하기 (0) | 2018.02.13 |
---|---|
Hive Table 생성 시 Multi-character delimiter 적용 방법 (0) | 2017.12.28 |
Hive MIN/MAX STRUCT 쿼리 사용 (0) | 2017.12.25 |
Hive CLI 기본 셋팅 (0) | 2017.12.25 |
Hive 성능 향상 방안 (0) | 2016.08.18 |