ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

AsakusaFW0.4.0の新機能

2012-08-31 01:39:50 | PG(分散処理)

Asakusa Frameworkの0.4.0が出たので、例によって独断と偏見で見所を書いてみるw(→追記版
→0.4.0のリリース情報リリースノート 

まず、前のバージョン番号は0.2.6で、今回0.2系から0.4に上がった。
これは、AsakusaFWが洗濯機DSLに大進化を遂げた!からではなく、 逆に、大きな変化は無い→安定してきている→1.0に近付いた、ということらしい。
なので、(ThunderGateやWindGateの追加といったレベルの)大きな変化は無いが、しかしトピックは色々ある^^;

対応プラットフォームの拡張
対応するHadoopは、Apache Hadoopは0.20.205の他に1.0.3、CDH3はCDH3u5となった。
そして、MapR(Greenplum MR1.2)やEMR(Amazon Elastic MapReduce)Hadoop1.0.3も加わった!

シミュレーションモード(ドライラン)の新設
ドライランは、0.4RCで使っていて一番便利だった機能!! 実際のMapReduceは実行せず、設定が正しいかどうかだけ確認する動作モード。 
これが無いと、MapReduce処理本体を何十分も流した後で、WindGate-JDBCの設定ミスやRDBの起動忘れorzで落ちたら、また最初から何十分もかけて再実行になる><
事前にドライランで実行することにより設定を確認できるのは、とても助かった。

アプリケーションの検証機能の新設
別マシンに同一Asakusaアプリをインストールしてyaess-ssh等で連携する場合、同一バージョンのAsakusaアプリがどうかが検証されるようになった。 

モジュールの取り込み(フラグメント)
依存するjarファイルをまとめて1つのjarファイルを作成する機能が用意された。
自作ユーティリティーとかがAsakusaプロジェクトと分かれている場合、自作ユーティリティーを「モジュール」としてAsakusaプロジェクトの成果物であるjarファイルに統合することが出来る。

拡張モジュールレガシーモジュール
FileImporter/FileExporter(Direct I/Oより昔のHDFS入出力用クラス)とかcleanerとかexperimental.shは、今回標準から削除となり、拡張モジュール(extension module)になった。
(標準から削除になったそれらのモジュールをレガシーモジュールと呼ぶ)
拡張モジュールはデフォルトでは組み込まれないが、プラグインとして組み込むことは出来る。 
プラグインの拡張方法も、(YAESS/WindGate等の機能別でなく)統一された。 

Direct I/Oジョブキュー
Direct I/Oやジョブキューは、前回まではexperimental(実験機能)だったが、正式機能となった。 

●Direct I/Oの機能追加
Direct I/Oの出力ファイル名パターンにワイルドカード「*」が使えるようになった!
今までは指定されたパターンに応じて出力ファイルの分割/統合が行われていた(その為のMapReduceが実行された)が、Sqoopで読み込むような場合は分割されたままでよい為、無駄な処理だった。
「*」を指定するとMapReduceで出力されたそのままの状態になるので、その分速い。

それと、SequenceFileFormatでCODEC(圧縮形式)が指定できるようになった。これにより、ファイル毎に圧縮方法が指定できることになる。

WindGateのプロファイルでの環境変数使用
WindGateのプロファイル(ASAKUSA_HOME/windgate/profile/*.properties)内のほぼ全ての箇所で環境変数が使えるようになった。
(今までは一部でしか使えなかったようだ)

Direct I/Oコマンドラインツールユーティリティーツール
Direct I/OのbasePath/ファイル名パターンを指定してファイル一覧を表示したりファイルを削除したりするツールが用意された。
また、指定された日数より以前のHDFS上のファイルを削除できるツールも加わった。 

Jinrikisha0.2.1
AsakusaFW0.4.0に合わせてJinrikishaもバージョンアップ。違いはデフォルトでAsakusaFW0.4が対象になったくらいかもしれないが^^;
一番大きなのは、ロゴが出来たことかなw ロゴに合わせてホームページの色も変えられてるしw


今回加わった機能(の一部)のユースケースとして、EMRを使う例を考えてみる。

HadoopクライアントにAsakusa一式(YAESS)をデプロイ(配置・インストール)し、そこからEMR上のAsakusaアプリを起動するといった構成が考えられる。(EMRには、bootstrapでS3からAsakusaアプリをデプロイする)

YAESSには「yaess-ssh」という機能があり、クライアントからYEASSを起動して、SSH経由で別マシン上のYAESS・Asakusaアプリ(Hadoop)を実行することが出来る。
あるいは、WindGateで別サーバー上のRDBにアクセスすることが出来る。
★これらの接続用設定が上手くいっているかどうかを、ドライランで確認することが出来る。

また、接続先のIPアドレスはAsakusaFWのプロパティーファイルで指定する必要があるが、EMRは毎回IPアドレスが変わる。そこで、EMR CLI等のツールでIPアドレスを取得して環境変数に入れ、プロパティーファイルには環境変数だけ記述しておけば、プロパティーファイルを毎回書き換える必要は無い。
★WindGateのプロファイルで環境変数が指定できるようになった。 

また、この構成ではクライアントとEMRでAsakusaアプリ一式を別々にデプロイすることになるが、このバージョンが異なっていたら不整合が起きるかも知れない。(ステージ構成もビルドの度に変わる可能性があるし)
アプリケーションの検証機能により、バージョンが違っていたら起動できない。

こうして見ると、必要な機能が着々と実装されている感じがするかもw


那由多の軌跡

2012-08-18 22:38:36 | ゲーム

ファルコムの軌跡シリーズの最新作『那由多の軌跡』。
前回が「零」だったので、今回は大きい数にしたのが見え見え。さすがに無量大数とか不可思議だと変だから、那由多くらいに留めたのかねw

とはいえ、今回はステージクリア制のアクションゲーム。どちらかと言えば最近のイースに近いかな。スーパーマリオとかワルキューレの冒険とかにも通じるものがある。
しかしバランスはかなり練られていて、簡単すぎず、難しすぎず。(上手い人ならぬるいって言うのかもしれないけど…)
この手のアクションは難しいと先に進めないし、簡単すぎてもつまらないので、バランスは大事。
那由多の軌跡は定められたノルマをクリアすればボーナスがつくが、それをクリアしなくてもストーリーは先に進められるし、後から戻って何度でもやり直せるので親切。
色々なアクションがとれるが、ぶら下がれる奴がなかなか面白かった。ボスも弱点を見つけるまでがなかなか(笑)

一週目のラストで妙な登場人物が増えてて「なんだこりゃ?」と思ったら、二週目ではその人物達がもっと早く登場し、新しいサブシナリオになっているのがなかなか良かった。
他にも敵に捕らわれていたキャラが二週目では自力で脱出するので余計なステージをやる必要が無いとか、色々考えられて感心した。 

世界観は軌跡シリーズと同じはずだけど、前作とはほぼ全くつながりが無い。前作を知らない人でも問題なく入れる利点がある反面、知っている人にはちょっと寂しいかも。とは言え、世界観・歴史的にはかなり重要な話になっている。
「この世界には果てがある」っていう話が前作までに出ていればなお良かったんだけどねぇ。


HBase本

2012-08-06 23:26:57 | PG(分散処理)

玉川竜司さんが翻訳されたHBase』をshiumachiさん経由でオライリー様から献本していただきました。ありがとうございます!

献本していただいたから言うわけじゃないですが(笑)、これはHBaseを使う人にとっては必須の本ですねw どの章を見ても、「あ、この情報は要るよね!」というものばかり。
また、HBaseを使わない人でも最初の2章は大変勉強になるので、機会があったら見ておくと良いのではないかと思います。

以下、章ごとに興味深かった点を挙げてみます。


■■■1章 HBaseの紹介
2年くらい前にHBaseやCassandraといったNoSQL の勉強会が盛り上がったが、その頃に聞かれた(そして最近はあまり聞かれなくなった)RDBMSとの比較やCAP定理等の話題がまとめられている。

■■■2章 インストール
章のタイトルからして、既にインストールして使っている人は読み飛ばしそうだが、ちょっと待って。
HBaseのインストール方法自体はアーカイブをダウンロードして展開するだけなので、半ページしか書かれてない(笑)
この章の大半は、サーバーやネットワーク等の推奨スペックや設定で占められている。
(OSの特徴はHBaseとは無関係に有用な話題だw)
特に、メモリーが多ければよいというのものではない、というのは目から鱗だった。

■■■3~5章 クライアントAPI
クライアント、つまりプログラムで使用するJava APIについての説明。
全体的に、メソッドの紹介と共に、どの様に使うべきか/関連して何を設定しておくべきかの説明がされているので、HBaseのプログラムを書く人・テーブル設計をする人は絶対目を通しておくべき。
(なお、11.7項にもクライアントAPIに関するチューニングポイントが書かれている) 

3章ではPut・Get・Delete・Scanといった基本的なAPIについて、使い方だけでなく、内部の仕組みにも触れられているのが良い。
すなわち、サーバー側でどのような順序でどのように処理されて、エラーはどのように返されるか。これはメソッドのシグネチャを見ただけでは分からない事なので、非常に役立つ。
なお、PutやGetで個別にロックを指定することが出来るが、その説明は3.4「行ロック」の項で説明されている。

4章ではもう少し高度なAPIである、フィルター・カウンター・コプロセッサー・HTableのプール・コネクション等について説明されている。

5章はHTableDescriptionやHBaseAdminなど、管理用のAPI。
スキーマを定義する際の設計上の注意点なども書かれている。
(そして、スキーマ定義のメソッド名が誤解を招きやすいという事まで説明されているw)

■■■6章 クライアントツール
REST・Thrift・Avroの紹介や、PHPからHBaseを扱う例。
また、HivePigCascadingといった“バッチ”クライアントについても紹介されている。
その他に、HBase ShellやWeb UIの詳しい使い方も載っている。 

■■■7章 MapReduceプログラミング
自分がNoSQL(KVS)を勉強していた頃にHBaseに最も興味を持っていた理由が、HBaseはMapReduceでバッチ処理が出来るというところ。
7章ではHBaseを対象としたMapReduceプログラムについて説明されている。(TableOutputCommitterはやっぱりダミーだったのか!w)
(HBaseを使うMapReduceでは投機的実行はしない方がいいんだそうだ。知らなかった。p.313) 

ただ、バルクロードについてはここでは書かれておらず、12.2.3項に書かれている。

■■■8章 HBaseのアーキテクチャ
HBaseの内部動作・構成について書かれている。これぞHBase本の真髄・中核といった感じ(笑)

■■■9章 高度な利用方法
キーの設計方法や注意すべき点(バージョニング・タイムスタンプ)や、拡張ライブラリー(セカンダリーインデックスとかトランザクションとかブルームフィルターとか)が紹介されている。

■■■10章 クラスターのモニタリング
監視ツールであるGangliaとの連携方法とかJMXの使い方とか。

■■■11章 パフォーマンスチューニング
HBaseのチューニング方法のみならず、負荷テストの方法(YSCBの実行方法とか)も書かれている。

■■■12章 クラスターの管理方法
ノードの追加・削除といった運用方法の他、データを別クラスターへコピーする方法やクラスター間でレプリケーションする方法が紹介されている。
また、『HADOOP HACKS』でも紹介されているImport/Exportツールやバルクロードについても書かれている。

■■■付録
付録ですら見といた方がいいってのは、(分厚い本なので)困りものだ^^;

付録AはHBaseのプロパティーの説明。

付録BはHBase0.92~94の簡単な相違点。自分の知識は0.89止まりだったので、こういうのが有り難い。

付録FはHBaseとBigtableの違いの紹介。HBaseはBigtableを元にしているだけあって、こういうのはちょっと気になるよね(笑)

付録D・Gは、Apache HBaseを拡張したディストリビューションであるCDHやAmazon EMRの紹介。さすがにMapRの紹介は入ってないが^^;(あと、HDFSに代わるGlusterFSとかも一時期話題に挙がっていたと思うのだが、入ってないなー)


ふう、盛りだくさんで読むの大変だわ(笑)

P.S.
自分がHBaseについてメモを書いていたとき、「qualifier」を何と訳せばいいのか困ったけど、「列修飾子」で決定かな。