攻城獅在路上(陸)-- hadoop分佈式環境搭建(HA模式)

1、環境說明:

    操做系統:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    jdk版本:java version "1.7.0_79"
    hadoop版本:Apache hadoop-2.5.2java

    zookeeper:3.4.6node

    本文實現hadoop分佈式環境搭建,啓用YARN,利用zookeeper實現HA。apache

2、節點說明:

zookeeper:node2\node3\node4vim

namenode:node1\node5瀏覽器

journalnode:node2\node3\node4bash

datanode:node2\node3\node4服務器

ResourceManager:node1\node5ssh

3、安裝前準備:

一、實現各個節點之間的免密碼登陸設置。分佈式

二、在/etc/hosts文件中對各個節點進行配置。個人配置以下:ide

192.168.103.101 node1
192.168.103.102 node2
192.168.103.103 node3
192.168.103.104 node4
192.168.103.105 node5

4、步驟說明:

一、安裝zookeeper。

二、配置hadoop相關文件。

三、啓動hadoop系統,瀏覽器界面驗證。

5、安裝zookeeper:

首先在node2節點上進行如下操做。

一、首先從官網下載,本文使用的版本爲3.4.6。

二、解壓安裝包,並複製到指定目錄下。

tar zxvf zookeeper-3.4.6.tar.gz 
mv zookeeper-3.4.6/ /home/install/

三、進入到zookeeper安裝目錄,修改配置文件zoo.cfg,若該文件不存在,將zoo_sample.cfg重命名爲zoo.cfg:

cd /home/install/zookeeper-3.4.6/
vim conf/zoo.cfg

添加或修改如下代碼:

dataDir=/opt/tem/zookeeper  #修改此處爲/tmp目錄之外的其餘目錄


server.2=node2:2888:3888
server.3=node3:2888:3888
server.4=node4:2888:3888

上面的代碼定義了3臺zookeeper服務器。數量必須爲奇數。

三、切換到上面定義的/opt/tem/zookeeper/目錄下,提供一個叫myid的文件。

cd /opt/tem/zookeeper/
vim myid

在myid文件中輸入一個2,保存退出便可。

四、上面相同的操做在node3和node4上重複進行(或者也能夠將node2上的安裝目錄以及/opt/tem/zookeeper/拷貝到node3和node4上)

注意將node3上的myid文件的內容修改成3,將node4上的myid文件的內容修改成4。

五、將zookeeper安裝目錄/bin添加到~/.bash_profile中(可選操做,僅是爲了命令行操做方便)

export PATH=$PATH:/home/install/zookeeper-3.4.6/bin

六、在node2\node3\node4上分別啓動zookeeper:

zkServer.sh start

七、用如下命令測試一下是否正確啓動:

zkCli.sh

效果以下圖便可:

image

至此,zookeeper安裝完畢。

6、配置hadoop相關腳本:

如下操做在node1上進行。

配置內容皆參考hadoop官方網站。本文中hadoop安裝目錄爲/home/install/hadoop-2.5.1

一、修改hadoop-env.sh文件,添加如下內容:

export JAVA_HOME=/usr/java/jdk1.7.0_79
export HADOOP_PREFIX=/home/install/hadoop-2.5.1

二、修改core-site.xml文件:

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/tep/hadoop-2.5.1</value>
</property>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>node2:2181,node3:2181,node4:2181</value>
 </property>
</configuration>

說明:

  • ha.zookeeper.quorum:指定zookeeper的3個節點訪問方式。
  • fs.defaultFS:hadoop2.x中的固定寫法,其中mycluster是hdfs-site.xml中配置的nameservice-id。
  • hadoop.tmp.dir:這裏指定hadoop的臨時文件夾,不能放在/tmp目錄下。

三、修改hdfs-site.xml文件:

<configuration>
<property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node5:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node5:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_dsa</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/tem/journalnode</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

 

四、修改yarn-site.xml中的內容:

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node5</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>node2:2181,node3:2181,node4:2181</value>
 </property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
</configuration>

 

五、修改mapred-site.xml文件:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

 

六、保證conf目錄下不要有masters文件。

七、修改slaves文件:

node2
node3
node4

八、將$HADOOP_HOME/etc/hadoop/下的配置文件分別拷貝到node2\node3\node4\node5節點上。

scp etc/hadoop/* root@node2:/home/install/hadoop-2.5.1/etc/hadoop/
scp etc/hadoop/* root@node3:/home/install/hadoop-2.5.1/etc/hadoop/
scp etc/hadoop/* root@node4:/home/install/hadoop-2.5.1/etc/hadoop/
scp etc/hadoop/* root@node5:/home/install/hadoop-2.5.1/etc/hadoop/

九、執行下述命令:

hdfs zkfc -formatZK

其做用是在zookeeper中建立一個屬於當前集羣的目錄:

image

十、啓動zk:

hadoop-daemon.sh start zkfc

十一、啓動hdfs:

start-dfs.sh

九、在node1上啓動yarn:

start-yarn.sh

十、在node5上執行下述命令:

yarn-daemon.sh start resourcemanager

十一、瀏覽器中查看界面:http://node1:8088

image

相關文章
相關標籤/搜索