まず、準備作業
すなわち、4台のマシンがあるとします192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.104。
ここでCentos7システムの一例として、(いくつかの操作をしているLinuxシステムコマンドの異なるバージョンが同じではない、自己百度)のノードが4つのログインアカウントのHadoopを持っています。
私たちは、とても設定を計画します。
ファイアウォールをオフにします
-
systemctl stop firewalld.service
-
systemctl stop iptables.service
そして、22が開いているマシンのポートを確認
ここでは、ホスト名にマップされたIP、次のコマンドを実行します。
-
vi /etc/hosts
hostsファイルには、編集には、以下の
-
192.168.1.101 node1
-
192.168.1.102 node2
-
192.168.1.103 node3
-
192.168.1.104 node4
保存して終了
3306ポートが開いているノード1かどうかをチェックします
そして、他のノードのホストにファイルを送信します
-
scp /etc/hosts hadoop@node2:/etc/
-
scp /etc/hosts hadoop@node3:/etc/
-
scp /etc/hosts hadoop@node4:/etc/
Hadoopのは、伝送の過程でユーザーのパスワードを入力する必要があります
第二には、configureパスワードフリー
その後、ホームディレクトリと実行 コマンドを、プロンプト気にしないコマンドの実行が完了するまで、すべての方法を入力します。ssh-keygen-t rsa
他のノードに移動し、同じ操作を実行
例えば:SSH NODE2(ノードNODE2へのジャンプ)
このとき、各ノードのホームディレクトリには、複製の3つのノードノード4 idrsa(秘密鍵)とidrsa.pub(公開鍵)は、2つのファイルを、ノード2、ノード3、id_rsa.pubと.sshディレクトリを持っていますホームディレクトリノード1の次の部分に送られます
-
scp .ssh/id_rsa.pub hadoop@node1:~/pub2
-
scp .ssh/id_rsa.pub hadoop@node1:~/pub3
-
scp .ssh/id_rsa.pub hadoop@node1:~/pub4
公共ファイルのノード1ホームディレクトリのコピー
-
cp .ssh/id_rsa.pub pub1
ノード1のホームディレクトリに新しいファイルを作成します。
-
touch authorized_keys
authorized_keysに内のすべてのノードへの4つの重要なファイル入力の内容
-
cat pub1 >> authorized_keys
-
cat pub2 >> authorized_keys
-
cat pub3 >> authorized_keys
-
cat pub4 >> authorized_keys
次に、各ノードのauthorized_keysファイルフォルダの.sshに送信します
-
cp authorized_keys .ssh/
-
scp authorized_keys hadoop@node2:~/
-
scp authorized_keys hadoop@node3:~/
-
scp authorized_keys hadoop@node4:~/
これらの言葉は、今、各ノードの/ etc / sshを/ ssh_configのファイルにコピーされます
-
Host *
-
StrictHostKeyChecking no
-
UserKnownHostsFile=/dev/null
このように、ノード間のスイッチにパスワードを入力する必要はありません
第三に、インストールJDK
ダウンロードjdk1.8
ホームディレクトリにアップロード、ダウンロードはnode1一度、抽出物に次のコマンドを入力します。
-
tar -zxvf jdk-8u131-linux-x64.tar.gz
削除アーカイブを抽出した後、そのファイルフォルダ名前を変更したJDKを解凍します
-
mv jdk1.8.0_131 jdk
設定の環境変数:
-
vi .bashrc
ファイルに以下の内容を書きます
-
export JAVA_HOME=/home/hadoop/jdk
-
export PATH=$PATH:$JAVA_HOME/bin
保存して終了
力にそれを持って、.bashrcのファイルを再コンパイルするには、次のコマンドを実行
-
source .bashrc
送信JDKの.bashrcファイルフォルダとソースファイル内の他のノード、及び他のノードへの.bashrc
-
scp –r jdk/ hadoop@node2:~/
第四に、インストール飼育係
ダウンロードした後、飼育係はnode1アップロードされたホームディレクトリに、抽出するには、次のコマンドを入力します。
-
tar -zxvf zookeeper-3.4.8.tar.gz
抽出した後のアーカイブは削除、フォルダ名を変更します
-
mv zookeeper-3.4.8 zookeeper
.bashrcのファイル内の設定環境変数、輸出PATH文以上のプラスワン
-
export ZOOKEEPER=/home/hadoop/zookeeper
そして、この文の末尾に輸出PATHを追加しました:
-
:$ZOOKEEPER_HOME/bin
保存して終了した後 の外観source.bashrc
飼育係プロファイルディレクトリを入力します。
-
cd zookeeper/conf
プロファイル名の変更
-
mv zoo_sample.cfg zoo.cfg
プロフィールの編集
-
vi zoo.cfg
次の一節書かれたプロフィール
-
server.1=node1:2888:3888
-
server.2=node2:2888:3888
-
server.3=node3:2888:3888
そして、その値を見つけて修正するDATADIR
-
dataDir=/home/hadoop/tmp/zookeeper
保存して終了
ただ、構成された/ホーム/ Hadoopのを/ tmp /飼育係、このフォルダが存在しない場合は、手動で作成
ディレクトリ・MYIDでファイルを作成し、対応する図面に書かれた数字は、数字とzoo.cfgコンフィギュレーション・ファイルは、このような書き込み1にMYIDファイルのノード1のような、他のノードなど、保存して終了し、最後に対応MYID。
飼育係のbashrcにとフォルダの下にノードノード2とノード3のHadoopホームディレクトリとソース、それの.bashrcファイルに送信します
ノード1、ノード2、ノード3の3つのノードを実行します zkServer.sh start
正常に起動ヒント
3つの成功し、開始ノード、ノードの実行後 zkServer.sh status
あなたはフォロワーやリーダーを求められた場合は、インストールが成功した飼育係があったことを意味し
第五は、Hadoopのインストール
hadoop2.7.3バージョンhttp://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gzをダウンロードするには、次のアドレス
そして、ホームディレクトリのノード1にアップロードし、抽出物に次のコマンドを入力します。
-
tar -zxvf hadoop-2.7.3.tar.gz
抽出した後のアーカイブは削除、フォルダ名を変更します
-
mv hadoop-2.7.3 hadoop
.bashrcのファイル内の設定環境変数、輸出PATH文以上のプラスワン
-
export HADOOP_HOME=/home/hadoop/hadoop
そして、この文の末尾に輸出PATHを追加しました:
-
:$ HADOOP_HOME /bin:$ HADOOP_HOME /sbin
保存して終了した後 の外観source.bashrc
プロファイルディレクトリにHadoopの、および以下の構成ファイルを変更
1.私たちは、hadoop-env.sh
-
export JAVA_HOME=/home/hadoop/jdk
2. VI HDFS-site.xmlの
-
<configuration>
-
<!--block块存放副本的个数 -->
-
<property>
-
<name>dfs.replication</name>
-
<value>3</value>
-
</property>
-
<!--nameNode集群的名称 -->
-
<property>
-
<name>dfs.nameservices</name>
-
<value>hwua</value>
-
</property>
-
<!--nameNode集群对应有几个namenode在这里可以填很多个 -->
-
<property>
-
<name>dfs.ha.namenodes.hwua </name>
-
<value>nn1,nn2</value>
-
</property>
-
<!--nameNode程序rpc的通信 -->
-
<property>
-
<name>dfs.namenode.rpc-address.hwua.nn1</name>
-
<value>node1:8020</value>
-
</property>
-
<!--nameNode程序rpc的通信 -->
-
<property>
-
<name>dfs.namenode.rpc-address.hwua.nn2</name>
-
<value>node2:8020</value>
-
</property>
-
<!--nameNode程序http的通信 -->
-
<property>
-
<name>dfs.namenode.http-address.hwua.nn1</name>
-
<value>node1:50070</value>
-
</property>
-
<!--nameNode程序http的通信 -->
-
<property>
-
<name>dfs.namenode.http-address.hwua.nn2</name>
-
<value>node2:50070</value>
-
</property>
-
<!--这里那几台机器启动了journalNode服务 -->
-
<property>
-
<name>dfs.namenode.shared.edits.dir</name>
-
<value>qjournal://node2:8485;node3:8485;node4:8485/hwua</value>
-
</property>
-
<!--nameNode的active和standby在切换时候,提供的一个API -->
-
<property>
-
<name>dfs.client.failover.proxy.provider.hwua</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
-
</property>
-
<!--当一个namenode挂了,那么standby状态的接管,会在要断没断时将通过ssh到active上将其进程杀死 ,自己接管即:当NN2failover接管时,将通过ssh到namenode里面去,kill process(namenode),防止脑裂-->
-
<property>
-
<name>dfs.ha.fencing.methods</name>
-
<value>sshfence</value>
-
</property>
-
<!--通过钥匙去登录别的服务器,开启其它的服务,如DataNode -->
-
<property>
-
<name>dfs.ha.fencing.ssh.private-key-files</name>
-
<value>/home/hadoop/.ssh/id_rsa</value>
-
</property>
-
<!--journal存放edits文件的地方 -->
-
<property>
-
<name>dfs.journalnode.edits.dir</name>
-
<value>/usr/hadoopsoft/journal</value>
-
</property>
-
<!--当一台nameNode挂了,可以自动的切换 -->
-
<property>
-
<name>dfs.ha.automatic-failover.enabled</name>
-
<value>true</value>
-
</property>
-
</configuration>
3. Iハート-site.xmlの
-
<configuration>
-
<!-- 指定hdfs的nameservice为namenode -->
-
<property>
-
<name>fs.defaultFS</name>
-
<value>hdfs://hwua</value>
-
</property>
-
<!-- 指定hadoop临时目录,如果没有请手动创建 -->
-
<property>
-
<name>hadoop.tmp.dir</name>
-
<value>/home/hadoop/tmp/hadoop</value>
-
</property>
-
<!-- 指定zookeeper所在的机器 -->
-
<property>
-
<name>ha.zookeeper.quorum</name>
-
<value>node1:2181,node2:2181,node3:2181</value>
-
</property>
-
</configuration>
4. MV mapred-site.xml.template mapred-site.xmlに
そして、VI mapred-site.xmlに
-
<property>
-
<name>mapreduce.framework.name</name>
-
<value>yarn</value>
-
</property>
5. VI糸-site.xmlに
-
<property>
-
<name>yarn.nodemanager.aux-services</name>
-
<value>mapreduce_shuffle</value>
-
</property>
-
<property>
-
<name>yarn.resourcemanager.hostname</name>
-
<value>node1</value>
-
</property>
6.私たちの奴隷
-
node2
-
node3
-
node4
ノードデータノード場所を入力します。ノード2ノード3ノード4
secondaryNameNode IPは完全にノードセットを配布し、ここでの高可用性と、secondaryNameNodeせず、NN2アウトを交換するので、完全分散に設定されたマスターは、削除します
7. Hadoopのすべてのディレクトリを他のノードにコピーされます
-
scp -r /usr/hadoopsoft/hadoop-2.5.1 node2:/usr/hadoopsoft/
-
scp -r /usr/hadoopsoft/hadoop-2.5.1 node3:/usr/hadoopsoft/
-
scp -r /usr/hadoopsoft/hadoop-2.5.1 node4:/usr/hadoopsoft/
すべてのファイルを変更した後、journalnodeを開始
-
Hadoop-deamonsh start journalnode
これでフォーマットされた名前ノード:HDFS名前ノード-format
すぐに別の名前ノードにフォーマットした後、メタデータをコピーします。
スタートだけでフォーマットされた名前ノード
書式なし名前ノード上で実行:HDFS名前ノード-bootstrapStandby
二名前ノードを開始します
初期設定で1名前ノードzkfc:HDFS zkfc -formatZK
ノード上で停止:stop-dfs.sh
最後に、Hadoopのを開始しました:start-all.sh