[Hadoop] hdfs namenode format error
현상
hdfs 명령어로 namenode format 진행시, 발생한 문제이다.
2020-07-03 10:47:32,709 INFO namenode.NameNode: createNameNode [-format]
2020-07-03 10:47:32,897 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2020-07-03 10:47:33,534 ERROR common.Util: Syntax error in URI \hadoop\namenode. Please check hdfs configuration.
java.net.URISyntaxException: Illegal character in path at index 0: \hadoop\namenode
at java.net.URI$Parser.fail(URI.java:2848)
at java.net.URI$Parser.checkChars(URI.java:3021)
at java.net.URI$Parser.parseHierarchical(URI.java:3105)
at java.net.URI$Parser.parse(URI.java:3063)
at java.net.URI.<init>(URI.java:588)
at org.apache.hadoop.hdfs.server.common.Util.stringAsURI(Util.java:91)
at org.apache.hadoop.hdfs.server.common.Util.stringCollectionAsURIs(Util.java:139)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getStorageDirs(FSNamesystem.java:1521)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNamespaceDirs(FSNamesystem.java:1476)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1162)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1645)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1755)
2020-07-03 10:47:33,535 INFO common.Util: Assuming 'file' scheme for path \hadoop\namenode in configuration.
2020-07-03 10:47:33,542 ERROR common.Util: Syntax error in URI \hadoop\namenode. Please check hdfs configuration.
java.net.URISyntaxException: Illegal character in path at index 0: \hadoop\namenode
at java.net.URI$Parser.fail(URI.java:2848)
at java.net.URI$Parser.checkChars(URI.java:3021)
at java.net.URI$Parser.parseHierarchical(URI.java:3105)
at java.net.URI$Parser.parse(URI.java:3063)
at java.net.URI.<init>(URI.java:588)
at org.apache.hadoop.hdfs.server.common.Util.stringAsURI(Util.java:91)
at org.apache.hadoop.hdfs.server.common.Util.stringCollectionAsURIs(Util.java:139)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getStorageDirs(FSNamesystem.java:1521)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNamespaceEditsDirs(FSNamesystem.java:1566)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNamespaceEditsDirs(FSNamesystem.java:1535)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1168)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1645)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1755)
2020-07-03 10:47:33,543 INFO common.Util: Assuming 'file' scheme for path \hadoop\namenode in configuration.
Formatting using clusterid: CID-48338ebc-ee81-4847-92ef-859e78319aa6
해결 방법
원인은 hdfs-site.xml 파일에서 파일경로 설정시, 상대경로, 절대경로 문제였다.
dfs는 hadoop 소스가 상주하는 드라이브에 대한 경로를 상대적으로 가지고 있기 때문이다.
해결하기 위해선 드라이브를 사용하고 있다면 /d:/ 앞에 접두사 슬래시를 사용
하면 된다.
다른 방법으로는 datanode, namenode의 경로를 따로 설정하지 않으면 루트 폴더에 자동으로 생성되는 점을 활용하여 경로 옵션을 주지 않는 방법이 있다.
댓글남기기