金子邦彦研究室インストールUbuntu, WSL2Apache Hadoop のインストール(Ubuntu 上)

Apache Hadoop のインストール(Ubuntu 上)

Apache Hadoop のインストールを行う.

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

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

前準備 (Linux の場合)

Oracle Java JDK のインストール

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

  1. Ubuntu のインストール: 別ページ »で説明している.
  2. Java SE のインストール(Windows 上)

    Ubuntu の場合の操作手順例

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

    java -version
    

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

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

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

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

    Ubuntu の場合の実行手順例

    sudo apt -y update
    sudo apt -y install openssh-server
    

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

    ◆ /etc/hosts.allow の設定例

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

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

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

    Ubuntu の場合の実行手順例

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

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

    [image]

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

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

    [image]

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

    ssh hadoop@localhost
    

    [image]

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

    [image]

Apache Hadoop のインストール手順

ダウンロード

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

    https://hadoop.apache.org/releases.html

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

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

    [image]
  4. stable」をクリック

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

    ダウンロードが始まる

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

インストール

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

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

    cd /usr/local
    

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

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

    [image]
  3. シンボリックリンク

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

    [image]
  4. 権限の設定

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

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

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

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

    sudo apt -y update
    sudo apt -y install maven2 
    
  7. JDK のディレクトリを探す

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

    [image]

    Ubuntu での OpenJDK 17 のインストールと設定: 別ページ »で説明している.

  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
    

    [image]

    ■ 下記の例は 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
    

    [image]
  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. ビルド操作

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

    sudo apt -y update
    sudo apt -y 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. ビルドの終了確認

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

    [image]
  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 の設定例

    [image]

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

    [image]

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

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

    [image]

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
    

    [image]

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

  2. Apache Hadoop デーモンの終了

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

    [image]

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

[image]

[image]

[image]

サンプルプログラム 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
    

    [image]
  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
    

    [image]
  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
    

    [image]

    [image]

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