hadoopとhbaseがインストールされた2ノードクラスタを設定しました。それは正常に動作していた、私はhadoopのいくつかの基本的なマップの削減ジョブを実行し、私もhbaseでいくつかのテーブルを作成し、リストすることができた。しかし、hdfs/hbaseにはデータがほとんどなく、実行中のジョブはありませんでした。しばらくすると、hbaseログに"Java.net.Socket: Too many open files"
エラーが発生しました。Hbaseにオープンファイルが多すぎます
私はいくつかの解決策を探しましたが、主に制限の上限について回答しています。 しかし、あまりにも多くのオープンファイルがある理由について私は興味があります。このクラスタは他のプログラムでは使用されておらず、チュートリアルの単純なマップ削減タスク以外のジョブは実行していません。
なぜでしょうか?
EDIT
アンジェイが示唆された後、私は、このコマンド(lsof | grep java
)を実行していると私は閉鎖されるのを待っている別のポートでの接続がたくさんあることを観察しました。これはコマンドの出力のほんの数行です
java 29872 hadoop 151u IPv6 158476883 0t0 TCP os231.myIP:44712->os231.myIP:50010 (CLOSE_WAIT)
java 29872 hadoop 152u IPv6 158476885 0t0 TCP os231.myIP:35214->os233.myIP:50010 (CLOSE_WAIT)
java 29872 hadoop 153u IPv6 158476886 0t0 TCP os231.myIP:39899->os232.myIP:50010 (CLOSE_WAIT)
java 29872 hadoop 155u IPv6 158476892 0t0 TCP os231.myIP:44717->os231.myIP:50010 (CLOSE_WAIT)
java 29872 hadoop 156u IPv6 158476895 0t0 TCP os231.myIP:44718->os231.myIP:50010 (CLOSE_WAIT)
今、接続が役に立たないと自動的に閉じてしまうのはなぜですか?彼らが自動的に中止されない場合は、crontabスクリプトなどでそれらを閉じる方法がありますか?
おかげ
カーネルに制限があり、SELinuxで制限があり、サービス用にオープンファイルを制限しています。 https://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/またはhttps://naveensnayak.wordpress.com/2015/09/17/increasing-fileを参照してください。 -descriptors-and-open-files-limit-centos-7 /あなたのOSによって異なります。 –
私は限界を知っています。しかし、私はなぜそれほどオープンなファイルがあるのだろうと思っています。制限を増やすことは一時的な解決策になります。閉鎖されているはずのオープンファイルがいくつかありますか? –
linuxコール 'lsof | grep java'です。 –