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
■[KVS][ubuntu][linux][cassandra]apache cassandra install memo
twitterがバックエンドのDBをApache 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とか。
自分の場合は、ソースパッケージを落としてきて試してみた。
現時点の最新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を使えるようにしてみ
■[ubuntu][hadoop][MapReduce][hbase][linux]rubyからHBaseをごにょってみたいので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 インストールメモ
■[ubuntu][MapReduce][hadoop][hbase][linux]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のインストールは完了。
試す
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 サンプルプログラムを動かしてみる
■[ubuntu][MapReduce][linux][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に保存されているようです。

