詳しくは、
 Googleライクなオープンソースインフラストラクチャ「Hadoopプロジェクト」が弾みをつける

本家
 http://hadoop.apache.org/core/


・・・遊んでみよう!

=============================
インストール&設定

Hadoop構成:
 

 server1 : JobTracker + NameNode
 server2 : SecondaryNameNode
 server3 : TaskTracker + DataNode
 server4 : TaskTracker + DataNode

環境:
 Java
    /usr/local/java
  実行ユーザ: hadoop
 Hadoopインストールルートディレクトリー
    ・・・ http://hadoop.apache.org/core/ よりダウンロード(Ver 0.16.1)
    /home/hadoop/hadoop
  Hadoopファイルシステム
    /home/hadoop/filesystem

 各サーバ間でSSH接続が出来る事。

環境構築:
 
server1 で パスフレーズなしのキーペアを作成。
 % ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

 生成されたid_dsaファイルを名前を変えてserver2 からserver4へコピー
 コピー先:/home/hadoop/.ssh/authorized_keys
  $ chmod 600 ~/.ssh/authorized_keys   ←パーミッションを変更

設定ファイル:
 ファイル:/
home/hadoop/hadoop/conf/hadoop-env.sh
 内容:JAVA_HOMEを設定

  export JAVA_HOME=/usr/local/java

設定ファイル:
 ファイル:/
home/hadoop/hadoop/conf/hadoop-site.xml
 内容: sever1,2,3,4共通

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>fs.default.name</name>
                <value>server1:9000</value>
        </property>
        <property>
                <name>mapred.job.tracker</name>
                <value>server1:9001</value>
        </property>
        <property>
                <name>dfs.name.dir</name>
                <value>/home/hadoop/filesystem/dfs/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/hadoop/filesystem/dfs/data</value>
        </property>
        <property>
                <name>mapred.system.dir</name>
                <value>/home/hadoop/filesystem/mapred/system</value>
        </property>
        <property>
                <name>mapred.local.dir</name>
                <value>/home/hadoop/filesystem/mapred/local</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

 ファイル:/home/hadoop/hadoop/conf/masters
  内容: server1のみ

server2

 ファイル:/home/hadoop/hadoop/conf/slaves
  内容: server1のみ

server3
server4 

ファイルシステムを構築:
 #
server1 上で実行 

$ cd /home/hadoop/hadoop
$ bin/hadoop namenode -format

  ※ /home/hadoop/filesystem 配下にHadoopのファイルシステムが構築

起動:
 #
server1 上で起動させる。
 $ cd /home/hadoop/hadoop
 $ ./bin/start-all.sh     (停止は、stop-all.sh) 

 各サーバ上で確認(Javaのjpsコマンドで確認。jps自体も表示されるが省略)
 server1 :
   % jps
   7808 NameNode
   7942 JobTracker 

 server2 :
   % jps
   8255 SecondaryNameNode

 server3,4
   4328 DataNode
   4414 TaskTracker

=============================
ファイルを格納:

例としてインストールした hadoopを格納(hadoop_putという名前で格納)
 $ cd /home/hadoop
  $ ./hadoop/bin/hadoop dfs -put hadoop hadoop_put

 確認
  $ ./hadoop/bin/hadoop dfs -ls
 Found 1 items
 /user/hadoop/hadoop_put      <dir>           2008-03-25 17:47

 取り出し(hadoop_getという名前で取り出し)
 $ ./hadoop/bin/hadoop dfs -put hadoop_put hadoop_get

ファイルシステム(NameNode )の状況を確認:
   
WEBブラウザより確認(server1のポート50070 へアクセス)
   http://server1:50070

 =============================
Jobを投入:

例1:Sudoku (サンプルデータ:puzzle1.dta を解析)
$ cd /home/hadoop/hadoop
$ ./bin/hadoop jar hadoop-0.16.1-examples.jar sudoku src/examples/org/apache/hadoop/examples/dancing/puzzle1.dta

