2010年5月アーカイブ

先日セットアップした擬似分散モードの動作確認を行います。

テストに使うサンプルはいつものやつと、そのScala版Pig版です。

  • Hadoop: 0.20.2
  • Pig: 0.6.0
  • Scala: 2.8.0.Beta1

を利用します。
それぞれインストールが完了していて、Hadoopは擬似分散モードの準備が出来ているものとします。

Hadoop on MacOSX

| # Comments | 2 Trackbacks
MacOSXにHadoopを擬似分散モードで動作できるようにインストールした時の記録です。

利用した環境は次の通りです。

  • MacOSX Snow Leopard
  • Hadoop 0.20.2

また、参考にしたページは次のページです。

このページにはHBaseのインストールまで記載されていますが、まだそこまでやっていないので、機会があればということで。

TwitterのストリーミングAPIをだらだらと取得するプログラムをScalaで作成してみました。

対象は statuses/sample としましたが、URLを変更するだけで他のAPIでも同様に取得できると思います。
XML文字列取得後の処理はハンドラで処理ができるようにしてありますので、画面に垂れ流すなり加工して遊ぶなりご自由にどうぞ。

居眠り床屋問題

| # Comments
ScalaのActorのお勉強がてら、「居眠り床屋問題」というものに挑戦してみました。

居眠り床屋問題 どう書く?org

並行処理のお題です。ある床屋の亭主は、客がいないときまって居眠りを始めます。床屋店内には三台の散髪兼順番待ち用の椅子があり、客は来店時に椅子に空きがあれば、いずれかに勝手に座って自分の番が来るのを待ち、散髪を終えてから店を出ます。空席が無ければそのまま何もせずに立ち去ります。居眠り中の亭主は、客の入店時に起こされると待ち客すべてをひとりずつ順に散髪しますが、誰もいなくなればまた居眠りを始めます。

この床屋店に16人の客が訪れた日のシミュレーションを行なうコードと、その結果(下に例として示したログ形式。「[スレッドのIDなど] イベント描写」の一覧と終了後の総括)を出力して示してください。なお、散髪には一人当たり100~400ミリ秒の時間(この範囲でランダムに変化)を要し、客は通常 0~200ミリ秒(同)の間隔で訪れます。ただし例外として9番目の客だけは前の客から1200ミリ秒程度の間隔(すなわち、最大三名の待ち客全員を散髪し終えるのに十分な時間)をあけて訪れるものとします。

実装に際し、実行時のデッドロックの回避はもちろんですが、そのほかにも、競合状態(席の空きを確認して座ろうとしたら、もう別の客が座っていた...というような事態)などの不整合も生じないよう配慮し、必要であればそのための対策を講じてください。たとえば来客の間隔が仮に0ミリ秒で固定の場合(つまり、客が一斉に来店した場合)でも、コードが正常に動作するかどうか試してみるのもよいかもしれません。


若干手抜きでログ出力などが設問通りではありませんけど。

Pigという、Hadoopをお手軽に使いましょうツールを使ってみました。
また、 Scala によるユーザー定義関数(UDF)の記述、組み込みをしてみました。

題材はいつもと同じです。

  • Pig: 0.6.0
  • Scala: 2.8.0.Beta1

を利用しています。

$ git clone https://github.com/ueshin/pig-scala-aggregate.git
$ cd pig-scala-aggregate
$ git checkout pig-scala-aggregate-0.6.1

で利用できます。

また https://github.com/ueshin/pig-scala-aggregate/tree/pig-scala-aggregate-0.6.1 でブラウズできます。

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31