仮想マシンの下でCentOS 7でHadoopクラスタを構築する


本実験の環境:VMware Workstation、CentOST 7オペレーティングシステム、hadoop-3.0-alpha 2実験のポイント:仮想マシン配置静的ip、hadoop配置ファイル設定
一、ソフトウェアのインストール
1.ここは略して、ネット上の教程はとても多くて、自分で検索します。
CentOST 7システムがインストールされていると仮定して、仮想マシンの名前はserveroneで、必要なプログラミング環境javaをインストールして、eclipse、CentOST 7の下でyumソースを参照してプログラム環境を構築します。
2.解凍hadoop-3.0-alpha 2から/optディレクトリまで:sudo tar -zxvf hadoop-3.0.0-alpha2.tar.gz -C /opt二、仮想マシンは複数の静的ipを配置する。
1.vmware_を参照することができます。workstationネットワーク構成の詳細な解説、仮想マシンのいくつかの異なるネットワーク方式の違いを理解する。
2.NAT方式を選択してネットワークを配置する
仮想ネットワークエディタ->vmnet 8を編集して設定します。サブネットワークIPは、任意の値を与えることができます。ゲートウェイは、IPの同じセグメントの値を必要とします。ローカルホストのVMware 8を構成します。仮想マシンと同じセグメントにあります。そうでなければ、ホストpingは仮想マシンを通じません。
3.ホスト名の設定sudo vim /etc/sysconfig/network、HOSTNAME=severone、もし修正/etc/hostsと/etc/syssconfig/networkの二つのファイルが有効にならない場合、使用コマンド:sudo hostnamectl set-hostname severoneは修正を行う。
4.プライベートipとホストの対応関係を設定するsudo vim /etc/hosts、仮に3台のマシンが必要であれば、各マシンの本体=別名として、ipを覚えやすいようにするためです。
5.ネットワークカードの設定:カードファイルに入る
追加の設定は以下の通りです。macアドレス、ipアドレス、サブネットマスク、ゲートウェイとドメイン名サーバは同時にipv 6関連情報を注釈してしまいます。macアドレスはifconfigで確認してください。完了後はネットワークを再起動することを忘れないでください。
三、プロファイルの変更
HadoopプロファイルはXML形式を採用しています。テキストはconfigrationで設定されています。各設定項目は一般的に構成属性の名称name、値valueを含みます。環境変数、運転経路の設定に便利です。/etc/init.d/network restartを実行し、hadoopの解圧位置を環境変数に追加します。
#Hadoop 3.0
export HADOOP_HOME=/opt/hadoop-3.0.0-alpha2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
効力をあたえる
sudo source /etc/profile
hadoop-env.shファイル:自分のjdkバージョンを見つけて設定し、vim /etc/profileはバージョン番号を検索することができます。
export JAVA_HOME=/usr/java/jdk1.8.0_91
conf/coree-site.xmlファイル:Hadoop Comonコンポーネント、全体構成
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://serverone:9000</value>
    <!--hadoop namenode         ,     -->
</property>
hdfs-site.xmlファイル:HFS NameNode、Secondary NameNode、およびDataNodeデータストアディレクトリの構成
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/var/data/hadoop/hdfs/nn</value>
</property>
<property>
    <name>fs.checkpoint.dir</name>
    <value>file:/var/data/hadoop/hdfs/snn</value>
    <!--hadoop secondary       ,         , ,   。-->
</property>
<property>
    <name>fs.checkpoint.edits.dir</name>
    <value>file:/var/data/hadoop/hdfs/snn</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/var/data/hadoop/hdfs/dn</value>
</property>
<property>
  <name>dfs.http.address</name>
  <value>serverone:50070</value>
</property>
<property>
  <name>dfs.secondary.http.address</name>
  <value>serverone:50090</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>1</value></property> 
    <!--HDFS      ,   3-->
