情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

ssh+svnをやることにした このエントリーを含むはてなブックマーク

SubversionにはAnkhSVNでお世話になっています(過去記事参照)が、今回Linuxプログラミングをすることにしたので、今現在の、WindowsローカルにSubversionレポジトリを置く方法はもちろんそのままでは通用しませんし、そもそもVisualStudioはLinuxじゃ動きません。

というわけで、SSH経由でSubversionが使えるようにLinuxサーバを設定することにしました。

というか、ここで宣言して、ゴールデンウィーク頭にやる予定です。

では、ひとまず宣言だけ

スポンサーサイト
Subversion | コメント:0 | トラックバック:0 | 編集

詳細UNIXプログラミングの第二版が出るのですね このエントリーを含むはてなブックマーク

とりあえず読んでおくべき本としてよくあげられる「詳解UNIXプログラミング」。

「詳説UNIXプログラミング」じゃなくて「詳解」なところが間違えやすい。

お店でよく見かけます。

Linuxを扱うことも多くなり、あまりに有名な本なので、プログラムを勉強するという意味で教養ってだけで終わるかもしれないけど読んでおこうと思い、最近買おうかどうしようかと考えていたのです。それで、調べてました。

すると、なんと第二版 が!

まぁ、リンク先を見ての通り、英語版なんですが。

プログラミングC# 第5版 のときの迷い方と似ている・・・。ただ、今回は逆だし、新しい方がいいってわけじゃないかもしれないし、なにより、「UNIXプログラミング環境」買ってみるのもいいんじゃないかと・・・

本って高いから迷うところです。

詳解UNIXプログラミング
詳解UNIXプログラミング

Advanced Programming in the UNIX Environment (Addison-Wesley Professional Computing Series)
Advanced Programming in the UNIX Environment (Addison-Wesley Professional Computing Series)

プログラミングC# 第5版
プログラミングC# 第5版

ニュース | コメント:0 | トラックバック:0 | 編集

Hadoop導入記10「Hadoopの設定とテスト」 このエントリーを含むはてなブックマーク

とりあえず、導入はこの記事で最後にしようと思います。

Hadoopを展開してできたディレクトリがhadoop-0.18.3だったとします。まずは、マスターノードを登録します。マスターノードのホスト名はml1としていたので、hadoop-0.18.3/conf/mastersの内容を

ml1

とします。で、今度はスレーブとなるノードの設定ですが、2台しかないので、マスターノードにも働いてもらいます。編集するのはhadoop-0.18.3/conf/slavesで、

ml1
ml2

となります。

つづいて、もっと細かい設定をhadoop-0.18.3/conf/hadoop-site.xmlで行います。解説サイトにhadoop-0.18.3/conf/hadoop-default.xmlをhadoop-site.xmlにコピーしてから編集すると書いてあるものがありますが、読み込み時にhadoop-default.xmlを上書きする形でhadoop-site.xmlを読み込むそうなので、そのコピーはあんまり有効とは言えません。使わない項目がたくさんありすぎてややこしいので。

なーんて思ってたんですが、hadoop-default.xmlの冒頭に以下のように書いてありました。

Do not modify this file directly. Instead, copy entries that you wish to modify from this file into hadoop-site.xml and change them there. If hadoop-site.xml does not already exist, create it.

さて、で、その設定ですが、私は初期設定がfile:///になっているfs.default.nameのvalueをhdfs://ml1:54321、mapred.job.trackerのvalueをml1:54322としてみました。

これでhadoop自体の設定が終わったと思ってこの後のテストを行ってみると問題がいろいろ発生。ちょっといかに補足します

一つ目は、JAVA_HOMEがセットされていませんというエラー。これは、環境変数を設定する場所がデフォルトでいいと思っていたことに起因します。実際は、hadoop-0.18.3/conf/hadoop-env.shに設定しないといけないらしい。ということで、そこに

export JAVA_HOME=/usr/java/default

と記述しました。

二つ目は、ノードを起動させるときにConnection closed by 127.0.0.1と出てしまうことです。これは、SSHの設定に不備があると言うことなのですが、一番の問題は、SSHで一度も接続したことがないと失敗するということです。どういうことかというと、一度もSSHコマンドでログインしたことがないと、ホストを信頼するという情報(~/.ssh/known_hosts)が作成されていないからみたいです。ということで、一度はコマンドから

$su - hadooper
$ssh ml1

$ssh ml2

というかんじでSSHログインしてみておいてください。これでもだめなら、SSHの設定を見直してみてください。特に、sshコマンドからも接続できないときは、アクセス制限の設定が怪しいと思われます。

はい、では、いよいよHadoopの実行テストをしてみます。まず、Hadoopのノードを起動する前に、namenodeが使う領域のフォーマットを行います。コマンドは1つだけで、

$hadoop-0.18.3/bin/hadoop namenode -format

とすればOKです。

続いて、ノードを起動します。ここで起動するときにSSHで通信しています。

$hadoop-0.18.3/bin/start-all.sh

ここでエラーが出なければラッキー。出てしまったら、というか、私は出まくったんですが、がんばって対処してください。で、これが終わったら続いて、サンプルを動かしてみます。ここでは、有名な単語をカウントするサンプルを動かします。ここはほとんど「MapReduceのJava実装Apache Hadoopを使ってみた(@IT)」「Hadoopのインストールとサンプルプログラムの実行(CodeZine)」を使っています。まず、入力ファイルを調達します。

