ポータブルHadoopクラスタ

(*English translation is here)

アルミアタッシュケースに入れて持ち運びができる、3ノードのHadoopクラスタを作りました。インテルのNUCと呼ばれるタイプのマシンを使用して、かなりコンパクトにまとめました。大きさは、29 x 41.5 x 10 cm。

f:id:nagixx:20140609161347j:plainf:id:nagixx:20140609162049j:plain

主な仕様はこちら。

  • Intel NUC core i3 + 16GBメモリ + 128GB SSDのマシン3台
  • ギガビットEthernet + IEEE 802.11na Wifiルータ
  • 13.3インチ HDMI接続 LCDモニタ
  • 2.4GHz 無線接続キーボード + タッチパッド
  • 電源はコンセントを1つ差し込むだけ
  • CentOS 6.6 + MapR M7 4.0.1 + CDH 5.3

メモリを16GB積んでいるので、大抵のアプリケーションの稼働には問題ありません。私はお客さん先に行って、これを使ってよくデモをするのですが、コンセント一つだけあれば起動して1〜2分でデモを開始できるので非常〜に便利です。Wifi接続もできるので、プロジェクタに接続したラップトップPCからこのクラスタにアクセスして、広い画面でデモを見せることもできます。

これはHadoop用に作りましたが、クラスタとして動作するソフトウェアなら、どんなものでもよいでしょう。例えば、MongoDB、Cassandra、Redis、Riak、Solr、Elasticsearch、Spark、Storm、等々。実際、MapRはNFS経由の連携で他のネイティブアプリケーションとの相性がいいので、このポータブルクラスタではHP VerticaやElasticsearchなどを共存させて動かしています。

完全なパーツリストと、構築方法を公開しますので、ぜひ皆さんも自作にチャレンジを。

パーツリスト

次のパーツリストは価格を含めちょっと古い2014年6月10日現在の情報です。このページの説明はこのリストのパーツを使って構築したものに基づいて書いています。

No.パーツ参考価格数量
01 Intel DC3217IYE (NUC ベアボーンキット) 38,454円 3
02 PLEXTOR PX-128M5M (128MB mSATA SSD) 14,319円 3
03 CFD W3N1600Q-8G (8GB DDR3-1600 SO-DIMM x 2) 17,244円 3
04 ELECOM LD-GPS/BK03 (0.3m CAT6 Gigabit LAN ケーブル) 211円 3
05 Miyoshi MBA-2P3 (電源ケーブル 2ピン/3ピン変換アダプタ) 402円 3
06 FILCO FCC3M-04 (3分岐電源ケーブル) 988円 1
07 Logitec LAN-W300N/IGRB (Gigabit/11na Wifi ルータ) 5,500円 1
08 SANWA SUPPLY KB-DM2L (0.2m 電源ケーブル) 600円 1
09 GeChic On-LAP 1302/J (13.3 インチ LCD) 18,471円 1
10 ELECOM T-FLC01-2220BK (2m 電源タップ) 639円 1
11 EAPPLY EBO-013 (2.4GHz ワイヤレスキーボード) 2,654円 1
12 IRIS OYAMA AM-10 (アルミニウムアタッシュケース) 2,234円 1
13 Inoac A8-101BK (発泡ポリエチレンシート 10x1000x1000) 2,018円 1
14 Kuraray 15RN黒 (マジックテープ粘着用 25mm x 15cm) 278円 2
15 セメダイン AX-038 スーパーXクリア (超多用途接着剤 20ml) 343円 1

が、それから半年が経った2014年12月29日現在、すでに市場に出回っていないパーツもあるので、新しいリストを作りました。今だと合計で約23万円で構築できるかと思います。ただ多少、部品の配置や手順が異なるところがあるかもしれません。特にNUC本体が後継機種のD34010WYKになって、メモリが1.35V低電圧対応の物が必要になったり、HDMIではなくmini HDMI/mini DisplayPortポートになっていたりするため、メモリやLCDのモデルも入れ替えています。

No. 11のワイヤレスキーボードはたまたま手元にあったものを使いましたが、現在は入手が難しいと思われるので、Rii mini X1iClever IC-RF01が代わりに使えると思います。なぜBluetooth接続ではなく、2.4GHz無線接続なのかというと、これらはUSBレガシーデバイスとして認識されるため、マシン起動直後のBIOS設定でも使えるからです。

