5つのノードを持つHDFSクラスターがあります。ファイルシステムに新しいファイルを書き込むときに、「レプリカが足りません」というエラーまたは次のいずれかが発生することがよくあります。
2016-05-29 13:30:03,972 [Thread-486536] INFO org.apache.hadoop.hdfs.DFSClient - Exception in createBlockOutputStream
java.io.IOException: Got error, status message , ack with firstBadLink as 10.100.1.22:50010
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:142) ~[hadoop-hdfs-2.7.1.jar!/:na]
...
2016-05-29 13:30:03,972 [Thread-486536] INFO org.apache.hadoop.hdfs.DFSClient - Abandoning BP-1195099512-10.100.1.21-1454597789659:blk_1085523876_11792285
2016-05-29 13:30:03,977 [Thread-486536] INFO org.apache.hadoop.hdfs.DFSClient - Excluding datanode DatanodeInfoWithStorage[10.100.1.22:50010,DS-2f34af8d-234a-4036-a810-908c3b2bd9cf,DISK]
2016-05-29 13:30:04,003 [pool-1272-thread-3] WARN org.apache.hadoop.hdfs.DFSClient - Slow waitForAckedSeqno took 65098ms (threshold=30000ms)
また、これらの多くを経験します。これは、大きなGCが発生したときのようです。
[pool-9-thread-23] WARN org.apache.hadoop.hdfs.DFSClient - Slow waitForAckedSeqno took 34607ms (threshold=30000ms)
[pool-9-thread-30] WARN org.apache.hadoop.hdfs.DFSClient - Slow waitForAckedSeqno took 34339ms (threshold=30000ms)
[pool-9-thread-5] WARN org.apache.hadoop.hdfs.DFSClient - Slow waitForAckedSeqno took 34593ms (threshold=30000ms)
ファイルシステムは650万個の小さな(4〜20 kB)ファイルを保持し、新しいファイルを書き込むとノードはOOMでダウンします。新しいファイルは常にバッチで書き込まれ、バッチは数十万になる場合があります。
現時点では、ノードにはOOMではない大量のRAMがあり、名前ノード用に4 GB、データノード用に3GBです。
これは本当に予想される動作ですか?なぜノードはこれほど大量のRAMを消費しているのでしょうか。
ノードの数を増やして、代わりに1024MBなどのより厳密なmem設定で実行できるかどうかを確認したいと思います。可能?
編集:多くのGCが発生しており、GCが発生するとノードが応答していません。
結局のところ、問題は基盤となるストレージシステムに障害が発生したことでした。クラスターをHWラックに移動し、2番目の名前ノードを追加し、使用済みファイルをHARファイルシステムに定期的にアーカイブします。HDFSは幸せなパンダです。
同様の問題が発生し、プラットフォームがあらゆる種類の仮想化に基づいている場合。すぐに仮想の巨大なジャンボから離れてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加