본문 바로가기
프로그래밍/hive

HiveServer Too many open file error

by W.C. 2018. 1. 24.
728x90

얼마전에 잘 운영 중인 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를 주기적으로 재기동.... 아...


빨리 방법을 찾아야 겠다. 아 싫타...