cuspos diary このページをアンテナに追加 RSSフィード

2010-04-30 Google App Engineの開発をcoLinuxで試そうとしてはまった このエントリーを含むブックマーク このエントリーのブックマークコメント

単純にいかのサンプルを見てHelloWorldを試そうとしてハマった。

http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html

coLinuxの場合は

$ python dev_appserver.py -p 開けてるポート -a 実IP helloworld/

でやらないと駄目だ・・・

2010-03-09 apache cassandra install memo

[][][][]apache cassandra install memo

twitterがバックエンドのDBApache Cassandraに変更するらしい。

ソース:http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king

Apache Cassandra本家

http://incubator.apache.org/cassandra/


最近KVSに興味を持っていることもあって、これも試してみようと思う。

本家の説明を読むと、hbaseよりWEBアプリを作る分野では便利そうな感じ。

Dynamo2.0とか。

インストール自体はhadoop、hbaseとほぼ同じ。

公式サイトにあるバイナリならダウンロードしてくるだけ。

自分の場合は、ソースパッケージを落としてきて試してみた。

現時点の最新stableは0.5.1

前提としてjavaの環境があること。

このあたりはhadoop、hbaseを試したときに入れているので問題無し。

ダウンロード&展開

$ cd ~/download
$ wget http://ftp.riken.jp/net/apache/incubator/cassandra/0.5.1/apache-cassandra-0.5.1-src.tar.gz
$ tar zxvf apache-cassandra-0.5.1-src.tar.gz 

antディレクトリ作成&実行

$ cd apache-cassandra-0.5.1                                                                 
$ ant

cassandraが使用するディレクトリを作って、権限を与えておく

$ sudo mkdir -p /var/lib/cassandra/data
$ sudo mkdir -p /var/lib/cassandra/callouts
$ sudo mkdir -p /var/lib/cassandra/staging                                                                                              
$ sudo chown -R user名 /var/lib/cassandra/    

実行権限付与
$ chmod +x bin/cassandra
$ chmod +x bin/cassandra-cli
$ bin/cassandra -f

これで起動するはずなんだけど、エラーが出て起動できない。

エラー

$ bin/cassandra -f
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
Aborted

修正

結果はポートが使用中で起動できなかった。

Address already in useって言ってるし。

で設定する項目は、bin/cassandra.in.shのポート設定を変更してやる。

デフォルトで8080と8888をつかうみたい。

$ emacs-snapshot bin/cassandra.in.sh

JVM_OPTS=" \
        -ea \
        -Xdebug \
以下を8888から38888へ変更
        -Xrunjdwp:transport=dt_socket,server=y,address=38888,suspend=n \
        -Xms128M \
        -Xmx1G \
        -XX:TargetSurvivorRatio=90 \
        -XX:+AggressiveOpts \
        -XX:+UseParNewGC \
        -XX:+UseConcMarkSweepGC \
        -XX:+CMSParallelRemarkEnabled \
        -XX:+HeapDumpOnOutOfMemoryError \
        -XX:SurvivorRatio=128 \
        -XX:MaxTenuringThreshold=0 \
以下を8080から38080に変更
        -Dcom.sun.management.jmxremote.port=38080 \
        -Dcom.sun.management.jmxremote.ssl=false \
        -Dcom.sun.management.jmxremote.authenticate=false"

これで取り合えず起動できるようになった。

2010-03-04 rubyからHBaseをごにょってみたいのでStargateを使えるようにしてみ

[][][][][]rubyからHBaseをごにょってみたいのでStargateを使えるようにしてみる。

Stargate

http://wiki.apache.org/hadoop/Hbase/Stargate

