I. はじめに
次に、インストール環境を準備します。
III.設置環境
1、まずマシン名を変更
root権限でコマンドを使用します:
sudo vi /etc/hosts
ここで、node1、node2、node3 は /etc/hosts として設定されています:
etc/hostsの設定は非常に重要で、適切に設定されていないとあらゆることがうまくいかなくなり、後のSSH設定やHadoopのDataNodeノードの起動に影響します。
2.JDKのインストール
3、ユーザー追加
以下のコマンドを使用して、3つのVMすべてにroot権限でhadoopユーザーを追加します。
sudo adduser hadoop
ダウンロードしたhadoop-1.2.1.tarファイルを/home/hadoop/ディレクトリに解凍し、解凍したフォルダのパーミッションを以下のコマンドで変更します:
sudo tar -xvzf hadoop-1.2.1.tar #解凍コマンド
chown -R hadoop:hadoop hadoop-1.2.1(フォルダ名)
#p#
4.SSHのインストールと設定
4.1) 以下のコマンドを使用して、3 台のラボマシンに ssh をインストールします。
sudo apt-get install ssh
インストール後にテストを実行してください:
netstat -nat #ポート22が開いているか確認する
ssh localhost #sshが正常に接続するかテストする
現在のユーザー名とパスワードを入力し、Enter キーを押して確定します。
この既定のインストール後、既定の構成ファイルは /etc/ssh/ ディレクトリにあります。
4.2) パスワードレスアクセスのためのSSHの設定
Hadoopの開始後、Namenodeは、各データノード上の様々なデーモンを起動および停止するSSHを介して、ノード間のコマンドの実行を必要とするパスワードの形式を入力する必要はありませんので、SSHはパスワードレス公開鍵認証の形式を使用するように設定する必要があります。
この記事の3台のマシンを例にとると、node1がマスターノードである今、彼はnode2とnode3に接続する必要があります。各マシンにsshがインストールされ、データノードマシン上でsshdサービスが開始されていることを確認してください。
( 説明: [hadoop@hadoop~]$ssh-keygen -t rsa
このコマンドは、hadoop上のユーザーhadoopのためのキーペアを生成し、それを保存するパスを直接デフォルトのパスを使用するために戻って尋ね、生成されたキーのパスフレーズを入力するようにプロンプトが表示されたら、直接入力するために戻って、つまり、空のパスワードに設定します。生成された鍵ペアid_rsa、id_rsa.pubは、デフォルトでは/home/hadoop/.sshディレクトリに保存され、その後、id_rsa.pubの内容は、各マシンの/home/dbrg/.ssh/authorized_keysファイルにコピーされ、すでにauthorized_keysファイルがある場合は、/home/dbrg/.ssh/authorized_keysファイルにコピーするだけです。authorized_keysファイルが既にマシンに存在する場合は、id_rsa.pubの内容をファイルの最後に追加します。)
4.3) 最初にnamenodeのsshがパスワードなしで自動的にログインするように設定します。
hadoopユーザーに切り替えます
su hadoop
cd /home/hadoop
ssh-keygen -t rsa
最後のコマンドが入力されたら、Enterを押し続けます。
完了すると、/home/hadoop/ ディレクトリに完全に隠されたフォルダ .ssh が作成されます。
.sshフォルダに移動し、以下のコマンドでid_rsa.pubをauthorized_keysファイルにコピーします。
cd .ssh # .ssh
cp id_rsa.pub authorized_keys #権限を生成する_keys
ssh localhost #パスワードなしログインをテストし、最初はパスワードが必要な場合がある
ssh node1 #前のコマンドと同じ
node1でパスワードなしでログインした場合の効果:
4.4) node1 がパスワードなしで node2 と node3 にアクセスできるように設定します。
まず、ノード2を例にとると、ノード3はノード2のメソッドを参照しています。
node2で以下のコマンドを実行します:
su hadoop
cd /home/hadoop
ssh-keygen -t rsa #車に戻ってすべての方法、公開鍵と秘密鍵を生成する
次のコマンドを実行します。
scp authorized_keys hadoop@node2:/home/hadoop/.ssh #コピーする_keysnode2の.sshディレクトリに移動する
ノード2に転送されたauthorized_keysのライセンスパーミッションを変更します。
chmod 644 authorized_keys
ssh node2 #node2へのパスワードレスアクセスをテストする
node3 上記と同じ実行手順
#p#
5.hadoopのインストール
クラスタ内のマシンの環境が全く同じであれば、現在のユーザーをhadoopユーザーに切り替えてマシンを設定し、設定したソフトウェア、つまりhadoop-0.20.203フォルダ全体を他のマシンの同じ場所にコピーすることができます。 マスター上の Hadoop を scp 経由で各スレーブの同じディレクトリにコピーし、各スレーブの Java_HOME の違いに応じて hadoop-env.sh を修正します。
5.1) conf/hadoop-env.shファイルの設定
hadoop-1.2.1/conf ディレクトリに移動し、JAVA_HOME パスを追加します。
5.2) /conf/core-site.xml の設定
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:49000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>
fs.default.nameはNameNodeのURIです。
hadoop.tmp.dir : Hadoopのデフォルトのテンポラリパスで、新しいノードやその他の状況でDataNodeが起動できない場合は、このファイルのtmpディレクトリを削除してください。ただし、NameNodeマシンでこのディレクトリを削除すると、NameNodeフォーマットコマンドを再実行する必要があります。
5.3) /conf/mapred-site.xmlの設定
<?xmlversionxmlversionxmlversionxmlversion="1.0"?>
<?xml-stylesheettypexml-stylesheettypexml-stylesheettypexml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>node1:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop_home/var</value>
</property>
</configuration>
mapred.job.tracker はジョブトラッカーのホストとポートです。host:portです。home/hadoop/hadoop_home/varディレクトリは事前に作成しておく必要があり、ディレクトリのパーミッションはchown -Rコマンドで変更します。
5.4) /conf/hdfs-site.xmlの設定
<?xmlversionxmlversionxmlversionxmlversion="1.0"?>
<?xml-stylesheettypexml-stylesheettypexml-stylesheettypexml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name1</value> #hadoopDataNodeの名前ディレクトリへのパス
<description> </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data1</value>
<description> </description>
</property>
<property>
<name>dfs.replication</name>
<!-- 集群又两个结点,所以rep两份 -->
<value>2</value>
</property>
</configuration>
dfs.name.dir は、NameNode がネームスペースとトランザクション・ログを永続的に格納するローカル・ファ イル・システムへのパスです。 この値がコンマで区切られたディレクトリのリストである場合、ネームテーブル・データは冗長性のためにすべてのディレクトリにコピーされます。
dfs.replicationはバックアップするデータの数で、デフォルトは3です。この数がクラスタ内のマシンの数を超えるとエラーが発生します。
name1やdata1のようなディレクトリはここでは事前に作成できません。
5.5) マスターノードとスレーブノードの設定
conf/mastersとconf/slavesを設定して、マスター・スレーブ・ノードを設定します。ホスト名を使用するのが最善であることと、ホスト名経由でマシンが互いにアクセスできるようにすることに注意してください(ホスト名ごとに1行)。
viマスターズ:
インプット:
ノード1
vi 奴隷:
インプット:
ノード2
ノードスリー
設定の最後に、設定したhadoopフォルダを他のクラスタマシンにコピーし、上記の設定が他のマシンでも正しいことを確認します。
scp -r /home/hadoop/hadoop-1.2.1 root@node2:/home/hadoop/ #javaのインストールパスが異なる場合は、conf/hadoop-envを変更する必要があり、転送するnode2のrootパスワードを入力する.sh
インストール終了
#p#
四つ、
1.新しい分散ファイルシステムのフォーマット
cd hadoop-1.2.1
bin/hadoop namenode -format #ファイルシステムをフォーマットする
成功した場合は
2.全ノードの起動
bin/start-all.sh
3.クラスタの状態を確認します:
hadoop dfsadmin -report
4、Hadoopテスト
NameNodeとJobTrackerのネットワークインターフェイスをブラウズします:
NameNode - http://:70/
ジョブトラッカー - http://:30/
デーモンが実行されているかどうかを確認するには、jpsコマンドを使用します。このコマンドは、5つのデーモンとそのプロセス識別子を一覧表示します。
入力ファイルを分散ファイルシステムにコピーします:
bin/hadoop fs -mkdir input #入力ディレクトリを作成する
bin/hadoop fs -put conf/core-site.xml input #ファイルを入力ディレクトリにコピーする
bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z]' #Hadoopの実行例
この時点まで、hadoopが設定されている、もちろん、設定の過程で様々なエラーが発生しますが、主に許可とネットワークIPの設定の問題であり、注意してください。
V. Hadoop でよく使われる操作コマンド
1、hdfs共通操作:
hadoopdfs -ls は HDFS 以下のファイルを一覧表示します。
hadoop dfs -ls in HDFS のドキュメント内のファイルを一覧表示します。
hadoop dfs -put test1.txt test 指定したディレクトリにファイルをアップロードし、名前を変更します。
hadoop dfs -get in getin HDFS からファイルを取得し、getin という名前に変更します。
hadoop dfs -rmr out HDFS から指定したファイルを削除します。
hadoop dfs -cat in/* HDFS 上の in ディレクトリの内容を表示します。
hadoop dfsadmin -report HDFS の基本的な統計情報を表示します。
hadoop dfsadmin -safemode leave セーフモードを終了します
hadoop dfsadmin -safemode enter セーフモードに入る
2、ロードバランス
start-balancer.shは、DataNode上のデータブロックの分散をリバランスするために、DataNodeノード上でポリシーの選択を可能にします。
みなさんがhadoopの実行環境をうまく構築できることを祈っています。