hadoop詳細構成


今日はhadoopに関する構成を紹介します.今hadoopのバージョンの更新は比較的に速くて、配置の時きっと少し異なって、みんなは公式のドキュメントを参考にして配置することができます.hadoopのインストールにはいくつかの前提条件があります.Sun Java 6(より高いバージョンでもいいですが、OpenJDKについてはまだ試したことがありません.)は、専用のhadoopシステムユーザーを追加し、SSHを構成します(ここでのsshは、マルチノードでリモート操作を行うためのOpenServerを指します).
1.linuxでsun-jdkをインストールします.次は具体的な手順です.
参照先:http://www.devsniper.com/ubuntu-12-04-install-sun-jdk-6-7/
sun-jdk-6-binをダウンロード クリックしてをダウンロードします
ファイルに実行可能な権限があることを確認します.1 chmod   +x jdk-6u32-linux-x64.bin
     binファイルの実行  1 ./jdk-6u32-linux-x64.bin
    解凍後のファイルを指定ディレクトリに移動する1 sudo   mv   jdk1.6.0_32 /usr/lib/jvm/
    新しいjavaソースをシステムにインストール1 sudo   update-alternatives -- install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_32/bin/javac 1 2 sudo   update-alternatives -- install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_32/bin/java 1 3 sudo   update-alternatives -- install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_32/bin/javaws 1
   システムに複数のjavaバージョンが存在する場合、システムのデフォルトjava を構成する必要があります.1 sudo   update-alternatives --config javac 2 sudo   update-alternatives --config java 3 sudo   update-alternatives --config javaws
    Javaバージョンの検証1 java -version
 
2.hadoopを追加するシステムユーザー
hadoopユーザーを使用してhadoopを実行する必要があります.
 

$ sudo addgroup hadoop   //     
$ sudo adduser --ingroup hadoop hduser //       

 
3.SSH構成
SSHの機能をご紹介しました.ここではSSHの構成を直接行います.注意:リモートアクセスのたびにパスワードを入力しないように、鍵を生成するときはパスワードを入力しないか、パスワードを空にします.
 

user@ubuntu:~$ su - hduser
hduser@ubuntu:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hduser/.ssh/id_rsa):
Created directory '/home/hduser/.ssh'.
Your identification has been saved in /home/hduser/.ssh/id_rsa.
Your public key has been saved in /home/hduser/.ssh/id_rsa.pub.
The key fingerprint is:
9b:82:ea:58:b4:e0:35:d7:ff:19:66:a6:ef:ae:0e:d2 hduser@ubuntu
The key's randomart p_w_picpath is:
[...snipp...]
hduser@ubuntu:~$

 
次に,SSHが新たに生成した鍵を使用できるようにする.ちょっと用事があります.
 

hduser@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

 
最後に、ネイティブへのリンクが成功したかどうかをテストします.
 

hduser@ubuntu:~$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is d7:87:25:47:ae:02:00:eb:1d:75:4f:bb:44:f9:36:26.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux ubuntu 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:27:30 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
[...snipp...]
hduser@ubuntu:~$

 
上の情報を見たとき.説明は成功した.
4.Hadoopのインストールは、Apacheの公式サイトからHadoopのファイルをダウンロードする必要があります.現在インストールされているファイルは0.2のバージョンです.
ダウンロード後の操作:
 

$ cd /usr/local
$ sudo tar xzf hadoop-1.0.3.tar.gz
$ sudo mv hadoop-1.0.3 hadoop
$ sudo chown -R hduser:hadoop hadoop

 
$HOME/.bashrcファイルを更新し、ファイルの最後に次の内容を追加します.
 

# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-6-sun

# Some convenient aliases and functions for running Hadoop-related commands
unalias fs &> /dev/null
alias fs="hadoop fs"
unalias hls &> /dev/null
alias hls="fs -ls"

# If you have LZO compression enabled in your Hadoop cluster and
# compress job outputs with LZOP (not covered in this tutorial):
# Conveniently inspect an LZOP compressed file from the command
# line; run via:
#
# $ lzohead /hdfs/path/to/lzop/compressed/file.lzo
#
# Requires installed 'lzop' command.
#
lzohead () {
    hadoop fs -cat $1 | lzop -dc | head -1000 | less
}

# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/bin

 
hadoopのファイルを構成します.
まず/usr/local/hadoop/conf/hadoop-env.shファイル
${JAVA_HOME}をjdkインストールパスに変更
 

# The java implementation to use.  Required.
# export JAVA_HOME=${JAVA_HOME}

to

# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-6-sun

 
次にconf/core-site.xmlファイルを変更します.
 



  hadoop.tmp.dir
  /app/hadoop/tmp
  A base for other temporary directories.



  fs.default.name
  hdfs://localhost:54310
  The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.

 
次はconf/mapred-site.xmlファイルです.
 



  mapred.job.tracker
  localhost:54311
  The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  

 
最後にconf/hdfs-site.xmlです.
 



  dfs.replication
  1
  Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  

 
hadoopを起動する前にHDFSファイルシステムをフォーマットし、コマンドを実行する必要があります.
 

hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop namenode -format

 
 

10/05/08 16:59:56 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/05/08 16:59:56 INFO namenode.FSNamesystem: fsOwner=hduser,hadoop
10/05/08 16:59:56 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/08 16:59:56 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/08 16:59:56 INFO common.Storage: Image file of size 96 saved in 0 seconds.
10/05/08 16:59:57 INFO common.Storage: Storage directory .../hadoop-hduser/dfs/name has been successfully formatted.
10/05/08 16:59:57 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
hduser@ubuntu:/usr/local/hadoop$

 
単一ノードクラスタを起動するには:
 

hduser@ubuntu:/usr/local/hadoop$ bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-namenode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-datanode-ubuntu.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-secondarynamenode-ubuntu.out
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-jobtracker-ubuntu.out
localhost: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-tasktracker-ubuntu.out
hduser@ubuntu:/usr/local/hadoop$

 
hadoopのリスニングポートを表示するには、次のコマンドを使用します.
 

hduser@ubuntu:~$ sudo netstat -plten | grep java
tcp   0  0 0.0.0.0:50070   0.0.0.0:*  LISTEN  1001  9236  2471/java
tcp   0  0 0.0.0.0:50010   0.0.0.0:*  LISTEN  1001  9998  2628/java
tcp   0  0 0.0.0.0:48159   0.0.0.0:*  LISTEN  1001  8496  2628/java
tcp   0  0 0.0.0.0:53121   0.0.0.0:*  LISTEN  1001  9228  2857/java
tcp   0  0 127.0.0.1:54310 0.0.0.0:*  LISTEN  1001  8143  2471/java
tcp   0  0 127.0.0.1:54311 0.0.0.0:*  LISTEN  1001  9230  2857/java
tcp   0  0 0.0.0.0:59305   0.0.0.0:*  LISTEN  1001  8141  2471/java
tcp   0  0 0.0.0.0:50060   0.0.0.0:*  LISTEN  1001  9857  3005/java
tcp   0  0 0.0.0.0:49900   0.0.0.0:*  LISTEN  1001  9037  2785/java
tcp   0  0 0.0.0.0:50030   0.0.0.0:*  LISTEN  1001  9773  2857/java
hduser@ubuntu:~$

 
単一ノードクラスタの停止:
 

hduser@ubuntu:/usr/local/hadoop$ bin/stop-all.sh
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode
hduser@ubuntu:/usr/local/hadoop$