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

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

ブログ内検索

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

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

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導入記07「Hadoop用ユーザを作る」 このエントリーを含むはてなブックマーク

Hadoopを複数台で扱うためには、パスフレーズなしでSSHログインのできるユーザが必要になります。ということで、SSHまわりの設定でやってみたことを書きます。

いつも使っているユーザをパスフレーズなしにするのってなんか微妙なので、Hadoop専用のユーザとして、「hadooper」というアカウントを作ってみます。
#useradd --create-home hadooper
#userpasswd hadooper


で、もうこの時点でSSHを使っていたんですが、設定で以下のことを確認しました。設定は/etc/ssh/sshd_configです。

Protocol 2
PermitRootlogin no
passwordAuthentication no
これで、SSH Version 2(だったっけ?)で通信し、rootのログインを禁止し、アカウントのパスワードによる認証を禁止にしました。さて、そんでもってhadooper用の設定をします。
#su - hadooper
$ssh-keygen -t rsa -P ""
とします。SSHでログインしたいユーザ(hadooper)になった状態でssh-keygenを利用して認証鍵を作成します。
$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys2
これがものすごく大切になります。作成した鍵は、id_rsaとid_rsa.pubでペアですが、これは鍵を作成しただけで、これを使うという意味ではないからです。ちゃんと使ってもらうために、名前をauthorized_keys2にしています。つづいて、この鍵はほかのユーザから見られたくないので、
$chmod 700 ~/.ssh
$chmod 700 ~/.ssh/*
としておきましょう。



以下余談。

今回はhadooper用に鍵を作成しましたが、もし、普段使うために鍵を作ったならば、ログインしたいPCWindowsなど)には、id_rsaを持って行ってください。私はputtyを利用していますが、puttyの場合は、puttygen.exeを利用してid_rsaを変換し*.ppkファイルを作成する必要があるので注意してください

続きも今から書きますが、次はこのSSHアカウントのログインに制限をかける設定についてです。
Hadoop | コメント:0 | トラックバック:0 | 編集

Hadoop導入記05「Hadoopが複数台動作しました」 このエントリーを含むはてなブックマーク

Hadoopのサンプルを複数台で動作させるという当初の目標を達成しました。

設定メモが多いので、少しまとめて、細かく分けて今晩から記事を作成する予定です。
Hadoop | コメント:0 | トラックバック:0 | 編集
 | HOME | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。