No.パーツ参考価格数量
01 Intel D34010WYK (NUC ベアボーンキット) 35,633円 3
02 Transcend TS128GMSA370 (128MB mSATA SSD) 7,980円 3
03 CFD W3N1600PS-L8G (8GB DDR3-1600 SO-DIMM x 2) 18,153円 3
04 ELECOM LD-GPS/BK03 (0.3m CAT6 Gigabit LAN ケーブル) 406円 3
05 Diatec YL-3114 (電源ケーブル 2ピン/3ピン変換アダプタ) 494円 3
06 FILCO FCC3M-04 (3分岐電源ケーブル) 1,008円 1
07 Logitec LAN-W300N/IGRB (Gigabit/11na Wifi ルータ) 6,000円 1
08 SANWA SUPPLY KB-DM2L (0.2m 電源ケーブル) 429円 1
09 GeChic On-LAP 1302 for Mac/J (13.3 インチ LCD) 20,153円 1
10 ELECOM T-FLC01-2220BK (2m 電源タップ) 994円 1
11 Rii mini X1 (2.4GHz ワイヤレスキーボード) 2,860円 1
12 IRIS OYAMA AM-10 (アルミニウムアタッシュケース) 2,271円 1
13 Inoac A8-101BK (発泡ポリエチレンシート 10x1000x1000) 2,018円 1
14 Kuraray 15RN黒 (マジックテープ粘着用 25mm x 15cm) 270円 2
15 セメダイン AX-038 スーパーXクリア (超多用途接着剤 20ml) 343円 1

ベアボーンキット組み立て

 NUCベアボーンキットの組み立てはとても簡単です。メモリとSSDを取り付けるだけで、マシンが完成します。

まず底面の四隅のネジを外して中を開けると、SO-DIMMスロット2列(写真左側)とmini PCI Expressスロットが2列(写真右側)が見えます。

f:id:nagixx:20140421091249j:plain

SO-DIMMスロットに2枚組のメモリを1枚ずつ差して、「カチッ」というまで下に押し込んで固定します。2列あるmini PCI Expressスロットのうち、下側のスロットがハーフサイズの無線LANモジュール用、上側がフルサイズのmSATA対応のスロットです。今回は無線LANは使用しないので、上側のスロットにmSATA SSDを差し込み、1箇所ネジで固定します。

f:id:nagixx:20140421092516j:plain

これで底面を元に戻してネジを締めれば作業完了です。

アルミアタッシュケースのクッション加工

さて、この小さなケースの中に3台のマシンとACアダプタ、Wifiルータ、LCDモニタ、配線を詰め込むにはそれなりに配置に工夫が必要です。さらに、持ち運ぶ際に各パーツがずれないように、しっかりと固定されるようにしておかなければなりません。

まず1cm厚の発砲ポリエチレンシートを写真のようにカッターナイフでカットします。使用した発砲ポリエチレンシートは、比較的重いものを固定する緩衝材としての用途なので、PEライトA8という15倍発泡の結構固めのものを選んでいます。

f:id:nagixx:20140123123824j:plain

そして、ケース下面に一層目、二層目を順番に接着していきます。これが3台のマシンとACアタプタ、配線を固定する枠になります。

発泡ポリエチレンシートの接着にはセメダインスーパーXクリアを使いました。ポリエチレンは基本的には接着剤がつきにくい材質なのですが、表面がザラザラで、スーパーXは柔軟性のある弾性接着剤なので、特に接着力には問題はありません。

f:id:nagixx:20140123123933j:plainf:id:nagixx:20140123124057j:plain

ケース上面には、LCDモニタを取り付けるためのマジックテープを接着します。マジックテープの裏面には糊がついているものを使いますが、上面のクッション表面に取り付けるには弱いので、接着剤を使います。

f:id:nagixx:20140123123555j:plain

LCDモニタの裏面にも同様に対になるマジックテープを貼り付けます。こちらは表面がツルツルなので、そのまま貼れます。

このGeChic On-LAPというLCDは、ラップトップPCの背面に取り付けてセカンダリモニタとして使うことを意図した製品ですが、非常に薄い上にUSB給電ができるので採用しました。ラップトップ取り付け用の金具は、今回は邪魔なので取り外しています。

f:id:nagixx:20140123124354j:plain

さらに、LCDモニタの上にかぶせて、モニタ表面を保護すると同時にケースを閉じた時にマシンや配線類を押さえ込むクッションを、三層を貼り合わせて作ります。

こちらがLCDモニタ(上面)側。右下の切り欠きはモニタケーブルを通す空間です。

