Hadoop 2.x完全分散構成の詳細

7551 ワード

1.環境紹介
  • ここでは4台のマシンでHadoop完全分散クラスタ環境を構成し、1つのnamenodeと3つのdatanode、4台のマシンにインストールされているのはUbuntu Server 14.04 LTSシステムです.
  • JDKバージョン1.7.0_75、インストールの詳細は以下に紹介する.
  • Hadoopバージョンは最新の安定バージョンhadoop 2.6.0.
  • 2.準備
  • ユーザー名とグループ
  • を作成
    3台のマシンに同じユーザー名とグループを作成し、パスワードも同じにすることをお勧めします.私のすべてのマシンのユーザー名とパスワードはhadoopです.これにより、後で管理が容易になります(個人的なアドバイス:インストール時に直接hadoopユーザーを作成すると、システムは自動的に同じ名前のグループに入れます.これにより、マルチユーザー権限の問題を回避できます).コマンドは以下の通りです.
    //1.  hadoop   
    $ sudo addgroup hadoop 
    //2.  hadoop      hadoop  
    $ sudo adduser -ingroup hadoop hadoop
    //3. hadoop    root  (       ,       )
    $ sudo gedit /etc/sudoers 
     root  ALL=(ALL:ALL)   ALL       :hadoop ALL=(ALL:ALL)   ALL
  • ホスト名とホストの変更--ipマッピング
  • //1.  /etc/hostname  ,(          )
        namenode    Master,  datanode    Slave1、Slave2、Slave3
    //2.      /etc/hosts  ,      
        192.168.1.151        Master
        192.168.1.152        Slave1
        192.168.1.153        Slave2
        192.168.1.154        Slave3
  • SSHをインストールし、各ノード間のパスワードなし相互訪問
  • を構成する.
    //1.  ssh
              ssh   。    ,       ,            :
    sudo apt-get install ssh
    //2.       (  :                   )
    a.       :
       :    
    $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
       :         
    $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    b.             ,       ~/.ssh      authorized_keys
    3.  
    namenode  :
     ssh localhost
     ssh Slave1(  slave  )
    datanode  :
     ssh localhost
     ssh Master(  Slave  )
                  ,       
  • インストールJDK
  • //1. oracle    jdk-7u75-linux-x64.tar.gz,   /usr/lib/jvm   
    sudo tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/lib/jvm
    //2.      
    sudo gedit /etc/profile
          :
    #set java environment
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75  
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH
    //3.       
    source /etc/profile
    //4.    JDK  
       :
     sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_75/bin/java 300  
    sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_75/bin/javac 300
       ,      ,       jdk:
    sudo update-alternatives --config java
    5.  ,  java -version,          jdk,   jdk    

    3.Hadoopのインストール
    すべてのノードを構成するには、次の手順に従います.1つのノードを構成し、他のノードにコピーできます(もちろん、jdkのパスとバージョン、hadoopのパスなど、各ノード環境が一致していることを確認します).これにより、手間が省け、後で変更や管理が容易になります.
  • hadoopをダウンロードし、
  • を解凍します.
    公式サイトから最新の安定バージョンhadoop-2.6.0.tar.gzをダウンロードし、/home/hadoopディレクトリにコピーし、現在のディレクトリに解凍します.
    sudo tar -zxvf hadoop-2.6.0.tar.gz
  • hadoop-2.6.0/etc/hadoopでのプロファイルの変更
  • hadoop-env.shファイル
  • を変更
    //  JAVA_HOME   jdk     
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
     
          

    • 修改yarn-env.sh文件
    //  JAVA_HOME   jdk     
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
  • slavesファイル
  • を変更
    // datanode        ,      :
    Slave1
    Slave2
    Slave3
  • core-site.xmlファイル
  • を変更
    //            ,  core-default.xml                 
      
            fs.defalutFS  
            hdfs://Master:8020  
      
      
            hadoop.tmp.dir  
            file:/home/hadoop/tmp    
     
  • hdfs-size.xmlファイル
  • を変更
    //            ,  hdfs-default.xml                 
      
            dfs.namenode.secondary.http-address  
            Master:9001  
      
      
            dfs.namenode.name.dir  
            file:/home/hadoop/dfs/name   
      
      
            dfs.datanode.data.dir  
            file:/home/hadoop/dfs/data  
      
      
            dfs.replication  
            3                
      
      
            dfs.webhdfs.enabled  
            true  
      
      
            dfs.permissions    
            false  
      
      
            dfs.heartbeat.interval     
            3  
      
      
            dfs.namenode.heartbeat.recheck-interval    
            35000  
     

    注意:1.一般的には、前の5つを構成すればよい.後の3つは私が自分のクラスタの必要に応じて追加したものである.2.あるノードが35000/1000*2+3*10、すなわち100 s以内に応答しない場合、クラスタはdeadとマークする
  • mapred-site.xmlファイル
  • を変更
    //            ,  mapred-default.xml               
    
            mapreduce.framework.name
            yarn
    
    
            mapreduce.jobhistory.address
            Master:10020
    
    
            mapreduce.jobhistory.webapp.address
            Master:19888
    
    メモ:jobhistoryは手動で起動し、start-all.shでも起動しません.起動コマンド:sbin/mr-jobhistory-daemon.sh start historyserver.これにより、web上でMaster:1988ポートにアクセスできます.これはjobのhistory情報を表示するポートです.
  • yarn-site.xmlファイル
  • を変更
    //            ,  yarn-default.xml               
    
            yarn.nodemanager.aux-services
            mapreduce_shuffle
    
    
            yarn.nodemanager.aux-services.mapreduce.shuffle.class
            org.apache.hadoop.mapred.ShuffleHandler
    
    
            yarn.resourcemanager.scheduler.address
            Master:8030            
    
    
            yarn.resourcemanager.resource-tracker.address
            Master:8031
    
    
            yarn.resourcemanager.address
            Master:8032
    
    
            yarn.resourcemanager.admin.address
            Master:8033
    
    
            yarn.resourcemanager.webapp.address 
            Master:8088
    
  • /etc/profileファイルを修正し、hadoopの環境変数(hadoopのコマンドの実行を容易にするため)を加え、source/etc/profileの実行を変更して構成を直ちに有効にする
  • .
    #for hadoop
    export HADOOP_HOME=/home/hadoop/hadopp-2.6.0
    export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

    4.テスト
    すべてのノードが上記のように構成されるとhadoop完全分散クラスタが基本的に構成され、以下でテストします.
  • フォーマットnamenode
  • 注意:namenodeノードの下で次のコマンドを実行します(他のノードはこの操作をしません).
    hadoop namenode -format
  • サービス
  • を開始
    namenodeで次のコマンドを入力してhdfsとyarnを起動します.start-all.shは推奨されません.標準的な方法ではstart-dfs.shとstart-yarn.shを入力してhdfsとyarnをそれぞれ起動します.
    start-all.sh
  • 各ノードプロセス
  • を表示する
    namenodeノードと各datanodeノードにjpsコマンドを入力します.namenodeで次のプロセスが発生した場合:
    NameNode
    ResourceManager
    SecondaryNameNode
    でdatanodeノードに次のプロセスが表示されます.
    DataNode
    NodeManager
    はhadoopの完全分散クラスタ構成が成功したことを示しています.hadoopが持っているexample(WorldCountなど)をクラスタ上で実行してみてください.ここでは説明しません.
    最后の注意:ブロガーはこのブログを书いて、この数日hadoopクラスタを配置する过程を记录することを目的として、初心者と交流して勉强して、どうしても足りないところがあって、みんなに批判して指摘することを望みます.ps:サーバーはグラフィックインタフェースをインストールしていないので、スクリーンショットが不便なので、主に文字を主とします.
    5.参考
    http://www.aboutyun.com/thread-7684-1-1.html