$cd hadoop-0.18.3 $cp conf/*.xml input/

続いて、この入力ファイルをhdfsへコピーします。

$bin/hadoop dfs -copyFromLocal input input

コピー先の内容は、以下のようにすることで確認(ls)ができます。

$bin/hadoop dfs -ls

そして、いよいよサンプルを実行します。

$bin/hadoop jar hadoop-0.18.3-examples.jar wordcount input output

これで、それっぽい進捗画面が出たらOKです。

なんだか、いろいろ飛ばした感じがするんですが、大まかにこんな感じでうまく動かすことができました。また細かいことを思い出したように書くかもしれませんが、Hadoop導入記モードはこれで終了します。

Hadoop | コメント:0 | トラックバック:0 | 編集

Hadoop導入記09「Hadoopをついにインストール それとJDKも」 このエントリーを含むはてなブックマーク

ここまでの記事のことをいろいろ行ってから、やっとHadoopのインストールです。

まず、Hadoop自体のダウンロード方法ですが、Hadoop公式サイトからダウンロードします。

DLするときの注意ですが、Hadoopでなくてもそうなのですが、安定版をダウンロードしてください。安定版のリンクが見つからない!と思うかもしれませんが、とにかくダウンロードサーバまでリンクをたどってみてください。すると、そのサーバの中に「stable」というフォルダがあります。その中身が安定版です。安定版だからと言って、ファイル名にstableが入っているわけでもないのでさらに注意です。ファイル名はhadoop-0.18.3.tar.gzといった感じです。

ダウンロードしたファイルは圧縮されているので、

$tar xzf hadoop-0.18.3.tar.gz

として、解凍してください。

以上で、Hadoopのインストール(ただし、設定をのぞく)が完了しました。あっけないです。

あ、Sun製のJDKをインストールするのがまだでしたね。ということで、JDKをダウンロードします。ダウンロードはSunのサイトからできます。ダウンロードするのは上から2つめの「Java SE Development Kit (JDK)」の最新版です。この記事を書いている時点で「JDK 6 Update 13」です。そのうち「JDK 6 Update 14」とかになってるかも。

ダウンロードするときは、プラットフォームで「Linux」や「Linux x64」などを適切に選んでください。ダウンロードするファイルは「jdk-6u13-linux-x64-rpm.bin(64bit)」「jdk-6u13-linux-i586-rpm.bin(32bit)」といった感じのファイル名です。

つづきは、「Javaアプリケーションサーバー構築(Tomcat6)(CentOSで自宅サーバー構築)」を参考にしてみてください。とても詳しく書かれています。

ここでは、とりあえず環境変数の記述を/etc/profileではなく、/home/hadooper(Hadoop用アカウント)/.bash_profileに記述しておいてください。なぜなら、/etc/profileは、/homeディレクトリではないので共有されていないからです。実際JDKを使うのはHadoopユーザなので、最低限/home/hadooper/.bash_profileに記述すればOKです。ログイン時に読み込まれます。そこまで行えばJDKのインストールも終了です。

実はこの後はまったのですが、ここでいくらJAVA_HOMEを正しく設定したとしても、Hadoopを実行するときにError JAVA_HOME is not set hadoopみたいなことを言われてしまいます。まぁ、そのことは次回。

Hadoop | コメント:0 | トラックバック:0 | 編集

Hadoop導入記08「SSHに制限をかける」 このエントリーを含むはてなブックマーク

前回はHadoop用にアカウントhadooperを作成しました。しかし、このアカウントはパスフレーズなしでSSHからログインできてしまって常識的に考えて危険です。なので、もともとルータなどにより外のネットワークと切り離されたプライベートネットワークで構築すべきなんだそうです。まぁ、そうだとしても何があるか分かりませんし、勉強がてらちゃんとプライベートネットワークからだけSSHでログインできるように制限してみます。

この制限は、PAMを認証に使うことにより行います。というか、私も詳細については詳しくありません。いつものことですが。ここでは、/etc/pam.d/sshdの先頭に以下のように書いてください。

account required /lib/security/pam_access.so
(64bitなら account required /lib64/security/pam_access.so

すでにhomeディレクトリの共有は行いましたが、/etcディレクトリは共有していないので、この設定と次の設定はすべてのマシンに記述してください。

あ、ちなみに、どうして毎回64bitなら~って書いているかと言いますと、実際私が64bitOS(CentOS)で設定しているからです。

で、続いて、制限の内容を/etc/security/access.confに以下のように記述します。

- : hadooper : ALL EXCEPT 192.168.1.0/24 127.0.0.0/24

これは、禁止します(-)、hadooperへの接続を、すべてのIPアドレスから(ALL)、ただし以下をのぞきます(EXCEPT)、192.168.1.0/24からと、127.0.0.0/24。という漢字の意味です。

これで、hadooperにログインできるのが、ローカルからだけになりました。/etc/security/access.confではいろいろな制限が可能なので、調べてみてください。

次は、いよいよHadoopのインストールです。というか、これやったの数日前なんですよね、はやくHadoop導入記書き上げちゃいたいなぁ・・・

Hadoop | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。