トップページ -> 実践知識 -> クラウドコンピューティング -> Apache Hadoop のインストール
[サイトマップへ]  

Apache Hadoop のインストール

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

参考 Web ページ: http://hadoop.apache.org/core/

インストール前に,あらかじめ決めておく事項

Apache Hadoop インストールディレクトリを決めておくこと. この Web ページでは,次のように書きます.


前準備 (Linux の場合)

Oracle Java JDK のインストール

※ 要点は 「Oracle の JDK」を使うということ.

  1. Linux イントールと設定 の Web ページに従って,Linux のインストール

  2. Oracle Java JDK のインストール

    ◆ Ubuntu の場合の操作手順例

    sudo apt-get install openjdk-7-jdk
    

  3. JDK のインストールの Web ページの記述に従って, 「Oracle JDK の方を優先して使用するような設定」が終わっていること.

    java -version
    

  4. JDK のインストールディレクトリを確認しておくこと.

    ※ 以下,この Web ページでは,次のように書きます.確認してください。

OpenSSH サーバのインストールと設定

  1. OpenSSH サーバのインストール

    ◆ Ubuntu の場合の実行手順例

    sudo apt-get install openssh-server
    

  2. /etc/hosts.allow で,限られた IP アドレスからのみ SSH 接続できるように設定

    ◆ /etc/hosts.allow の設定例

  3. SSH サーバ の Web ページの記述に従って,次の設定を終えていること.セキュリティ上,重要

hadoop 実行用ユーザ(ユーザ名「hadoop」)の作成と設定

  1. hadoop 実行用ユーザ(ユーザ名「hadoop」)の作成

    ◆ Ubuntu の場合の実行手順例

    sudo adduser hadoop
    パスワード入力(2回)
    

  2. hadoop でログインしなおして

    その後,以下の操作を行う

  3. 確認パスワードなしでssh接続できるように設定
    ssh-keygen -t rsa -P ""
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    chmod 600 .ssh/authorized_keys
    

    hadoopユーザで SSH ログインできることの確認

    ssh hadoop@localhost
    

    ※ 次のようにログインできない場合には対処

Apache Hadoop のインストール手順

ダウンロード

  1. Apache Hadoop のダウンロード用 Web ページを開く

    http://hadoop.apache.org/core/releases.html#Download

  2. Download a release now!」をクリック

  3. ミラーサイトの一覧が表示されるので「おすすめ」のサイトをクリック

  4. stable」をクリック

  5. hadoop-2.2.0-src.tar.gz」をクリック

    ダウンロードが始まる

  6. ダウンロードしたファイルは,分かりやすいディレクトリ(例えば/tmp)に置く

