ec2でhadoopしてみたよ

というかhttp://codezine.jp/article/detail/2841をまんまコピペしただけなんですけどね。

ec2のアカウント持ってるし使いまくってるよー、という前提で。

  • 飛ばしながら読んで実行したらこけて気づいたんだけど、
    • ec2-add-keypair gsg-keypairはgsg-keypairという名前決め打ちなのでちゃんとやりましょう。
    • EC2_KEYDIR=`dirname "$EC2_PRIVATE_KEY"`ってなってるのでそこにid_rsa-gsg-keypairという名前で保存
  • ./hadoop-ec2 launch-cluster test-cluster 2とするとちゃんと立ち上がった
  • ./hadoop-ec2 login test-clusterでログイン。
  • おれjava詳しくないんでよくわかんなかったんだけど
    • 記事に書いてある jar hadoop-*-examples.jar pi 10 10000000ではなんかオプションがおかしいと言われるので
    • なおやんの記事を参考にhadoop jar hadoop-0.17.0-examples.jar pi 10 1000000としたら動いた。
      • 追記。訂正。ちゃんとbin/hadoop jar ...って書いてあったね。失礼しました。
[root@domU-**-**-**-**-**-** hadoop-0.17.0]# hadoop jar hadoop-0.17.0-examples.jar pi 10 1000000
08/08/31 07:42:39 WARN fs.FileSystem: "domU-**-**-**-**-**-**.compute-1.internal:50001" is a deprecated filesystem name. Use "hdfs://domU-**-**-**-**-**-**.compute-1.internal:50001/" instead.
Number of Maps = 10 Samples per Map = 1000000
08/08/31 07:42:39 WARN fs.FileSystem: "domU-**-**-**-**-**-**.compute-1.internal:50001" is a deprecated filesystem name. Use "hdfs://domU-**-**-**-**-**-**.compute-1.internal:50001/" instead.
08/08/31 07:42:39 WARN fs.FileSystem: "domU-**-**-**-**-**-**.compute-1.internal:50001" is a deprecated filesystem name. Use "hdfs://domU-**-**-**-**-**-**.compute-1.internal:50001/" instead.
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/08/31 07:42:42 WARN fs.FileSystem: "domU-**-**-**-**-**-**.compute-1.internal:50001" is a deprecated filesystem name. Use "hdfs://domU-**-**-**-**-**-**.compute-1.internal:50001/" instead.
08/08/31 07:42:42 INFO mapred.FileInputFormat: Total input paths to process : 10
08/08/31 07:42:43 INFO mapred.JobClient: Running job: job_200808310735_0001
08/08/31 07:42:44 INFO mapred.JobClient:  map 0% reduce 0%
08/08/31 07:42:53 INFO mapred.JobClient:  map 20% reduce 0%
08/08/31 07:42:54 INFO mapred.JobClient:  map 40% reduce 0%
08/08/31 07:42:59 INFO mapred.JobClient:  map 50% reduce 0%
08/08/31 07:43:00 INFO mapred.JobClient:  map 80% reduce 0%
08/08/31 07:43:05 INFO mapred.JobClient:  map 90% reduce 3%
08/08/31 07:43:06 INFO mapred.JobClient:  map 100% reduce 13%
08/08/31 07:43:10 INFO mapred.JobClient:  map 100% reduce 23%
08/08/31 07:43:12 INFO mapred.JobClient:  map 100% reduce 100%
08/08/31 07:43:13 INFO mapred.JobClient: Job complete: job_200808310735_0001
08/08/31 07:43:13 INFO mapred.JobClient: Counters: 16
08/08/31 07:43:13 INFO mapred.JobClient:   File Systems
08/08/31 07:43:13 INFO mapred.JobClient:     Local bytes read=610
08/08/31 07:43:13 INFO mapred.JobClient:     Local bytes written=2430
08/08/31 07:43:13 INFO mapred.JobClient:     HDFS bytes read=1180
08/08/31 07:43:13 INFO mapred.JobClient:     HDFS bytes written=255
08/08/31 07:43:13 INFO mapred.JobClient:   Job Counters 
08/08/31 07:43:13 INFO mapred.JobClient:     Launched map tasks=10
08/08/31 07:43:13 INFO mapred.JobClient:     Launched reduce tasks=1
08/08/31 07:43:13 INFO mapred.JobClient:     Data-local map tasks=10
08/08/31 07:43:13 INFO mapred.JobClient:   Map-Reduce Framework
08/08/31 07:43:13 INFO mapred.JobClient:     Map input records=10
08/08/31 07:43:13 INFO mapred.JobClient:     Map output records=20
08/08/31 07:43:13 INFO mapred.JobClient:     Map input bytes=240
08/08/31 07:43:13 INFO mapred.JobClient:     Map output bytes=320
08/08/31 07:43:13 INFO mapred.JobClient:     Combine input records=0
08/08/31 07:43:13 INFO mapred.JobClient:     Combine output records=0
08/08/31 07:43:13 INFO mapred.JobClient:     Reduce input groups=2
08/08/31 07:43:13 INFO mapred.JobClient:     Reduce input records=20
08/08/31 07:43:13 INFO mapred.JobClient:     Reduce output records=0
Job Finished in 31.607 seconds
Estimated value of PI is 3.1414068
  • 結果がどこにあるのかはまだ知らない。
    • あ!最後の行か!!
  • hadoop-ec2はbashなので読めばなにしてるかわかります。
[danjou@luisa] $ ./hadoop-ec2
Usage: hadoop-ec2 COMMAND
where COMMAND is one of:
  list                                 list all running Hadoop EC2 clusters
  launch-cluster <group> <num slaves>  launch a cluster of Hadoop EC2 instances - launch-master then launch-slaves
  launch-master  <group>               launch or find a cluster master
  launch-slaves  <group> <num slaves>  launch the cluster slaves
  terminate-cluster                    terminate all Hadoop EC2 instances
  login  <group|instance id>           login to the master node of the Hadoop EC2 cluster
  screen <group|instance id>           start or attach 'screen' on the master node of the Hadoop EC2 cluster
  proxy  <group|instance id>           start a socks proxy on localhost:6666 (use w/foxyproxy)
  push   <group> <file>                scp a file to the master node of the Hadoop EC2 cluster
  <shell cmd> <group|instance id>      execute any command remotely on the master
  create-image                         create a Hadoop AMI
  • ./hadoop-ec2 terminate-cluster test-clusterでばいにゃん。

最後の肝心な所が会員登録しないと読めないあたりがうんぬん。こういう情報を出し惜しみする意味が分からんけど。まあいいや。ほんとに使えるようになるためにはいろいろもっとやらないとだめだとは思うけど、とりあえず一度使ってみるって大事よね。よっしゃー。次はhadoop-streamingでログ解析やー。