2017-01-02 8 views
1

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スクリプトなどでそれらを閉じる方法がありますか?

おかげ

+0

カーネルに制限があり、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によって異なります。 –

+0

私は限界を知っています。しかし、私はなぜそれほどオープンなファイルがあるのだろうと思っています。制限を増やすことは一時的な解決策になります。閉鎖されているはずのオープンファイルがいくつかありますか? –

+2

linuxコール 'lsof | grep java'です。 –

答えて

0

...私はあまりにも多くの開いているファイルがある理由について好奇心?...

のHBaseは、すべてのファイルのすべての時間を開いて保持します。ここにいくつかの例があります。 3列のファミリを持つ10個のテーブルがあり、各列ファミリの平均ファイル数が3で、テーブルごとにリージョンサーバごとに100のリージョンがある場合、10 * 3 * 3 * 100 = 9000のファイル記述子が開きます。この計算では、JARファイル、一時ファイルなどは考慮されません。

ulimitの推奨値は10240ですが、あなたの場合に適した値に設定することをお勧めします。

関連する問題