</property> 
yarn-siteファイル:
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>serverone</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
mapred-site.xmlファイル:
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
ワーカーファイル:
serverone
server
agent
四、システムクローン
1.時間を節約するために、直接クローンシステム
このシステムのホスト名に関するプロファイルを変更する必要があります。
2.クローンシステムのnetworkファイル、ネットワークファイル、プロファイルの中のホスト名ファイルを変更する必要があります。
3.パスワードなしでログインする
sshはあなたがコンピュータに訪問した鍵ごとに記録します。hosts次回同じコンピュータにアクセスすると、OpenSSHは公開鍵を確認します。
#      
[server@serverone ~]$ mkdir ~/.ssh  #          ,        
[server@serverone ~]$ ssh-keygen -t rsa #  ,    
[server@serverone ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  #       authorized_keys,        
[server@serverone ~]$ sudo scp  ~/.ssh/id_rsa.pub  server@server:/home/server/.ssh/authorized_keys_from_serverone  
#      server@server(   server          ,   server hostname  ),  authorized_keys_from_serverone  
#    
[server@server .ssh]$ cat authorized_keys_from_serverone >> authorized_keys  
#    700 600:                  ,         
[server@server ~]$ sudo chmod 700 ~/.ssh
[server@server ~]$ sudo chmod 600 ~/.ssh/authorized_keys
このように、すべてのローカルホストの公開鍵を目的ホストauthorized_に追加します。keys、このファイルをすべてのローカルホストに戻します。
4.該当フォルダの作成
[server@server ~]$ sudo mkdir -p /var/data/hadoop/hdfs/nn  #NameNode      
[server@server ~]$ sudo mkdir -p /var/data/hadoop/hdfs/snn #Secondary NameNode       
[server@server ~]$ sudo mkdir -p /var/data/hadoop/hdfs/dn  #DataNode       
[server@server ~]$ sudo chown –R server:server /var/data/hadoop/hdfs 
[server@server ~]$ sudo mkdir -p /var/log/hadoop/yarn      #yarn    
[server@server ~]$ sudo chown -R server@server /var/log/hadoop/yarn 
5.起動コマンド
一つのマシンをメインノードとして選択し、もう二つはサブノードとして使用します。
[server@server ~]$ hdfs namenode -format #      
[server@server ~]$ hdfs --daemon.sh start namenode #     
[server@server ~]$ hdfs --daemon.sh start secondarynamenode #  secondarynamenode
[server@server ~]$ hdfs --daemon.sh start datanode #      
[server@server ~]$ yarn --daemon.sh start resourcemanager #   yarn  
#                      (                 )
[server@server ~]$ hdfs --daemon.sh start datanode #       
[server@server ~]$ yarn --daemon.sh start nodemanager #         
namenode使用jps取得:停止、命令は同じです。startをstopに変えます。
五、Hadoop関連プロセスの紹介
分散型ストレージと分散型計算においては、Hadoopはスレーブ/スレーブアーキテクチャを使用しています。完全に構成されたクラスタでは、クラスタ内で一連のバックグラウンドを実行する必要がある。(deamon)プログラム。バックグラウンドプログラムはNameNode、DataNode、Secondary NameNode、JobTracker、TaskTrackerから構成されています。NameNode、Secondary NameNode、JobTrackerはMasterノードで動作しますが、各SlaveノードにDataNodeとTaskerが配置されています。このプログラムはSlaveのデータを処理します。Masterノードに特に説明する必要があるのは、小さいクラスタにおいて、Secondary NameNodeはあるスレーブノードに属することができ、大規模なクラスタにおいて、NameNodeとJobTrackerはそれぞれ2つのサーバに配置される。
1.NameNode
Namenode管理者ファイルシステムのNamespaceです。ファイルシステムツリーとファイルツリーのすべてのファイルとフォルダのメタデータを維持しています。Namenodeは各ファイル中の各ブロックの位置情報を記録しているが、これらの情報はシステム起動時にデータノードから再構築されるので、永続化されない。
2.Secondary NameNode
Secondary NameNodeはNamenodeファイルシステムのメタデータのバックアップを補助するものとして、Namespaceミラーを定期的に操作ログファイル(edit logs)と統合して、操作ログファイル(edit logs)が大きくなりすぎないようにすることが主な役割です。
3.Datanode
Datanodeはファイルシステムのワークノードであり、クライアントまたはnamenodeのスケジュールに従ってデータを格納し、検索し、定期的にnamenodeに格納されたブロック(block)を送信する。のリストを表示します。クラスタ内のサーバごとにDataNodeバックグラウンドプログラムが実行されます。このバックグラウンドプログラムは、HFSデータブロックをローカルのファイルシステムに読み込むために責任があります。クライアントを介してデータを読み書きする必要がある場合、まずNameNodeによってクライアントにどのDataNodeに書こうかを教えます。その後、クライアントは直接にこのDataNodeサーバ上のバックグラウンドプログラムに進みます。行通信を行い、関連するデータブロックを読み書きします。
4.JobTracker
JobTrackerバックグラウンドプログラムは、アプリケーションとHadoopを接続するために使用されます。ユーザコードがクラスタに提出された後、JobTrackerによってどのファイルが処理されるかを決定し、異なるtaskにノードを割り当てます。また、taskをすべて監視します。もしあるtaskが失敗したら、JobTrackerは自動的にこのtaskを再開します。ほとんどの場合、このtaskは、このtaskに置かれなくなります。ノード上にあります。各HadoopクラスタはJobTrackerしかなく、クラスタのMasterノード上で一般的に動作します。
5.Task Tracker
TaskTrackerは、データを格納するDataNodeと結合し、その処理構造は、メイン/スレーブアーキテクチャにも従う。JobTrackerはメインノードにあり、MapReduceを統括する。Task Trackersは、ノードから独立して個々のtaskを管理する。各Task Trackerは、特定のtaskを独立して実行し、JobTrackerはタskの割り当てを担当する。つのTaskTrackerが、各TaskTrackerに対して複数のjava仮想マシン(JVM)を生成し、複数のmap及びreduceタスクを並列処理することができます。Task Trackerの重要な役割はJobTrackerと相互作用することです。JobTrackerがTaskTrackerに与えられた情報を時間通りに取得できない場合、JobTrackerはTaskノードがクラッシュします。
参考:[1].CentOST 7でyumソースを構築したプログラミング環境[2].Hadoop Custer Setup[3].hadoop 3.0アルファ1のインストール構成[4].hadoopのNameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker紹介