f:id:nagixx:20140123151513j:plain

ひっくり返して、こちらがマシン(下面)側。中央の二層分のへこみはキーボード格納スペース、右下の一層分のへこみはコンセントプラグ収納スペースです。

f:id:nagixx:20140611165340j:plain

ところで、こんな複雑な形をいちいち計測してカットできないよ、という方のために、図面をPDFで用意しましたので、ダウンロードしてお使いください。

f:id:nagixx:20140611121500j:plain

図面PDFへのリンク

パーツの配置と配線

順番にパーツを配置していきます。3台のマシンを置き、それぞれのACアダプタは縦にして3つ隣り合わせで並べてケーブルを小さくまとめて縛ります。NUCのACアダプタは3ピンなので、3ピン→2ピンの変換アダプタを介して、3つのケーブルを1つのコンセントにまとめるスプリッタケーブルで2個口電源タップに繋げます。そしてLCDモニタからのHDMIケーブルおよび給電用USBケーブルを、左端のマシンに接続します。ワイヤレスキーボード用のUSBドングルも左端のマシンに差し込みます。

f:id:nagixx:20140123143455j:plain

次にWifiルータにL型2ピン電源ケーブルを繋ぎ、もう一方のコンセントプラグは電源タップの残った一口に差し込みます。あとは各マシンのEthernetポートとルータのLAN側ポートの間をLANケーブルで接続します。Wifiルータはきっちり固定はしていませんが、ちょうど電源スプリッタケーブルの上の空間に収まります。Gigabit Ethernet対応、AC電源内蔵でこのサイズの無線ルータはこれ以外になく、販売終了にならないかちょっぴり不安・・と思ったらすでに2014年1月で販売終了になっていました。これを作りたい方はお早めの入手を!

f:id:nagixx:20140123151704j:plain

これで全体が組み上がりました。中層のクッションでLCDに蓋をして、キーボードをはめ込みます。電源タップのケーブルは、ケース下面の縁に沿って約2周させて、コンセントプラグを下の写真の位置にもっていきます。これでケースを閉じれば、クッションがぴったり合わさって、中のマシンやケーブル類がずれてしまうことはありません。

f:id:nagixx:20140124004724j:plain

Wifiルータの設定

OSインストールの前に、まずはWifiルータの設定を行ってネットワーク環境を整えます。まずはコンセントのプラグを壁の電源に差し込み、Wifiルータの電源を入れます。Wifi接続のための初期設定SSIDと暗号キーは、本体に付属の無線暗号キーステッカーに記載されているので、その通りに入力して接続します。Wifiルータの初期設定アドレスは「192.168.2.1」となっているため、Webブラウザで「http://192.168.2.1」に接続し、ユーザ名「admin」、パスワード「admin」で管理画面にログインします。

管理画面ではポータブルHadoopクラスタ向けに下記の項目を変更し、残りはデフォルト設定をそのまま使用します。SSIDと共有キーは任意の値で構いません。クラスタのアドレスはデフォルト設定の192.168.2.0/24のネットワークをそのまま使いますが、ルータのIPアドレスは192.168.2.254に変更し、192.168.2.1〜192.168.2.9をクラスタノードおよびその他の用途向けに固定アドレスとして確保して、残りの192.168.2.10〜192.168.2.253をDHCP用に割り当てます。

メニューカテゴリメニュー項目設定項目設定値
無線設定 基本設定 SSID mapr-demo
マルチSSID 「有効」のチェックを外して無効にする
セキュリティ設定 共有キー 任意のパスフレーズ
有線設定 LAN側設定 装置のIPアドレス 192.168.2.254
デフォルトゲートウェイ 192.168.2.254
DHCPクライアントレンジ 192.168.2.10 - 192.168.2.253

上記の設定が完了したら「適用」ボタンをクリックするとWifiルータが再起動します。最後にルータのWAN側ポートをインターネットに接続されているネットワークに繋ぎ、次のセットアップに進みます。

CentOSインストール

いよいよソフトウェアのインストールに入っていきましょう。NUCにはDVDドライブがないため、今回は起動にUSBメモリを使用し、OS本体はネットワークインストールで入れます。USBメモリ上にインストール用ブートイメージを作るのに、Windowsマシンを使います。

まずUNetbootin for Windowsと、CentOS 6.6のminimalイメージをWindowsマシンにダウンロードします。

