[주키퍼] java.lang.NumberFormatException: For input string "None"

Wookoa 2025. 1. 31.

For Input String None Exception
For Input String None Exception

머리말

  Zookeeper 설치 후 처음으로 서비스를 기동 할 때 java.lang.NumberFormatException 오류 메시지를 만날 수 있다. 본인의 경우 Ansible 도구를 통해 설치를 진행했으나, Ansible 오류 메시지를 통해 Zookeeper 설치가 정상적으로 수행되지 않았음을 감지했다. 화면에 출력된 Ansible 오류 메시지는, 설치가 완료된 Zookeeper 서비스가 정상 기동 되지 않았다는 의미였다. Zookeeper 로그를 직접 확인해 보니 조금 더 자세한 오류 메시지를 확인할 수 있었다. Ansible 도구를 통해 설치하지 않아도 오류 메시지에 대한 원인과 해결 방법은 동일하니 참고하면 좋다. 본 포스팅에서는 Zookeeper 기동 과정에서 발생한 For Input String None 오류 해결 방법을 소개하도록 한다.

For input string: "None"

  Zookeeper 기동에 실패했다는 짧은 메시지와 함께 기동이 되지 않는다. 자세한 오류 메시지를 확인하기 위해서는 Zookeeper 로그를 직접 확인해야 하며, 일반적인 로그 파일의 위치는 /usr/local/zookeeper/logs/ 경로에 위치한다. 본인의 Zookeeper 서버에서 발생한 오류 로그와 주요한 메시지는 아래와 같다.

Caused by: java.lang.NumberFormatException: For input string: "None"

  2025-01-27 02:24:15,526 [myid:] - INFO  [main:QuorumPeerConfig@136] - Reading configuration from: /usr/local/zookeeper/bin/../conf/zoo.cfg
  2025-01-27 02:24:15,530 [myid:] - INFO  [main:QuorumPeerConfig@388] - clientPortAddress is 0.0.0.0:2181
  2025-01-27 02:24:15,531 [myid:] - INFO  [main:QuorumPeerConfig@392] - secureClientPort is not set
  2025-01-27 02:24:15,531 [myid:] - ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
  org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/local/zookeeper/bin/../conf/zoo.cfg
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:157)
          at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
          at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
  Caused by: java.lang.NumberFormatException: For input string: "None"
          at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
          at java.lang.Long.parseLong(Long.java:589)
          at java.lang.Long.parseLong(Long.java:631)
          at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(QuorumMaj.java:88)
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:599)
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:632)
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:605)
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:423)
          at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:153)
          ... 2 more
  Invalid config, exiting abnormally

  Zookeeper 기동시 해당 오류를 처음 만났다면, 아마도 아직은 Zookeeper 오류 메시지에 익숙하지 않을 것이다. 해당 오류 메시지는 None 문자열 값이 잘 못 입력되었다는 의미로 해석할 수 있으며, Zookeeper 관련 설정에 None 문자열이 존재하는지 확인이 필요하다. 본인의 경우 아래와 같은 설정 파일에서 잘못된 설정을 찾을 수 있었으며, 해당 설정을 수정 후 정상 기동을 확인할 수 있었다.

/usr/local/zookeeper/conf/zoo.cfg

/data/zk/myid

zoo.cfg 설정 파일의 None 문자열
zoo.cfg 설정 파일의 None 문자열
myid 설정파일의 None 문자열
myid 설정파일의 None 문자열

  해당 설정 파일에 None 문자열이 존재했기 때문에 java.lang.NumberFormatException 오류가 발생했었다. 본인의 경우 총 두 곳에서 None 문자열이 발견되었으며, Zookeeper 서버의 인덱스 값으로 적절히 변경 후 Zookeeper 서버의 정상 기동을 확인했다. 충분히 예상되겠지만, zoo.cfg 설정 파일은 클러스터로 구성된 노드들의 인덱스 번호를 설정하면 되며, myid 설정 파일은 자신의 인덱스 번호를 설정하면 된다. 본인이 적용한 설정은 아래와 같다.

/usr/local/zookeeper/conf/zoo.cfg 설정

server.1=zookeeper1.wookoa.com:2888:3888

server.2=zookeeper2.wookoa.com:2888:3888

server.3=zookeeper3.wookoa.com:2888:3888

 

/data/zk/myid 설정

1

꼬리말

  본 포스팅에서 설명하는 설정들이 어떠한 이유로 잘못 설정되었는지는 찾지 못했지만, 본인의 경우 Ansible 관리도구를 통해 Zookeeper 서버를 설치했기 때문에, Ansible 관련된 설정에서 문제가 발생한 것으로 추측한다. 단순히 설치 단계에서 발생한 오류기 때문에, Ansible 설정을 변경하지는 않았으며 문제가 되는 Zookeeper 설정을 변경함으로써 간단히 해결했다. Zookeeper 서버 기동 시 발생하는 For input string "None" 오류에 대해서 해결 방법을 소개한 본 포스팅은 이로써 마무리를 짓도록 한다.

인기있는 글

소중한 댓글 (0)