StargateのライブラリをHbaseのlib/ディレクトリにコピー
$ cp contrib/stargate/lib/* lib/
ポートを指定して起動
$ bin/hbase org.apache.hadoop.hbase.stargate.Main -p 28080

gem install

$ sudo gem install hbase-stargate

これでrubyからごにょごにょできることを確認。

RDBと設計のパターンが大幅に異なってくるので、ちょっと触って慣れてみよう。

2010-03-03 Hbase インストールメモ

[][][][][]Hbase インストールメモ

やっと本題に入れそう。

先日もKVSとしてROMAを試したが、本命のHbaseをインストールする。

HbaseはBigtableオープンソース実装といわれているがどんなもんなんだろう。

hbase install memo

hadoopユーザで作業する

$ sudo su hadoop
$ cd

ダウンロード

$ wget http://ftp.kddilabs.jp/infosystems/apache/hadoop/hbase/stable/hbase-0.20.3.tar.gz

展開

$ tar zxvf hbase-0.20.3.tar.gz

$ cd hbase-0.20.3/

設定

conf/hbase-env.sh
export	JAVA_HOME=/usr/lib/jvm/java-6-sun
を追記
conf/hbase-site.xml
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:29000/hbase</value>
    <description>The directory shared by region servers.</description>
  </property>
</configuration>

起動

$ bin/start-hbase.sh
localhost: starting zookeeper, logging to /home/hadoop/hbase-0.20.3/bin/../logs/hbase-hadoop-zookeeper-ns1.out
starting master, logging to /home/hadoop/hbase-0.20.3/bin/../logs/hbase-hadoop-master-ns1.out
localhost: starting regionserver, logging to /home/hadoop/hbase-0.20.3/bin/../logs/hbase-hadoop-regionserver-ns1.o
ut

ここまででHbaseのインストールは完了。

試す

以下のコマンドでjruby製のirbが立ち上がる。

3$ bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version: 0.20.3, r902334, Mon Jan 25 13:13:08 PST 2010

2010-03-02 hadoop サンプルプログラムを動かしてみる

[][][][]hadoop サンプルプログラムを動かしてみる

hadoopのイメージを掴むためにサンプルを動かしてみます。

$ sudo su hadoop
$ cd ~/tmp

inputsディレクトリにtest1.txtを作成。
$ mkdir inputs
$ echo hoge hoge fuga fuga あいうえお > inputs/test1.txt

hdfsにput。
$ hadoop dfs -put inputs/ inputs/
$ hadoop dfs -ls inputs
Found 1 items
-rw-r--r--   1 hadoop supergroup         36 2010-03-01 05:57 /user/hadoop/inputs/test1.txt

次に実際に動かしてみます。

hadoopディレクトリ直下にサンプルプログラムがあります。これで文字数をカウントします。

$ hadoop jar hadoop-0.20.2-examples.jar wordcount inputs outputs
10/03/01 06:00:36 INFO input.FileInputFormat: Total input paths to process : 1
10/03/01 06:00:37 INFO mapred.JobClient: Running job: job_201002281809_0001
10/03/01 06:00:38 INFO mapred.JobClient:  map 0% reduce 0%
10/03/01 06:00:46 INFO mapred.JobClient:  map 100% reduce 0%
10/03/01 06:00:58 INFO mapred.JobClient:  map 100% reduce 100%
10/03/01 06:01:00 INFO mapred.JobClient: Job complete: job_201002281809_0001
10/03/01 06:01:00 INFO mapred.JobClient: Counters: 17
10/03/01 06:01:00 INFO mapred.JobClient:   Job Counters
10/03/01 06:01:00 INFO mapred.JobClient:     Launched reduce tasks=1
10/03/01 06:01:00 INFO mapred.JobClient:     Launched map tasks=1
10/03/01 06:01:00 INFO mapred.JobClient:     Data-local map tasks=1
10/03/01 06:01:00 INFO mapred.JobClient:   FileSystemCounters
10/03/01 06:01:00 INFO mapred.JobClient:     FILE_BYTES_READ=50
10/03/01 06:01:00 INFO mapred.JobClient:     HDFS_BYTES_READ=36
10/03/01 06:01:00 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=132
10/03/01 06:01:00 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=32
10/03/01 06:01:00 INFO mapred.JobClient:   Map-Reduce Framework
10/03/01 06:01:00 INFO mapred.JobClient:     Reduce input groups=3
10/03/01 06:01:00 INFO mapred.JobClient:     Combine output records=3
10/03/01 06:01:00 INFO mapred.JobClient:     Map input records=1
10/03/01 06:01:00 INFO mapred.JobClient:     Reduce shuffle bytes=0
10/03/01 06:01:00 INFO mapred.JobClient:     Reduce output records=3
10/03/01 06:01:00 INFO mapred.JobClient:     Spilled Records=6
10/03/01 06:01:00 INFO mapred.JobClient:     Map output bytes=56
10/03/01 06:01:00 INFO mapred.JobClient:     Combine input records=5
10/03/01 06:01:00 INFO mapred.JobClient:     Map output records=5
10/03/01 06:01:00 INFO mapred.JobClient:     Reduce input records=3

処理が終わってファイルが出力されているか確認。
$ hadoop dfs -ls
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2010-03-01 05:57 /user/hadoop/inputs
drwxr-xr-x   - hadoop supergroup          0 2010-02-28 18:26 /user/hadoop/mv_dir
drwxr-xr-x   - hadoop supergroup          0 2010-03-01 06:00 /user/hadoop/outputs
$ hadoop dfs -ls outputs
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2010-03-01 06:00 /user/hadoop/outputs/_logs
-rw-r--r--   1 hadoop supergroup         32 2010-03-01 06:00 /user/hadoop/outputs/part-r-00000

ローカルにgetしてきます。
$ hadoop dfs -get outputs outputs
$ ls
inputs  outputs

中身を確認。単語数のカウントができています。
$ less outputs/part-r-00000 
fuga    2
hoge    2
あいうえお      1

こんな感じです。

ログは_logに保存されているようです。