図1は、環境が必要
名前ノードとsecondaryNodeない同じマシン上とのResourceManagerはまた、別のマシンに配置する必要がある三つの異なるマシン(だけでは同じプロセス)
2、仮想マシン関連の設定は、
我々は3台の仮想マシンのクローン最初のベースマシンから仮想マシン(最も原始的なシステム・マシン)と、すべての基本的な設定を行うには、この仮想マシン上で、その後、この仮想マシン経由が必要二人は、さらにクローニングしました。
基本構成:
* rootパスワードの変更
* sshがインストールされ
、オープンに* SSHのroot権限を-とき>クラスタが開いている必要があります
*変更のホスト名
*修正ホスト
* JDKをインストールし、Hadoopのソフトウェア
の静的IPを設定するには、* - >これは最初のステップですDHCPへの仮想マシンのデフォルトはIPを割り当てることがあるため、クローニングした後は、仮想マシンを起動するたびに同じIP接続ではないかもしれないので、我々はまた、非常にそうIPすべての後という静的IPを設定する必要があり面倒で(行うには、残りの2つの仮想マシンを終了していません変更されません)
ここでは、関連事業ショットは以下のとおりである:
用途:rootパスワードの変更sudo passwd root
rootパスワードを変更するためのコマンド
のsshをインストールするには:apt-get install openssh-server
写真はsu
あなたが普通のユーザに切り替えたい場合は、rootユーザーに切り替えているsu - 用户名
オープンのssh root権限:rootユーザーで行くようにし我々はそうする最後のステップで、rootユーザーに切り替える必要がありsu
、コマンド、および編集するための、その後ssh_configファイルは/ etcに/ sshの
新しいを挿入するには、このラインアウト元のコメント(と、元の禁止にyesにこのファイルのパーミッションを変更ライン)
ホスト名とホストファイルを変更します。入力は/ etc編集、それらのホスト名ファイルとホストは、ホスト名がhadoop2に設定されているファイルを
、JDKをインストールし、Hadoopのソフトウェア:
このファイルは/ home /ユーザー名のフォルダに(このユーザーのフォルダです)ソフトウェアを格納するためのフォルダを作成し、当社のHadoopソフトウェアおよびJDK mkdir software
xftp JDKするために使用するツールをして、この仮想マシンにアップロードさhHadoopソフトウェアは
、我々は我々自身のファイルフォルダを作成するには、JDKとのHadoopソフトウェアを首尾よく合格していることがわかります
-
2 -解凍圧縮ファイルを通過した後の次のステップは、彼らがにそれらを解凍しますある/usr/local
ディレクトリ tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local
tar -zxvf hadoop-2.6.4.tar.gz -C /usr/local
このディレクトリに正常に解凍したかどうかを確認するためには/ usr / localディレクトリに
、それが成功してますが、アンパックJDKおよびそれらがそのようにコマンドの簡単な変更が名前が変更されていることに使用されるの後ろのHadoop名が長すぎるたmv jdk1.8.0_161/ java
mv hadoop-2.6.4/ hadoop
のjavaに変更し、それらを使いやすく、Hadoopの、
その後、我々は彼らのユーザーとグループを変更する必要がありchown -R jee:jee hadoop
chown -R jee:jee java
、グループ名を:JEEは私のユーザー名である:ここJEEに注意してください
、私たちのHadoopとなるように設置することがJDKまた、我々は我々が必要とする次のステップ指定した場所に保存されているJDKの設定にし、Hadoopの環境を変数の環境変数に注意を払うが、私たちは、rootユーザーでのユーザーの設定に関連付けられるべきではない私たちの現在のユーザーに切り替える必要がある su - jee
私たちは、ファイルを編集する必要が私たちのJDK設定するには~/.bashrc
、このドキュメントの先頭に追加され
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
configureのHadoopに我々はまた、編集にファイル必要~/.bashrc
このファイルには参加するが
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
構成環境の完了後の変数が使用する必要があるsource ~/.bashrc
コマンドを有効にする設定ファイルを作成し、その後、我々は、JDKのHadoopのバージョンを確認し、すでに利用可能かどうかを確認します
私たちは、JDKとのHadoop環境で学ぶことができるグラフによっては、このように構成されている私たちの最初のマシンの設定が完了した後、私たちは、この仮想マシンのクローンを作成することができます!
3台の仮想マシンは、そのIPアドレスビューを起動してifconfig
、その後、xshell使用します(ここでは使用がSecureCRTのである)。この3台の仮想マシンに接続するためのツール
、いくつかの設定を次に我々はクラスタマシンを変更する必要があります:
* 3つの静的IP設定仮想マシンは静的IP設定を行う必要があり
、3台の仮想マシンが別のマシン名を必要とするため*ホスト名とホストファイルの変更を
ものの3台の異なる仮想マシン、ここで見ることができますが、同じマシン名は私たちの最初のあるあります設定hadoop2仮想マシン(マシン名が同じであるように、2つのバック最初のクローンからのため)
* のログインパスワードなしのSSHの設定(重要)なぜそれは次のようだと思いますが重要である
私たちが最初に各マシンを変更しますヘルプへのマシン名は、私たちは、それぞれhadoop2がそうでなければ、混乱慣行や変更のホスト名とホスト一貫したアプローチの上を避けているこれらの3台の仮想マシンを区別するvi hostname
vi hosts
ので、3台のマシン上で私たちの名前は私のテストでも呼ばhadoop2 hadoop3 hadoop4(hadoop1を設定されていることテストに指名されたときのマシン)
あなたは、私が変わる時間があれば、我々は、私は今、3つのブリッジモードのIPアドレスを使用している(各仮想マシンの静的IPを変更する必要があります次に、それはここではNATモードに置き換えられます将来的には非常に良いではありませんがブリッジモードで動作していますNATモードは再び変更されました)
まず、ネットワークサービス閉じます service network-manager stop
その後、我々は、に行く必要が/etc/network
interfacesファイルの内部を変更し、ディレクトリvi interfaces
私たちは、このファイルの終わりに私たち自身の設定パラメータの一部を追加する必要があります
auto ens33
iface ens33 inet static //static表示静态的 全局访问
address 192.168.124.21 //这里的address表示我们给这台主机设置的静态IP 三台分别设置21 22 23.
netmask 255.255.255.0 //子网掩码 默认都是255.255.255.0
gateway 192.168.124.1 //网关
dns-nameservers 192.168.124.1 //DNS名称服务器 和网关一致即可
我々はマシンのIPアドレスを確認する必要があり才能が適切に設定されているだけで、我々は静的IPアドレスを設定する必要がありますし、私たちのローカルIPゲートウェイは、通信のためのネットワークで一貫している必要があり、ここではありません。これらのパラメータ(ブリッジモードNATモード矛盾プラクティス)
当社のネットワークサービスを再起動する/etc/init.d/networking restart
ネットワークが使用に接続されているかどうかを再テストかのように、我々は、この仮想マシンのIPアドレスを調べることができますが、私たちのように構成されていないping www.baidu.com
あなたは、私たちが正常に静的IPとネットワークを設定していることがわかります加えて、2日間何の問題仮想マシンは、同じアプローチではありませんが、ただではない同じ静的のIP
次のステップは、我々は、設定する必要がありますログインパスワードなしのSSHを
为什么我们要配置这个ssh无密码登录呢
ssh无密码登录 说直白点就是ssh协议连接机器时不需要密码
NameNode-->管理DataNode NameNode存了元数据 需要去访问DataNode
ResourceManager-->YARN的大管家 需要去访问NodeManager
他们之间的访问 是通过ssh协议完成的 在正常的运行中 ssh协议是需要密码的 我们现在配置的是完全集群模式 我们不可能还去手动输入密码
所以我们设置ssh无密码登录 不配置的话 集群是有问题的
我们应该怎么样来配置ssh无密码登录呢
我们是将NameNode存放在hadoop2中 SecondaryNode存放在hadoop4中 将ResourceManager存放在hadoop3中
NameNode和SecondaryNode不要部署在一台服务器上 因为在实际的部署环境中 需要Secondary去做NameNode的HA(高可用)
ResourceManager需要的内存比较大 所以它也需要单独部署在一台服务器上
hadoop2中有 : NameNode + +DataNode + NodeManager
hadoop3中有 : DataNode + ResourceManager + NodeManager
hadoop4中有 : DataNode + NodeManager + SecondaryNode
NameNode需要去访问DataNode 所以存放NameNode的虚拟机访问存放了DataNode的虚拟机是不需要密码的
所以hadoop2 ssh-->hadoop2、 hadoop3、hadoop4 需要配置无密码登录
ResourceManager 需要访问 NodeManager 所以存放ResourceManager的虚拟机访问存放了NodeManager的虚拟机不需要密码
所以hadoop3 ssh--> hadoop3、hadoop2、hadoop4 需要配置无密码登录
*ステップ
(1) 生成ssh访问的密钥
(2) 拷贝密钥到其他机器上面,就实现了无密码登录(如果其他机器中有本机的ssh密钥 那么本机访问其他机器 就可以不用密码登录了)
要想生成本机的密钥 我们需要进入本机的 /home/用户名/.ssh 这个目录下, 新的虚拟机没有.ssh这个目录 这是因为我们没有使用ssh连过本机 如果没有的话 我们需要 ssh localhost 使用ssh连接一下本机
这样就会生成一个.ssh目录了 我们再进入这个目录下 使用ssh-keygen -t rsa命令 生成密钥
注:関連付けられているユーザーのための重要な必要性一般の利用者へのスイッチにではなく、生成するルートユーザを使用して私たちは通常のユーザーに切り替える必要として、別のユーザーのSSH鍵が同じではありませんが、
見ることができる我々は、我々はの.sshディレクトリにする必要はありませんssh localhost
彼は機械で訪れてみましょう.sshディレクトリを生成し
、我々はの.sshディレクトリの下に生成された私たちのSSHキー入力の横にssh-keygen -t rsa
2つのファイルが生成され見ることができた秘密鍵に公開鍵を、我々は他のマシンに公開鍵をコピーすることができますあなたは、次を参照して、マシンがすでに公開されているならば、我々は192.168.124.22を行ったマシンの成功の公開鍵の他のニーズは同じアプローチがパスワードなしで構成されている接続をsshを考えているとき、公開鍵authorized_keysファイルが存在している私たちのコピーの代わりに、 。ssh-copy-id 目标机器的IP地址
ssh-copy-id 192.168.124.22
不要忘记给本机也要复制一个公钥 本机通过ssh访问本机 也是需要ssh公钥的!!!
我々がないssh接続、それは完全な名前が変更されていないという理由だけで、我々はhostsファイルを変更する前にパスワードを変更する必要が終了した後、他の二つを見つけるために彼を可能にするために一緒に、我々はまた、そのIPアドレスを変更する必要があるとIP他の2台の仮想マシンIPステーションのアドレス(3がしなければならない)
、その後、私たちの3台の仮想マシンは、当社の使用で見つけることができます再起動ping
し、ssh
このホスト名に接続された3台のマシンのコマンドが正常にこの番組のファイル名と、当社のhostsファイルの設定ファイルのホスト名とIPすることができ発効を
見ることができ、我々はパスワードを入力する必要がないこと、SSH接続を使用して
我们做上述的这些操作 就是为了可以使用 ssh hostname--->直接登录集群的机器
Hadoopの設定ファイル:
次は、我々はクラスタを構成する必要があります:
*(1)の構成は、一台のマシン上で完了しました
*(2)他のマシンに配布マシン上のすべての構成
この図の要件に従って、当社は、これらのファイルの構成を変更するためにそれらを得る
コアが-site.xmlに入る修正/usr/local/hadoop/etc/hadoop
の修正されているディレクトリ以下の情報を追加しますcore-site.xml
core-site.xml
<configuration>
<!--配置Hadoop中NameNode存放元数据信息的目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
<!--配置Hadoop NameNode节点 value中写的是存放NameNode节点的机器名 hadoop2-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop2:9000</value>
</property>
</configuration>
構成hadoop-env.sh
JAVA_HOMEが修正以下に示すように、
設定はhdfs-site.xml
、この文書に挿入されvi hdfs-site.xml
<configuration>
<property>
<!--设置副本的个数 因为我们使用了三台虚拟机 所以设为3-->
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<!--设置SecondaryNode的位置 因为我们将SecondaryNode存放在第三台虚拟机中 所以value中写的是第三台主机的hostname hadoop4-->
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop4:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/data/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/data/dfs/data</value>
</property>
</configuration>
変更しslaves
、当社の3台の仮想マシンがリストに追加されたファイル名を(その手段の複数のノード上で実行され、当社のデータノードという)vi slaves
へyarn-env.sh
- >変更JAVA_HOMEの設定
変更yarn-site.xml
vi yarn-site.xml
、次のコンテンツの挿入
<!--reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定yarn的ResourceManager的地址 我们将ResourceManager存放在第二台虚拟机 所以value为第二台虚拟机的hostname hadoop3-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop3</value>
</property>
設定mapred-env.sh
- >変更JAVA_HOMEが設定さ
ためにmapred-site.xml.template
変更mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
し、次はmapred-site.xmlに挿入されています
<configuration>
<!--指定mr运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
これまで我々は、我々は唯一、このコマンドを使用してこれらのマシンで構成された別の2機まで配布する必要があるこのマシンの上記の設定が完了しました
rsync -rvl /usr/local/hadoop/etc/hadoop/* jee@hadoop3:/usr/local/hadoop/etc/hadoop
其中/usr/local/hadoop/etc/hadoop/* 表示这个目录中的所有文件
jee@hadoop3 中 jee是指当前的用户名hadoop3是值虚拟机的名字
この成功は、他の2台の仮想マシンに配布し、このカタログ内のすべての設定は、ファイルが良好な分配に関連しているかどうかを確認するために、他の2台の仮想マシンに行くことができています
この時点で、我々は、すべてのクラスタセットアップ行われています!!!
次のステップは、このクラスタに問題があるかどうかを確認するために、それを実行することです
我们创建了三台虚拟机 hadoop2、hadoop3、hadoop4
hadoop2中有NameNode+DataNode+NodeManager
hadoop3中有DataNode+ResourceManager+NodeManager
hadoop4中有SecondaryNode+DataNode+NodeManager
我们配置了HDFS和YARN 所以 要启动这个集群 我们只需要启动HDFS和YARN即可
启动HDFS : 在NameNode这个节点执行启动命令即可(在启动之前需要格式化我们的NameNode!!!)
启动YARN : 在ResourceManager这个节点执行启动命令即可
レッツテストは:最初に私たちの名前ノードフォーマットを開始/usr/local/hadoop/bin
、次のディレクトリを./hdfs namenode -format
、我々はHDFS開始することができます完了名前ノードフォーマットした後インセプションHDFSを、その後、糸を開始します。HDFSはで開始し/usr/local/hadoop/sbin
、次のディレクトリに./start-dfs.sh
して、私たちのYARNのResourceManagerノード上で起動し/usr/local/hadoop/sbin
、次のディレクトリに./start-yarn.sh
だから、私たちのクラスタが起動することを、私たちは、各仮想マシン上で使用することができjps
、この仮想マシン上のプロセスを表示するために
如果正常启动 那么
第一台机器上的进程:NameNode+DataNode+NodeManager
第二台机器上的进程:ResourceManager+DataNode+NodeManage
第三台机器上的进程:SecondaryNode+DataNode+NodeManage
まず機械:
二機:
三機:
この観点から、我々は3台のマシンは、プロセスが間違っていない処理してい
查看web页面:http://nameNode机器的IP:50070/
如果我们想停集群
先停Yarn,再停Hdfs.
停Yarn:sbin/stop-yarn.sh
停Hdfs:sbin/stop-dfs.sh
これらは、完全なHadoopクラスタモードを構築するためのすべてのステップです!
!!!!クラスタの事実を構築する上記の方法は、それが実際にはデータノードを立ち上げているバグがあることに注意してください
原因分析:
配置hosts中localhost为本机Ip。datanode连接到namenode上识别到localhost,又回头重连自己。
解决办法:
删除hosts配置的localhost(集群中的每台机器都需要做)
その後、我々は、Webページノード数で見ることができます
仮想マシンは、ネイティブhadoop2 / hadoop3 / hadoop4でドメイン名にアクセスする場合は、新聞が認識されません。
解决办法:
C:\Windows\System32\drivers\etc 下的hosts文件
添加下面信息:
192.168.1.17 hadoop102
192.168.1.18 hadoop103
192.168.1.19 hadoop104