インストール

  1. Apache Hadoop インストールディレクトリ: /usr/local に移動

    ※ Apache Hadoop インストールディレクトリは自由に決めていいですが,分かりやすい名前にしておくこと.

    cd /usr/local
    

  2. 先ほどダウンロードしたファイルを展開

    sudo tar -xvzof /tmp/hadoop-2.2.0-src.tar.gz
    

  3. シンボリックリンク

    cd /usr/local
    sudo rm -f hadoop
    sudo ln -s /usr/local/hadoop-2.2.0-src hadoop
    

  4. 権限の設定

    sudo chown -R hadoop:hadoop hadoop-2.2.0-src  
    sudo chown -R hadoop:hadoop hadoop 
    

  5. データストアの作成と権限の設定

    sudo mkdir /usr/local/hadoop-datastore
    sudo chown -R hadoop:hadoop hadoop-datastore
    

  6. 依存パッケージのインストール

    sudo apt-get install maven2 
    

  7. JDK のディレクトリを探す

    cd /usr
    find . -name "*jdk*" -print
    

    表示されないよ」という場合には, JDK のインストールの Web ページの記述に従って, JDK 6 のインストール,「GNU gcj よりも SUN JDK の方を優先して使用するように設定」が行うこと.

  8. /usr/local/hadoop/conf/hadoop-env.sh 内の JAVA_HOME の設定

    ■ 下記の例は JAVA_HOME を /usr/lib/jvm/java-7-openjdk-amd64 に設定する場合

    cd /usr/local
    cd hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf
    sudo -u hadoop vi hadoop-env.sh
    

    ■ 下記の例は JAVA_HOME を /usr/lib/jvm/java-6-sun-1.6.0.24 に設定する場合

    cd /usr/local
    cd hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf
    sudo -u hadoop vi hadoop-env.sh
    

  9. /home/hadoop/.bashrc の設定

    /home/hadoop/.bashrc に4行を追加

    export HADOOP_COMMON_HOME=/usr/local/hadoop-2.2.0-src
    export HADOOP_CONF_DIR=/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf
    export HADOOP_HDFS_HOME=/usr/local/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs
    export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-hdfs
    export HADOOP_YARN_HOME=/usr/local/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-hdfs
    

  10. ここ以降の設定や操作は,hadoop 実行用ユーザ(ユーザ名「hadoop」)で行うと楽である.

    sudo -u hadoop -i
    source .bashrc
    

  11. ビルド操作

    http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/SingleCluster.html に記載の手順通りに行う

    sudo apt-get install maven2 
    cd /usr/local/hadoop-2.2.0-src 
    mvn clean install -DskipTests
    cd hadoop-common-project
    mvn clean install assembly:assembly -Pnative
    cd hadoop-hdfs-project
    mvn clean install assembly:assembly -Pnative
    cd hadoop-mapreduce-project
    mvn clean install assembly:assembly -Pnative
    

  12. ビルドの終了確認

    エラーメッセージが出ていないことを確認する.

  13. ${HADOOP_CONF_DIR}/mapred-site.xml の設定

      
        mapreduce.cluster.temp.dir
        
        No description
        true
      
    
      
        mapreduce.cluster.local.dir
        
        No description
        true
      
    

  14. ${HADOOP_CONF_DIR}/yarn-site.xml の設定

      
        yarn.resourcemanager.resource-tracker.address
        host:port
        host is the hostname of the resource manager and 
        port is the port on which the NodeManagers contact the Resource Manager.
        
      
    
      
        yarn.resourcemanager.scheduler.address
        host:port
        host is the hostname of the resourcemanager and port is the port
        on which the Applications in the cluster talk to the Resource Manager.
        
      
    
      
        yarn.resourcemanager.scheduler.class
        org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
        In case you do not want to use the default scheduler
      
    
      
        yarn.resourcemanager.address
        host:port
        the host is the hostname of the ResourceManager and the port is the port on
        which the clients can talk to the Resource Manager. 
      
    
      
        yarn.nodemanager.local-dirs
        
        the local directories used by the nodemanager
      
    
      
        yarn.nodemanager.address
        0.0.0.0:port
        the nodemanagers bind to this port
        
    
      
        yarn.nodemanager.resource.memory-mb
        10240
        the amount of memory on the NodeManager in GB
      
     
      
        yarn.nodemanager.remote-app-log-dir
        /app-logs
        directory on hdfs where the application logs are moved to 
      
    
       
        yarn.nodemanager.log-dirs
        
        the directories used by Nodemanagers as log directories
      
    
      
        yarn.nodemanager.aux-services
        mapreduce_shuffle
        shuffle service that needs to be set for Map Reduce to run 
      
    

  15. ${HADOOP_CONF_DIR}/capacity-scheduler.xml の設定

      <property>
        <name>yarn.scheduler.capacity.root.queues</name>
        <value>unfunded,default</value>
      </property>
      
      <property>
        <name>yarn.scheduler.capacity.root.capacity</name>
        <value>100</value>
      </property>
      
      <property>
        <name>yarn.scheduler.capacity.root.unfunded.capacity</name>
        <value>50</value>
      </property>
      
      <property>
        <name>yarn.scheduler.capacity.root.default.capacity</name>
        <value>50</value>
      </property>
    

  16. /usr/local/hadoop/conf/core-site.xml, /usr/local/hadoop/conf/hdfs-site.xml, /usr/local/hadoop/conf/mapred-site.xml の設定

    /usr/local/hadoop/conf/core-site.xml の設定例

    /usr/local/hadoop/conf/hdfs-site.xml の設定例

    /usr/local/hadoop/conf/mapred-site.xml の設定例

    ※ 詳しくは, http://hadoop.apache.org/core/docs/r2.2.0/ を開き,「Single Node Setup」をクリック

  17. フォーマット
    cd /usr/local/hadoop
    ./bin/hadoop namenode -format
    