8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8  

例2:円周率
$ cd /home/hadoop/hadoop
$ ./bin/hadoop jar hadoop-0.16.1-examples.jar pi 10 10000

Number of Maps = 10 Samples per Map = 10000
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Wrote input for Map #5
Wrote input for Map #6
Wrote input for Map #7
Wrote input for Map #8
Wrote input for Map #9
Starting Job
08/03/25 20:09:45 INFO mapred.FileInputFormat: Total input paths to process : 10
08/03/25 20:09:46 INFO mapred.JobClient: Running job: job_200803251837_0002
08/03/25 20:09:47 INFO mapred.JobClient:  map 0% reduce 0%
08/03/25 20:09:50 INFO mapred.JobClient:  map 20% reduce 0%
08/03/25 20:09:52 INFO mapred.JobClient:  map 60% reduce 0%
08/03/25 20:09:53 INFO mapred.JobClient:  map 80% reduce 0%
08/03/25 20:09:54 INFO mapred.JobClient:  map 100% reduce 0%
08/03/25 20:10:01 INFO mapred.JobClient:  map 100% reduce 100%
08/03/25 20:10:02 INFO mapred.JobClient: Job complete: job_200803251837_0002
08/03/25 20:10:02 INFO mapred.JobClient: Counters: 9
08/03/25 20:10:02 INFO mapred.JobClient:   Job Counters
08/03/25 20:10:02 INFO mapred.JobClient:     Launched map tasks=10
08/03/25 20:10:02 INFO mapred.JobClient:     Launched reduce tasks=1
08/03/25 20:10:02 INFO mapred.JobClient:     Data-local map tasks=7
08/03/25 20:10:02 INFO mapred.JobClient:   Map-Reduce Framework
08/03/25 20:10:02 INFO mapred.JobClient:     Map input records=10
08/03/25 20:10:02 INFO mapred.JobClient:     Map output records=20
08/03/25 20:10:02 INFO mapred.JobClient:     Map input bytes=240
08/03/25 20:10:02 INFO mapred.JobClient:     Map output bytes=320
08/03/25 20:10:02 INFO mapred.JobClient:     Reduce input groups=2
08/03/25 20:10:02 INFO mapred.JobClient:     Reduce input records=20
Job Finished in 16.432 seconds
Estimated value of PI is 3.14412 

Map/Reduce(JobTracker )の状況を確認:
   
WEBブラウザより確認(server1のポート50030 へアクセス)
   http://server1:50030

   前例の円周率は時間がかかるので、この間管理画面より状態が解る。   

宮内庁のWEBページの検索エンジンがNamazuだったので他の内閣はどんなエンジンを使っているか調べてみた。

Namazu(ふーん)
 宮内庁:http://www.kunaicho.go.jp/
 人事院:http://www.jinji.go.jp/
 総務省:http://www.soumu.go.jp/
 法務省:http://www.moj.go.jp/
 経済産業省:http://www.meti.go.jp/
 防衛省:http://www.mod.go.jp/

Google アプアライアンス(たぶん・・・)
 農林水産省:http://www.maff.go.jp/

・・・以下不明な検索エンジン(Inktomiかと思ったり思わなかったり・・・)

不明ソフトウェアの検索エンジンその1
 内閣官房:http://www.cas.go.jp/
 文部科学省:http://www.mext.go.jp/
 外務省:http://www.mofa.go.jp/mofaj/

不明ソフトウェアの検索エンジンその2
 内閣法制局:http://www.clb.go.jp/
 内閣府:http://www.cao.go.jp/
 公正取引委員会:http://www.jftc.go.jp/
 金融庁:http://www.fsa.go.jp/
 環境省:http://www.env.go.jp/

不明ソフトウェアの検索エンジンその3(Javaベース)
 国家公安委員会:http://www.npsc.go.jp/
 警察庁:http://www.npa.go.jp/

