wiki:Hadoop

Version 38 (modified by kosuke, 10 years ago) (diff)

--

Hadoop 調査

インターンの kosuke が Hadoop で調べたネタをひたすら書いていくページです。

hadoopのインストール(シングルノード、ubuntu8.10,hadoop0.20.1)

1. Sun Java 6のインストール

下記のとおりにsun-java6-jdkをインストールする。

apt-get install sun-java6-jdk

2. ユーザーのグループ化

hadoopのグループを作って、hadoopユーザーをhadoopグループに登録する。

sudo addgroup hadoop

sudo adduser --ingroup hadoop hadoop

3. sshでローカルホストにログインできるようにする。

まずhadoopユーザーに切り替える。

$su - hadoop

sshをインストールする。

~$sudo apt-get install ssh

hadoop userのためにsshのキーを作成する。

~$ssh-keygen -t rsa --P

空のパスワードでローカルのマシンにログインするために次のコマンドを実行する.

~$cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

sshでローカルホストにログインする。

$ssh localhost

4. ipv6を使えないようにする.

ubuntuでは0.0.0.0を使うとipv6に紐づいてしまうらしいので、ipv6は無効にする。

よって、/etc/modprobe.d/blacklistを編集する.

# disable IPv6

blacklist ipv6

5. hadoopのダウンロード

 hadoopの安定版にアクセスしてhadoopをダウンロードする。

/usr/local/hadoopに移動する.

cd /usr/local

ダウンロードしてきたファイルを解凍する。

/usr/local$ sudo tar xzf hadoop-x.xx.x.tar.gz

解凍したフォルダの名前をhadoopに変更する.

/usr/local$ sudo mv hadoop-x.xx.x hadoop

hadoopフォルダの所有者を再帰的にhadoop:hadoopにする。

/usr/local$ sudo chown -R hadoop:hadoop hadoop

6.hadoop-env.shを編集する。

confディレクトリの中にあるhadoop-env.shのjavaのアドレスを以下のように設定する.

# The java implementation to use. Required.

export JAVA_HOME=/usr/lib/jvm/java-6-sun

7.hadoop-site.xmlを編集する。

0.20.0から、hadoop-site.xmlは三つのxmlファイルに分割された。一つ目は、hadoop.tmp.dir, fs.default.nameを設定するcore-site.xml。二つ目は、dfs.replicationを編集するhdfs- site.xml。三つ目は、mapred.job.trackerを設定するmapred-site.xmlである。 hadoop.tmp.dirのvalueは、事前にディレクトリを作って、権限を与えて置かないとエラーになる可能性がある。

a. core-site.xmlを編集する.

hadoop.tmp.dirを設定していない 解説サイトしかし、私自身は試していない.

               <configuration>
                 <property>
                   <name>hadoop.tmp.dir</name>
                   <value>/usr/local/hadoop-datastore/hadoop-hadoop</value>
                   <description>A base for other temporary directories.</description>
                 </property>
 
                 <property>
                   <name>fs.default.name</name>
                   <value>hdfs://localhost:54310</value>
                   <description>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 todetermine the host, port, etc. for a filesystem.</description>
                 </property>

               </configuration> 

hadoop.tmp.dirのパスをどうしても自分で決めたい人は、以下のコマンドを実行する必要がある.

sudo mkdir /your/path

sudo chown hadoop:hadoop /your/path

2番目のコマンドを実行しないと、hadoopユーザーに許可を与えないことになるので、8、のフォーマットでエラーが起きる。

b. hdfs-site.xml を編集する

以下のように編集する。

      <configuration>
          <property>
               <name>dfs.replication</name>
               <value>1</value>
               <description>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.
               </description>
             </property>
           <configuration>     

 

c. mapred-site.xmlを編集する

以下のように編集する。

             <configuration>
              <property>
             <name>mapred.job.tracker</name>
             <value>localhost:9001</value>
             <description>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. </description>
           </property>
           </configuration>