Hadoop NameNode啟動后過一會自動關閉了,查看日志文件報內存溢出異常:
tail -100 /bigdata/logs/hadoop/hadoop-root-namenode-node1.log
解決方法:
修改配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh,增加NameNode和SecondaryNamenode的內存。
Hadoop為各個守護進程(namenode、secondaryNamenode、datanode)統一分配的內存在hadoop-env.sh中設置,參數為HADOOP_HEAPSIZE,默認大小為1000MB。大部分情況下,這個統一設置的值可能並不適合。例如對於NameNode節點,1000M的內存只能存儲幾百萬個文件的數據塊的引用。
增大NameNode的內存,即修改hadoop-env.sh文件中HADOOP_NAMENODE_OPTS參數,添加配置 -Xmx2048m (設置為2048MB)。如果要設置SecondaryNamenode的使用內存,同樣通過設置HADOOP_SECONDARYNAMENODE_OPTS參數來提高SecondaryNamenode的使用內存。另需注意服務器的實際內存大小。
例如以下解決方法,添加NameNode最大內存4G,最小內存4G:
修改完成后,啟動HDFS,查看HDFS的文件,此時發現報拒絕連接的異常:
查看HDFS Web界面,發現NameNode正在啟動(還沒有啟動完),因為NameNode啟動時需要讀取元數據信息,若數據量太大,則啟動時間比較長:
待NameNode啟動完成后,再查詢數據發現一切正常了。