不明ソフトウェアの検索エンジンその4(PHPベース)
 財務省:http://www.mof.go.jp/

不明ソフトウェアの検索エンジンその5
 厚生労働省:http://www.mhlw.go.jp/

不明ソフトウェアの検索エンジンその6
 国土交通省:http://www.mlit.go.jp/

・・・
※参考までに、このサイトで横断的に検索出来ます。

 家のMac+FireFoxでGoogleの検索に「新デザインに切り替える」ボタンがついた。 このボタンを押すとデザインが変わったので、会社で普通にMacユーザと話したところあまり信じてもらえなかったので、画像をアップロード! もちろんiGoogleではないし、Google関係の拡張機能といえばToolbarを入れているぐらい。 あまり良く調べていませんが新デザインのテスト中かな?

「新デザインに切り替える」ボタンがある。
google_design1.png

新デザインの画面。 タブでメニューが見やすくなっている。
google_design2.png

久しぶりに一人になる時間が出来たので、HEROレミーのおいしいレストランを観てきた。
 
HERO はドラマも全て観ていたのとストーリーのテンポが好きだったので映画版も観にいきましたが、感想は懐かしかったものの松たか子の髪型が変わってしまった事 が非常に気になった。 当初のテレビ版でも昨年のスペシャルでも変えていなかったのに何故劇場版ではばっさりと切ってしまったのだろうか? 一応楽しめた ものの個人的にはスペシャル版が一番好きです。

この日は1本だけ見ようと思い行きましたが都合により時間が空いてしまったので、もう1本レミーのおいしいレストランも見ましたが案の定子供だらけ。 そこへおじさんが一 人で、、、怪しいと思われても仕方ないと思いましたが最後まで鑑賞しました。 見た感想ですがコンピュータ感を感じさせず、もはやCGとは思わせないピク サーの技術に関心し、内容も大人ながらに感動し非常に良かったです。 家に帰ってから奥さんに話したところ是非見たいと言っていたので年末にはDVDで販 売されるとの事なので買ってやろうと思いました。


 

面白かったのでエントリー
Purple Include Test of Blogger Integration

↑このページの説明に従ってJavaScriptを埋め込み、以前書いたエントリー
http://www.blogkid.com/weblog/archives/001498.html から
「Google Talk Gadget」の文字列というか最初に出現するH1タグの情報を取得する場合は次のような書き方をすれば取得出来ます(他にも色々な取得方法があります)
<span
href="http://www.blogkid.com/weblog/archives/001498.html#xpath(//h1[1])"
></span>
↓こんな感じで取得できます。


※JavaScriptとサーバサイドのプログラムで実現しています。
※日本語は化けます。サーバ側のプログラムを変更しないとたぶん無理です。

Introducing the YUI Compressor のツールで prototype.js ( 96311 バイト)を圧縮すると。

% java -jar yuicompressor-1.0.jar prototype.js
prototype-min.js( 58672 バイト )というファイル名に変換され約4割圧縮する事が出来た。

jscsscomp というツールも試してみましたが、私の環境では、prototype.js の圧縮でエラーになった。 しかしこのツール本来であれば複数のCSSやJavaScriptを1つにまとめる事も出来るのでなかなか面白い。

 奥さんのPCが7年目に入りかなりガタがきていたのでVISTAが動くPCを検討していましたが、Windowsに飽きたり友達でMacユーザが多い事等に影響されMacBook Proを購入しました。 本当は新型のiMacも勧めましたがリビングには大きすぎるという事で結局ノート型になりました。 しかし奥様のパソコンとはいえ当面は私が毎日遊びます。

アップル、MacBook Proをアップデート

8月8日にシックス・アパートからリリースされました、MovableType4 へバージョンアップへバージョンアップしました。
Movable Type 4 を出荷開始します

バージョンアップはダウンロードから2分程度で完了し、デザインはVOXにあるデザインを使えますがいろいろと、ごにょごにょすること30分、悩む事もなく簡単に3列デザインへ変更できました。