USBメモリWindowsマシンに差し込み、UNetbootinを起動します。「Diskimage」を選択して先ほどダウンロードしたCentOS-6.6-x86_64-minimal.isoを指定します。また、Type欄で「USB Drive」を選択してDrive欄に差し込んだUSBメモリのドライブを指定し、「OK」をクリックします。しばらくブートイメージの作成に時間がかかりますが、終わったらUSBメモリを取り出します。

次は、各マシンへのインストールです。モニタとキーボードが必要なので、1台ずつ順番にHDMIケーブルとワイヤレスキーボードのUSBドングルを差し替えながら設定していきます。

USBメモリをNUCに差して、上面の電源ボタンを押してマシンを起動します。ちょっとうろ覚えですが、SSDは空なので自動的にUSBメモリがブートデバイスとして認識され、インストールプロセスが開始されるはずです(もしそうならなかったら、起動中のプロンプトでF2キーを押し、[Boot]メニューを開いてUSBメモリを選択します)。

CentOSのインストールプロセスについては、詳細の説明は省略しますが、注意すべき点をいくつか下に書いておきます。

  • 「Installation Method」の画面で、インストールメディアの選択画面が出てきたら「URL」を選び、次の「Configure TCP/IP」の画面ではデフォルトのDHCPを使用する設定のまま進み、「URL Setup」の画面で一番上の欄に「http://ftp.riken.jp/Linux/centos/6/os/x86_64/を入力します
  • ホスト名の指定の画面では、左側のマシンから「node1」「node2」「node3」と指定します。また、同じ画面の左下にある「ネットワークの設定」ボタンをクリックして、「有線」タブの「System eth0」というデバイスを選択し、「編集」に進みます。「IPv4のセッティング」タブで方式を「手動」に設定し、アドレスは左側のマシンから「192.168.2.1」「192.168.2.2」「192.168.2.3」、ネットマスク「24」、ゲートウェイ「192.168.2.254」、DNSサーバー「192.168.2.254」に設定します
  • インストールのタイプの指定の画面では、「カスタムレイアウトを作成する」を選択して、次のパーティション設定の画面で以下のようなレイアウトを作成します。LVMは使用せず、標準のパーティションを割り当てます。
    デバイス容量マウントポイントタイプ
    /dev/sda1 200MB /boot/efi EFI
    /dev/sda2 200MB /boot ext4
    /dev/sda3 58804MB / ext4
    /dev/sda4 58804MB /mapr ext4
    /dev/sda5 4095MB   swap
  • インストールするソフトウェアの選択画面では「Desktop」を選択します

 インストールが完了すると、マシンが再起動します。再起動後の初期設定の画面では、「ユーザーの作成」はとりあえず不要なので未記入で進みます。「日付と時刻」では「ネットワーク上で日付と時刻を同期化します」にチェックを入れます。「Kdump」は不要です。以上で、OSのセットアップはOKです。

諸々のOS設定

続いて、Hadoopクラスタを構築する下準備として、諸々の設定を行います。各ノードで次の手順を実行します。

「/etc/sysconfig/i18n」を次のように編集し、システム言語を「en_US.UTF-8」に設定します。

LANG="en_US.UTF-8"

「/etc/sysconfig/selinux」の次の行を編集し、SELinuxを無効にします。

SELINUX=disabled

ここで一旦マシンを再起動します。これでSELinuxは無効になっていますが、一部のファイルにSELinuxのラベルがついたままなので、下記のコマンドでラベルを全てクリアします。

# find / -print0 | xargs -r0 setfattr -x security.selinux 2>/dev/null

「/etc/sysctl.conf」に次の項目を追加します。

vm.overcommit_memory=0
net.ipv4.tcp_retries2=5

次のコマンドで設定を反映させます。

# sysctl -p

「/etc/hosts」を次のように編集します。

127.0.0.1       localhost
192.168.2.1 node1
192.168.2.2 node2
192.168.2.3 node3

次のコマンドでiptablesサービスを停止して、再起動時にもサービスが起動しないように設定します。

# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off

「/etc/ntp.conf」を編集して、3台の時刻が同期するようにNTPの設定を行います。インストール直後の設定ではインターネット上のNTPサーバに同期するようになっていますが、このポータブルHadoopクラスタは常にインターネット接続があるとは限らないため、node1のローカル時刻に他のノードを合わせる設定にします。

node1では「/etc/ntp.conf」の次の項目を編集します。デフォルトのserver設定はコメントアウトして、ローカル時刻の参照を意味する「127.127.1.0」を指定しています。

nrestrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org

node2およびnode3では/etc/ntp.conf」の次の項目を編集します。参照先はnode1になっています。

