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

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

ブログ内検索

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

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

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

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 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。