Apache Hadoop をスタンドアローン (standalone) モードで動かしてみる(書きかけ)

Hadoop Quick Startに記載されている 「例」を動かしてみる

cd /usr/local/hadoop
mkdir input
cp conf/*.xml input
./bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
cat output/*

Apache Hadoop を擬似分散 (pseudo distributed) モードで動かしてみる

Apache Hadoop デーモンの起動と終了の方法

以下の操作は,hadoop 実行用ユーザ(ユーザ名「hadoop」)で行うこと.

  1. Apache Hadoop デーモンの起動

    cd /usr/local/hadoop
    ,/bin/start-all.sh
    

    ※ 起動時に「JAVA_HOME が設定されていない」というエラーメッセージが出たときは /etc/bashrc に「export JAVA_HOME=/usr/java/jdk1.6.0_17」の行を加えるなどで対処する

  2. Apache Hadoop デーモンの終了

    cd /usr/local/hadoop
    ,/bin/stop-all.sh
    

Hadoop Quick Start に記載されている「例」を動かしてみる(書きかけ)

※ 詳しくは, http://hadoop.apache.org/core/docs/r2.2.0/ を開き,「Single Node Setup」に記載されている 「例」を動かしてみる. Apache Hadoop デーモンを起動した状態で,次のコマンドを実行.

bin/hadoop fs -put conf input

bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'

参考

この時点でエラーメッセージが出ていないこと. 出力結果は以下の手順で簡単に確認できる.

./bin/hadoop dfs -ls
./bin/hadoop dfs -ls output
./bin/hadoop dfs -cat /user/hadoop/output/part-r-00000


Mapper を Ruby 言語で記述する例(標準入力を介してデータが Mapper に渡る)


サンプルプログラム wordcount を実行してみる

  1. テスト用データ /tmp/data/file の作成と,HDFS への転送
    mkdir /tmp/data
    cat > /tmp/data/file
    orange orange1 apple apple orange1 orange
    # ctrl + D キー
    cat /tmp/data/file
    ./bin/hadoop dfs -copyFromLocal /tmp/data data
    

  2. スタンドアローン (standalone) での実行

    Java の単一のプロセスとして実行します。 これは、Hadoop デーモンを起動していない状態での実行です。 デバッグするのに役に立ちます。

    cd /usr/local/hadoop
    ./bin/hadoop jar hadoop-2.2.0-examples.jar wordcount /tmp/data /tmp/output
    cat /tmp/output/part-00000
    

  3. 擬似分散 (pseudo distributed)

    Apache Hadoop は、単一ノードで動かすことができます。言い換えると、 Apache Hadoop デーモンが1つのプロセス(プログラムとは別のプロセス))として動いているモードです。 DFS 配下のファイルを扱うことになる.

    cd /usr/local/hadoop
    ./bin/hadoop jar hadoop-2.2.0-examples.jar wordcount /tmp/data output
    ./bin/hadoop dfs -cat output/part-00000
    

  4. 分散 (Distributed) モード

    http://hadoop.apache.org/core/docs/current/cluster_setup.html を見てください。

参考 HDFS (Hadoop Distributed File System) の操作コマンド