Accumuloをインストールしてみる

23日目です
先週の金曜日に、CDH4.3でAccumuloが利用できるというブログが公開されました。Apache AccumuloはApache HBaseと同様に、GoogleのBigTableの論文を参考にして開発されています。Accumuloは当初NSAが開発してOSS化されているもので、HBaseよりもセキュリティの面で優れている他に、Secondary Indexが利用できる点は興味深いです。
HBaseとAccumuloとの違いは、2年前のスライドこのドキュメントが参考になるかもしれません(後者の細かいところは見ていませんが、)。今回手元のCloudera Demo VMに環境を構築しましたが、かなり難航しました。

Apache Accumulo Installation Guide

ドキュメントはこちら(pdf)に公開されています。今回はまずCloudera Managerで構築しようとしたのですが、CDH5b1を構築した環境を使い回したのが悪かったのか、試行錯誤してもAccumuloのサービスが表示されずに断念。
諦めてtarballからインストールしようと試みましたが、最初にCloudera Managerを変更しすぎたのが原因かHDFSが動作しなくなってしまい中断。あきらめて、一旦クラスタを削除して作り直したところ、うまくいったのが以降の手順です。イレギュラーな手順で行っているので、もしかすると普通にやればすんなりいくのかもしれません。
なお、tarballから構築する場合、以下の点に気をつけて下さい。
1) ドキュメントのコマンドラインに書かれている何カ所かのハイフンが制御文字になっている。そのままコマンドをコピペしても失敗する
2) tar.gzのダウンロード先が書かれていない。こちらからどうぞ http://archive.cloudera.com/accumulo/accumulo/1.4/accumulo-1.4.3-cdh4.3.0-dist.tar.gz

Cloudera Manager 5でインストール

インストール手順に従いParcelを設定しておきます。
Accumulo_parcel Accumulo_parcel2
サービスの追加でAccumuloサービスを選択します。
cm5_add_servicecm5_accumulo_serviceAccumuloにはHDFS、MapReduce、Zookeeperの各サービスが必要です。(なぜMapReduceに依存関係があるのかは不明)
cm5_accumulo_dependency今回は疑似分散環境なので、サービスは全て同じホストに割り当てます。
cm5_aaccumulo_assign設定はデフォルトのままにしました。
cm5_accumulo_configure起動中の画面
cm5_accumulo_starting起動後の画面
cm5_accumulo_service_status実際のところ、この状態に持って行くまでにはいくつかのステップが必要でした。手元の環境ではAccumuloのInitializeがされていなかったのが原因か、ドキュメントに書いてあるパーミッションの問題か、Master以外のサービスが起動せずでした。最終的にメニューから初期化を行いパーミッションを変えたところうまくいったようです。

シェルから使ってみる

クライアント設定の配布を選んで配布しておきます。その後、ターミナルから以下のように確認してみました。
ドキュメントに従いパーミッションを変更
[shell]
[cloudera@localhost ~]$ sudo su – hdfs
-bash-4.1$ hadoop fs -chmod 750 /accumulo/*
-bash-4.1$ hadoop fs -chmod 755 /accumulo/instance_id
-bash-4.1$ logout
[/shell]
パスワードをデフォルトのsecretから変更
[shell]
[root@localhost ~]# su – accumulo
-bash-4.1$ accumulo shell -u root
grep: /etc/accumulo/conf/masters: No such file or directory
Enter current password for ‘root’@’accumulo’: ******
Shell – Apache Accumulo Interactive Shell

– version: 1.4.3-cdh4.3.0
– instance name: accumulo
– instance id: 715471e1-e6f1-47c2-a6f5-a4421f9c441e

– type ‘help’ for a list of available commands

root@accumulo> passwd
Enter current password for ‘root’: ******
Enter new password for ‘root’: ********
Please confirm new password for ‘root’: ********
root@accumulo> exit
-bash-4.1$ accumulo shell -u root
grep: /etc/accumulo/conf/masters: No such file or directory
Enter current password for ‘root’@’accumulo’: ********
Shell – Apache Accumulo Interactive Shell

– version: 1.4.3-cdh4.3.0
– instance name: accumulo
– instance id: 715471e1-e6f1-47c2-a6f5-a4421f9c441e

– type ‘help’ for a list of available commands

root@accumulo> tables
!METADATA
trace
root@accumulo>
[/shell]
テーブルを作ってデータをインサートしてみます。
[shell]
root@accumulo> createtable mytable
root@accumulo mytable> tables
!METADATA
mytable
trace
root@accumulo mytable> scan
root@accumulo mytable> insert row1 colf colq value1
root@accumulo mytable> scan
row1 colf:colq []    value1
root@accumulo mytable>
[/shell]
HBase shellとは使い勝手が違うので、慣れるまでには時間がかかりそう。Hueが対応してくれれば。。。
今日はこの辺で。

コメント