Cloudera Manager Advent Calendar 2015の18日目です。
HadoopやHBase、Sparkクラスタは各プロセス大量のファイルをオープンするので、Linuxデフォルトのファイルディスクリプタ上限に容易に達してしまいます。上限に達するとまともにクラスタが機能しませんので、基本的には上限を引き上げる必要があります。
たとえば、HBaseであれば32768
に設定することが推奨されています。
参考1: 4. Basic Prerequisites - Limits on Number of Files and Processes (ulimit)
http://hbase.apache.org/book.html#basic.prerequisites
参考2: Configuration Settings for HBase - Setting User Limits for HBase
http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_hbase_config.html
Cloudera Manager(以下CM)からプロセスのファイルディスクリプタ上限を引き上げる際は、各サービスの設定ページで「プロセスファイル記述子の最大数」プロパティの値を変更します。ulimit
で検索すると簡単にたどり着けるでしょう。
ここではすべて32768
に設定しましょう。プロセスを再起動すると反映されます。/proc/<PID>/limits
から反映を確認できますね。
[root@c5 ~]# ps aux | grep -i proc_regionserver
hbase 57495 10.0 2.3 795664 193012 ? Sl 22:04 0:17 /usr/java/jdk1.7.0_67-cloudera/bin/java -Dproc_regionserver ...
[root@c5 ~]# cat /proc/57495/limits | grep "open files"
Max open files 32768 32768 files
以上、小ネタでした。
参考: Configuring Maximum File Descriptors
http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cm_mc_max_fd.html