Hadoopインストール

今更ですが再インストールしたので作業ログを残します。

JDKインストール

# rpm -ivh jdk-7u4-linux-x64.rpm

Java切り替え設定

# alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_04/bin/java 17004
# alternatives --config java

3 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
 + 1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
*  3           /usr/java/jdk1.7.0_04/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:3

# java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

# vi .bashrc
export JAVA_HOME=/usr/java/latest


hadoop

ドキュメントはこの辺
https://ccp.cloudera.com/display/DOC/Documentation//

# wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
# mv cloudera-cdh3.repo /etc/yum.repos.d/
# yum update yum
cloudera-cdh3                                            |  951 B     00:00     
cloudera-cdh3/primary                                    |  22 kB     00:00     
cloudera-cdh3                                                             74/74
Skipping security plugin, no data
Setting up Update Process
No Packages marked for Update

# yum search hadoop

インストール

# yum -y install hadoop-0.20-conf-pseudo hadoop-hive hadoop-pig hadoop-hbase

# vi .bashrc
export HADOOP_HOME=/usr/lib/hadoop
export PATH=$PATH:HADOOP_HOME/bin

# source .bashrc
# hadoop

起動

#  for service in /etc/init.d/hadoop-0.20-*; do $service start; done

停止

#  for service in /etc/init.d/hadoop-0.20-*; do $service stop; done

Gradlewのproxy

開発者の環境にGradleをインスコさせるのが面倒だったので以下を参考にGradle Wrapperを入れてみました。

http://d.hatena.ne.jp/bluepapa32/20110308/1299602195

自環境はGradle入れてgradle.batの先頭でJAVA_OPTのProxy設定してたので問題なかったのですが開発者環境では駄目でした。

以下の設定をしてどうにか使えるようになりました。

gradle-wrapper.properties

systemProp.proxySet=true
systemProp.http.proxyHost=hoge.proxy
systemProp.http.proxyPort=9080

つかProxy環境慣れていないせいもありますがなにかとめんどい。。。

7/30 追記
何も設定していないマシンで試したら駄目だった・・・・
ここのJAVA_OPTSをGradlew.batの先頭に追加して解決しました。
http://d.hatena.ne.jp/nobeans/20090413/1239607977

weld 1.1.0 examples

以下を参考にweldのサンプルを実行する
CDIプログラミングの基本(その1) | Think IT(シンクイット)

ant実行でエラーが発生

     [java] [INFO] Scanning for projects...
     [java] Downloading: http://maven.glassfish.org/content/groups/public//org/jboss/weld/weld-core-parent/1.1.0.Final/weld-core-parent-1.1.0.Final.pom
     [java] Downloading: http://repo1.maven.org/maven2/org/jboss/weld/weld-core-parent/1.1.0.Final/weld-core-parent-1.1.0.Final.pom
     [java] [INFO] ------------------------------------------------------------------------
     [java] [ERROR] FATAL ERROR
     [java] [INFO] ------------------------------------------------------------------------
     [java] [INFO] Error building POM (may not be this project's POM).

URL先を見るとpomが存在しない。
以下を参考にJbossリポジトリを追加すると実行可能になる
http://seamframework.org/Community/Weld110FinalExamplesDeployment

Groovyで正規表現

クソ填ったのでブログ書きます。

以下を参考にGroovyの正規表現のお勉強。
http://d.hatena.ne.jp/uehaj/20070823/120097040

ヒットした文字を連結してみる

def appender = {
    buf = new StringBuffer()
    (it =~ /a([^ac]*)c/) each {
        println it
        buf << it[1]
    }
    
    return buf.toString()
}

println appender("ahcaocamcauc")

結果

[ahc, h]
[aoc, o]
[amc, m]
[auc, u]
homu

YES!!すばらしい!!期待した値が取得できる。
Javaと違い短く書けてこれは楽だわー。

Groovy素敵すぎる。
んじゃeach内のデバックログを消す。

def appender = {
    buf = new StringBuffer()
    (it =~ /a([^ac]*)c/) each {
//        println it
        buf << it[1]
    }
    
    return buf.toString()
}

println appender("ahcaocamcauc")

結果

groovy.lang.MissingMethodException: No signature of method: ConsoleScript70.getAt() is applicable for argument types: (java.lang.Integer) values: [1]
Possible solutions: getAt(java.lang.String), putAt(java.lang.String, java.lang.Object), wait(), getClass(), wait(long), wait(long, int)
	at ConsoleScript70$_run_closure1_closure2.doCall(ConsoleScript70:5)
	at ConsoleScript70$_run_closure1.doCall(ConsoleScript70:3)
	at ConsoleScript70.run(ConsoleScript70:11)

はい?
println無いだけでっすよ!!
それで例外????
何コラ!たこコラ!!Groovyめ!!

おちつけ俺。

Groovy始めて数日だしeachの中の書き方悪のかな?
って事でとりあえず基本。

def appender = {
    list = 
    [['ahc', 'h'],
    ['aoc', 'o'],
    ['amc', 'm'],
    ['auc', 'u']]
    
    buf = new StringBuffer()
    list.each {
        buf << it[1]
    }
    
    return buf.toString()
}

println appender("ahcaocamcauc")

当然結果は期待した値。

じーっとコードを見つめてみる。。。。
あれ?例外出る方はスペースの後にeach書いてるわ。
んじゃ試しに

    list each {
        buf << it[1]
    }

おっと!同じ例外が発生。

じゃprintln様を入れる

    list each {
        println it
        buf << it[1]
    }

期待値ゲット!!
ってことはだ
ドットを付けてみる

    (it =~ /a([^ac]*)c/).each {
        buf << it[1]
    }

結果

homu

とりあえず解決!!
理由は・・・・後で調べよう・・・

追記:
Groovyは1.8.0です。