k4200’s notes and thoughts

Programmer side of k4200

Play! 2.0から2.1にアップデート

時代はPlay 2.1だよね(棒

Play 2.0から2.1にアップデートした。丸1日位かかったので、これからやる人に向けてちょっとメモ。

  • 旧環境: Play 2.0.4
  • 新環境: Play 2.1.1
なぜアップデートしようと思ったか

ちなみに、元々Play 2.1にアップデートするつもりじゃなかったんだけど、以下の理由から何となく・・・

  • Eclipse 3.6 + Scala IDE 2.0の環境で、"Check for Updates"をしたら、Scala IDEの新しいのが出てたので何も考えずにアップデート
  • 何かうまく動かない・・・調べてみたらScala IDE 3.0はEclipse 3.6では動かないとのこと
  • Scala IDE 2.0に戻そうと思ったけど、Scala 2.8向けのしか無いぞ・・・
  • Eclipse 4.2 + Scala IDE 3.0にすっか
  • せっかくだし、Play 2.1にしてみるか

Eclipse 3.6でScala IDE 3.0にしちゃうと、以下の様なエラーが出る。Eclipse 3.6の場合はアップデート出来ないようにしとけよ!ってみんな思うらしい。

Could not open the editor: scala.tools.eclipse.ScalaPresentationReconciler cannot be cast to org.eclipse.jdt.internal.ui.text.JavaPresentationReconciler
Play, Scala, ライブラリの非互換性に対応する

Play 2.0から2.1にあたって、対応すべき点は、大雑把に言って以下の通り。

  • Play 2.0と2.1間の非互換性
  • Scala 2.9と2.10間の非互換性
  • 使用しているライブラリのバージョンが上がることによる非互換性

Play自身に関しては、こちらのMigration Guideを参考に。

Scala 2.9と2.10に関する非互換性ってどっかにまとまってるのかな。とりあえず、Manifestに関するドキュメントはあったけど。

ライブラリに関しては、2.9で使えるバージョンと2.10で使えるが異なる場合が結構あって、その場合に非互換性がある場合がある。これはまぁライブラリ毎に対応する必要がある。

以降、順に説明していく。

続きを読む

sbtプロジェクトをデプロイ(sbt 0.11)

rpscala 第100回でやった事。

やりたい事

sbtで出来たプロジェクトがあって、以下のものをリモート環境にデプロイしたい。

  • 自分で書いたコード
  • 依存ライブラリ

プロジェクト構成はこんな感じ。multi project構成になっている。モデル等共通部分のcommon、フロントエンドのwebsite、バックエンドのbgtasksの3つのプロジェクトで、前者2つはPlayProject、bgtasksは通常のsbt Project。なぜこんな構成になったかは、このスライドの6ページ辺りを参照。

環境

  • Play 2.0.4
  • Scala 2.9.1
  • sbt 0.11.3
続きを読む

祝rpscala開催100回!

祝第100回!

自分がちょくちょくに参加している「Scala勉強会 in 東京」、あるいはTwitterハッシュタグである「rpscala」と言った方が通りがいいかもしれないけど、それがついに開催が100回に!

おめでとうございます!
>今までrpscalaに関わって来られた全ての人

第100回はたまたまw祝日だったので、特別バージョンということでハッカソンに(そこでやった内容については別途書く予定)。

さて、コミュニティ活動って参加者みんなの協力で成り立ってると思うし、自分自身それほどたいした貢献もしていないので、普段は口に出してないんだけど、rpscalaは元々自分が始めた勉強会がベースになっている(知ってる人もいると思うけど)。

別にそれについて「偉いだろ」みたいな事を書きたいわけじゃなくて、いい区切りだし、数名の方から勉強会や懇親会の時に「発起人」として紹介されたりしたので、今回だけはそうした立場で少し書いてみようかなと。

続きを読む

CentOS 6.3でのChef Soloの環境設定

はじめに

最近話題の(?)Chefの環境をCentOS 6.3上に構築し、レシピの書き方の基本的な事を説明する。

Chef Solo環境構築に関する公式ドキュメントはこちら

そこにOS別のインストールドキュメントがあるが、CentOSなどのRed Hat系はこちら。基本はこれに沿ってやっていくが、本記事では一部これとは違う内容もあるので注意。

続きを読む

Cloudera ManagerでHadoopやHBaseのクラスタをセットアップする

目的はCloudera Managerで楽にHadoopクラスタ構築をする

クラスターの実験用に自宅サーバーを購入したので、ぼちぼちセットアップしていく。以前VPSで2台構成のクラスタ(しょぼい)を構築した時は、CDHを手動でインストールしたが(過去記事)、今回はメモリとかも割と潤沢にあるのでCloudera Managerというのを使ってみることにした。

Coudera Managerは、HadoopHadoop関連のソフトウェア(HBase, ZooKeeper, Hive, Impala, Hue等)のクラスターを構築するためのソフト。Free Editionは50ノードまで(ver. 4.5からノード数の制限が無くなったそうです)無料で使える。

ドキュメントはこの辺から。

続きを読む

第2回初心者向け分散処理勉強会

第1回に続き、第2回も無事終了。今回は体調不良や急用でキャンセルした方が数名、遅れて来られた方も数名いたため、懇親会でのピザは無し。

発表内容

LTSVをPigで処理する話(みやかわさん)

資料はこちら

数週間前、突如Twitterで大流行した人気ワードLTSV。それをPigで処理できるようにするプラグインを書きましたよ、というお話。

標準で読めるのは、PigStorageを使ってのTSV, CSV、その他、JsonLoader、TextLoaderなど。それ以外に、PiggyBankというPig用プラグインレポジトリに、Apache Logやその他有名なフォーマット用のプラグインがあるとの事。

自分はそもそもPig自体も名前程度しか知らなかったので、この発表を聞いた後、Pigでどんなことが出来るかとかも少しイメージがついて良かった。

分散DBノード用軽量ハードウェアについ(かわのさん)

資料は未公開?

ARMベースの自作ボードを作って、SATA経由でHDDをつないで、分散ストレージみたいなのを作りたい、という話。内容はなかなか夢があって面白い。

アーキテクチャとしては、HDFSみたいな感じ。ネームノードのみPCを使う事を想定。データノードに、今回発表の安価で軽量なHW+市販のHDDを使用。ノード間はネットワークで接続。

HDDも通常は電源をオフにしておき、データの読み書きに対する要求があった時のみ、ボードがHDDを起こして処理をする、という流れ。ボード自体も省電力で、HDDも通常はオフなので省電力。

当然、レイテンシーは高めなので、アーカイブ用途とかを想定しているとの事。

Dremelの論文を読んだんでその説明(鹿島)

ClouderaのImpalaの中身を調べようと思ってたんだけど、その前段階として、Impalaのアーキテクチャに影響を与えたGoogleのDremelというシステムの論文を読んだので、それについての発表。基本は以前書いたブログの内容通り。

なぜMRよりDremelの方が高速なのかという疑問(上のブログ記事参照)に関して、みやかわさんが以下が理由ではないか?と指摘してくれた。

  • MRの場合、Mapが終わるまでReduceが始まらない
  • Mapの結果を中間ディスクに書き込む

それ以外にも、色々な話が出た。

次回

第3回は4/8(月)開催予定。

何人かが、時間があれば軽く発表するかも、と言ってくれたので期待。その他も、発表したい事がある人は是非!

CentOS 6のBIND起動時にGenerating /etc/rndc.keyで固まる

CentOS 6.3でBINDを起動しようとすると、以下のメッセージを出して固まる。

Generating /etc/rndc.key:

解決策はここにあるように、rndc-confgenコマンドで /etc/rndc.key ファイルを作成する。

# 通常時
rndc-confgen -a -r /dev/urandom
# chroot環境の時
rndc-confgen -a -r /dev/urandom -t /var/named/chroot