使ってみての感想ですが操作性が非常に良くWYSIWYGはもちろん、テンプレートを個別での管理やインクルードしているテンプレートの視覚化とリンクなど・・・MT3から大幅に変更されましたが違和感なく使えました。

 

稀に聞かれるのでメモ・・・

cfengineで/etc/hostsファイルを1時間毎に同期させる手順。

○環境例

* cfengineのサーバホスト名    :cfserver
* cfengineのクライアントホスト名 : cfclient
* ネットワークセグメント       : 192.168.0.0/24

先週の土曜日(21日)に奥様の友達が家に遊びに来ると言う訳で、1日映画館へ避難しました。
久しぶりの映画鑑賞でしたが、どうしても観たかったダイハード4.0と、ハリーポッタの最新作、不死鳥の騎士団の2本連続して観ました。
 
まずはダイハード。 非常にいいです。何がいいかってストーリー、アクション、どんぱち度全てのバランスが良いです。 ブルースウィルスも歳をとりましたがそんなの一切感じられない演技でした。

次はハリーポッター。 前作より死者が出ていますが今回も死者が出ることと、ハッピーエンドでは終わりません。 大人の私はいいですが、もはや子供向けの映画とは思えない感じです。 あと2作で完結ですが、ここまで来るとたぶん又劇場に足を運ぶでしょう!
そういえば、作者のJ・K・ローリングさん。 今は知りませんが4年前はエリザベス英女王より資産が多かったんですね。 いやーすごい!
 

最近なんとなく気になって1回も遊んだ事がなかったDRBDを簡単に試してみた。
http://www.drbd.org/
DRBDとは何ですか? から抜粋

DRBDはブロックデバイスで、ハイアベイラビリティクラスタを構築するように設計されています。これはブロックデバイス全体をネットワーク(専用ネットワーク)経由でミラーリングすることによって実現されます。いわゆるネットワークRAID1として考えることができるでしょう。


Google Developer Dayで発表になりました、Google GearsですがGoogle Codeにサンプルがあったので、今更ですがダウンロードして遊んでみた。
 http://code.google.com/apis/gears/tools.html
 http://code.google.com/apis/gears/GoogleGears_SamplesAndTools.zip

 ※WEBから登録したデータがローカルDB(SQLite)へストアされるデモです。
  ⇒このテクノロジーに対してセキュリティへの心配がある人はここから先の操作はしないで下さい。
 
 ○まずはGoogle Gearsをインストールする。
 
 ○そして次のURLへアクセス。セキュリティーのポップアップが表示されるますが、これを許可。
 http://www.blogkid.com/googlegears/samples/hello_world_database.html
  ⇒適当に3ワード登録する。
 
 ○クエリーを発行するツールへアクセス。セキュリティーのポップアップが表示されるますが、これを許可。
 http://www.blogkid.com/googlegears/tools/dbquery.html
  ⇒ select * from sqlite_master のSQLが左上に表示されるの、Execute !
  ⇒ Demoテーブルがあるのが確認できる。

 ○Demoテーブルの中を見てみる。
  ⇒ 先ほどの結果の下側にある、"Enter SQL statement here"を押す。
  ⇒ 文字が消えるので、"select * from Demo;" と入力し、Execute !
  ⇒ 前に登録した文字列の結果が表示される。
  ⇒ ブラウザをオフラインの状態にしても同様の結果が解る。

 ○基本的にSQLであれば一般的な事が出来るので、SELECT / DELETE / NSERTなどは可能

 ○私の環境はWindowsXP + IE7 ですが、この場合次の場所へDBが構築される。

  C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Google\Google
Gears for Internet Explorer\www.blogkid.com\http_80\database-demo#database
  ⇒[USERNAME]はログインしている環境

  ※クライアントの環境により構築される場所は変わります。  
   http://code.google.com/apis/gears/api_database.html#directories
 
 ----
 何かこれを使った面白いアイデアはないかな・・・
 
 関連:
  【ハウツー】"ブラウザ+Gears"でここまでできる! Google GearsのDB機能を使ってみよう