server node1
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org

次のコマンドでNTPサービスを再起動します。

# service ntpd restart

次のコマンドで、MapRのシステムユーザ/グループを作成します。パスワードは任意に設定します。

# groupadd mapr -g 500
# useradd mapr -u 500 -g 500
# passwd mapr

rootユーザおよびmaprユーザはパスワードなしで別ノードにsshログインできると便利です。次のコマンドで、sshのパスワードを不要にします。

# ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
# for host in node1 node2 node3; do ssh-copy-id $host; done
# su - mapr
$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
$ for host in node1 node2 node3; do ssh-copy-id $host; done
$ exit

次のコマンドで、yumレポジトリからOpenJDKをインストールします。

# yum install java-1.7.0-openjdk-devel

インストール時に「/dev/sda4」のパーティションをMapR用に作成し、「/mapr」にマウントしていますが、MapRではブロックデバイスを直接使用するため、このファイルシステムはマウントを解除します。

# umount /mapr

そして起動時にもマウントしないように、「/etc/fstab」を編集して/dev/sda4の項目を削除します。

MapRインストール

では仕上げのMapR Hadoopディストリビューションのインストールです。各ノードで以下の手順を実行します。

まずはMapRのyumレポジトリを設定するために「/etc/yum.repos.d/maprtech.repo」を次のように編集します。

[maprtech]
name=MapR Technologies
baseurl=http://package.mapr.com/releases/v4.0.1/redhat/
enabled=1
gpgcheck=0
protect=1

[maprecosystem]
name=MapR Technologies
baseurl=http://package.mapr.com/releases/ecosystem-4.x/redhat
enabled=1
gpgcheck=0
protect=1

また、EPELパッケージも必要になるため、次のコマンドでEPELのレポジトリを設定します。

# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum localinstall epel-release-6-8.noarch.rpm

次にMapRのパッケージをインストールします。MapR 4.xではMapReduce v1とv2 (YARN) の両方のアプリケーションを同時に実行可能ですが、v1とv2間でメモリは共用できないため、16GBの限られたメモリを有効に使うためにこのクラスタではv1かv2のどちらかで構成することにします。

MapReduce v1用に構成するには次のコマンドを実行します。

# yum install mapr-cldb mapr-core mapr-core-internal mapr-fileserver \
mapr-hadoop-core mapr-jobtracker mapr-mapreduce1 mapr-nfs mapr-tasktracker \
mapr-webserver mapr-zk-internal mapr-zookeeper

MapReduce v2用に構成するには次のコマンドを実行します。History Serverはクラスタ内で1つのノードでしか稼働できないため、mapr-historyserverパッケージはnode1のみでインストールします。

# yum install mapr-cldb mapr-core mapr-core-internal mapr-fileserver \
mapr-hadoop-core mapr-historyserver mapr-mapreduce2 mapr-nfs mapr-nodemanager \
mapr-resourcemanager mapr-webserver mapr-zk-internal mapr-zookeeper

次のコマンドで、MapRのデータ用パーティションを指定するファイルを作成します。

# echo "/dev/sda4" > disks.txt

次のコマンドで、MapRの構成の初期設定を行います。このコマンドを実行すると、必要なサービスが自動的に起動します。MapReduce v1用に構成するには

# /opt/mapr/server/configure.sh -N cluster1 -C node1,node2,node3 \
-Z node1,node2,node3 -F disks.txt

MapReduce v2用に構成するには

# /opt/mapr/server/configure.sh -N cluster1 -C node1,node2,node3 \
-Z node1,node2,node3 -RM node1,node2,node3 -HS node1 -F disks.txt

さて、3台のノードすべてでここまでの設定が完了すると、数分後にMapRクラスタが稼働状態になります。ただ、MapR 4.0.1では一部のブラウザの最新の証明書に未対応のためにHTTPSでアクセスできない問題があるため、次の手順で各ノードで修正パッチを適用します。最後のコマンドでWebサーバが再起動するので、数分後に管理画面へのアクセスが可能になります。

# wget http://package.mapr.com/scripts/mcs/fixssl
# chmod 755 fixssl
# ./fixssl

Webブラウザで「http://192.168.2.1:8443」にアクセスすると、MapRのWeb管理画面が表示されます。ユーザ名「mapr」、パスワードにmaprユーザに設定したパスワードを入力してログインします。

f:id:nagixx:20141230001615p:plain

f:id:nagixx:20141230001642p:plain