仕事の都合、残念ながらレセプションパーティーへ参加する事は出来ませんでしたが、グーグルのイノベーションを肌で感じることが出来た楽しい1日でした。
 Google Developer Day 2007 - 東京
 グーグルの人たちのブログ

 午前は基調講演でGreg Steinからオープンソースへの取り組みを聞きましたが、全ての人達(エンジニア)が幸せになる為に貢献している事がとても良く理解する事ができました。 次は、はてなの伊藤直也さんの公演でしたが、はてなのサービス作りの基盤の説明や私はコミュニーティーにおける「清濁混合」と言う言葉が印象的でした。 次はグーグルの及川卓也さん、終始淡々とした説明でしたが、ここにサプライズがありました。 突然 Google Gears ( http://gears.google.com/ ) の話しをしましたが、これが凄い!オフラインでも作業可能なようにクライアント側へSQLiteを入れてそこでデータを入れて、アクセス可能なようにする。 そのうちクライアント間でもこのデータをコピーしたり共有出来るようにもなれば面白いですね。

 午後はセッションが選べ私は次のセッションに参加し主な感想。
 ⇒ Google Maps API Introduction : クリス・アテナシオさん
   ・まだAPIを使った事のない初心者の方にも解かりやすいセッションだったと思う。
   ・サンプルページのコードの表示の切り替え/実行などのデモに感心。
   ・新しいAPIの表示するマーカー数を指定出来るのは知らなかった。

⇒ KML-Geographical Format For Earth & Maps : Bruno Bowdenさん
   ・日本語での挨拶に会場が盛り上がった。
   ・地図上のデータだけでなく、時系列でデータを観測できるのは知らなかった。
   ・kmzフォーマットについて理解できた。

⇒Intro to Google Data APIs...: Ryan Boydさん
   ・GDataはあまり使った事はありませんでしたが認証画面の存在などで興味が沸いた。
   ・なんでもかんでも出来る魔法のAPIという事が理解できた。

⇒Software Engineer in Google :鵜飼文敏さん
   ・スーパーエンジニアの集団である事を改めて認識。
   ・ソフトウェアは、PerForceで管理している。
    他のに変えようなんて話もある。
   ・コード・レビューには、Mondorian というPythonベースのウェブソフトウェアを使っている。

 久しぶりに一日がかりのセミナーで疲れましたが、ホント有意義な一日でした。
 帰りにお土産のTシャツの頂き、ありがとうございました。
 スタッフの皆さんお疲れさまでした。。。

Wii の Opera ブラウザのボタンを認識するJavaScriptを見つけたので、試しにGoogle Maps へ対応させてみた。

http://www.blogkid.com/googlemaps-wii/
 
以下ボタン操作説明

十字キー:スクロール
Bボタン:表示モード切替(地図→航空写真→地図+航空写真)
+:縮小
-:拡大
1:表示している場所を記憶させる
2:記憶させた場所へ移動

IEでは動作しないが、一応FireFoxではこのテストサイトにある、キーバインドで動きます(Wii用に作ったので細かいところまでは対応していません。)
  
正直なところ作ってみたものの、あまり面白くはなかった。 Wii コントローラの傾きを検知する事ができれば少しは面白くなったと思いますが、そんな事できるのかな?

Capistranoで遊んでみた。

多くの方が絶賛しているruby製のアプリケーションなどを管理する為のツールですが、私はrubyの知識はないものの簡単な操作ができるまでCentOS上で遊んでみました。 今回の例では、apache2がインストールされた2台のサーバを1台の管理サーバから起動/停止をする簡単な例を説明します。

MySQLでレプリケーション&フェイルオーバーについて簡単な手順
※一度この構成で試し(遊ぶ)たかったので。。。これはあくまでメモです!