MapRのクラスタをWebで登録して、ライセンスを適用します。インストール直後はBase Lisenceというライセンスが同梱されていますが、永久に無償のM3、もしくは30日間無償のM5トライアルライセンスを適用することで、NFSアクセス機能やHA機能、スナップショットなどのデータ管理機能を使用することが可能になります。

管理画面の右上、「Manage Licenses」をクリックすると出てくるダイアログで「Add Licenses via Web」ボタンをクリックします。するとMapRのWebサイトに進むかどうかという確認があるので、「OK」で進みます。Webサイトで必要事項を入力してユーザ登録を済ませると、M3もしくはM5トライアルのいずれかのライセンスを選べるので、どちらかを選択するとライセンスが発行されます。再度クラスタの管理画面に戻り、「Manage Licenses」のダイアログで「Add Licenses via Web」ボタンをクリックすると、先ほど発行されたライセンスがクラスタに適用されます。

ここで、サンプルのMapReduceジョブを実行してみましょう。円周率を計算するMapReduceジョブを実行する例です。MapReduce v1では

$ hadoop -classic jar /opt/mapr/hadoop/hadoop-0.20.2/hadoop-0.20.2-dev-examples.jar pi 10 10000

MapReduce v2では

$ hadoop -yarn jar /opt/mapr/hadoop/hadoop-2.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1-mapr-1408.jar pi 10 10000

最後にこのポータブルHadoopクラスタ特有の設定を一つ。MapRのデフォルト設定では色々なMapRのデーモンプロセスに結構多めのメモリが割り当てられていますが、このクラスタのマシンはメモリ16GBと比較的少ない容量しか持っていないので、各ノードの「/opt/mapr/conf/warden.conf」の次に示す行を編集して最小限の割り当てとし、より多くのメモリをMapReduceジョブに振り分けられるようにしましょう。

service.command.jt.heapsize.max=256
service.command.tt.heapsize.max=64
service.command.cldb.heapsize.max=256
service.command.mfs.heapsize.max=4000
service.command.webserver.heapsize.max=512
service.command.nfs.heapsize.max=64
service.command.os.heapsize.max=256
service.command.warden.heapsize.max=64
service.command.zk.heapsize.max=256

MapReduce v2用に構成するには上記に加えて、次のファイルも編集します。

/opt/mapr/conf/conf.d/warden.resourcemanager.conf

service.heapsize.max=256

/opt/mapr/conf/conf.d/warden.nodemanager.conf

service.heapsize.max=64

/opt/mapr/conf/conf.d/warden.historyserver.conf

service.heapsize.max=64

上の設定を行った後は、すべてのノードで次のコマンドでサービスを再起動して変更を反映します。

# service mapr-warden restart

ちょっとした便利な設定

ログイン画面の解像度設定

マシンの電源を入れた時に、左端のマシンnode1の画面がLCDに表示されますが、ログイン画面の解像度がLCDの解像度と一致していないので少しぼやけた画面になってしまいます。これを合わせるために、まず次のコマンドで接続されているモニタ名を確認します。下の例では「HDMI-1」です。

# xrandr -q
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
VGA-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 460mm x 270mm
1366x768 59.8*
1024x768 75.1 70.1 60.0
800x600 75.0 60.3
640x480 75.0 60.0
DP-1 disconnected (normal left inverted right x axis y axis)

そして「/etc/X11/xorg.conf.d/40-monitor.conf」を次のように編集します。

Section "Monitor"
Identifier "HDMI-1"
Option "PreferredMode" "1366x768"
EndSection

自動ログイン

デモの際には、LCDに表示するログイン画面から何も入力しないでも自動的にデスクトップ画面に移動すると便利です。そのような動作を行いたい場合には、「/etc/gdm/custom.conf」を次のように編集します。この例では、ログイン画面で30秒何も入力が無いと自動的にmaprユーザでログインします。

[daemon]
TimedLoginEnable=true
TimedLogin=mapr
TimedLoginDelay=30

電源ボタンによるシャットダウン

ポータブルクラスタをシャットダウンする際、パスワードや確認ボタンを押すこと無く、NUC上面の電源ボタンを押すだけで電源を切ることができれば非常に便利です。これを実現するためには、「/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy」を次のように編集します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
<action id="org.freedesktop.login1.power-off-multiple-sessions">
<description>Shutdown the system when multiple users are logged in</description>
<message>System policy prevents shutting down the system when other users are logged in</message>
<defaults>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
</policyconfig>