0.zookeeper叢集的搭
略,自行百度
1.hadoop2.7.3下載
2.tar 解壓,mv到 /data,並將資料夾改為hadoop(也可以不改,看心情)。
3.vi /etc/profile 新增hadoop路徑
export HADOOP_HOME=/data/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
4.配置hadoop-env.sh
檔案位置 /data/hadoop/etc/hadoop
export JAVA_HOME=/usr/java/jdk1.8.0_121
5.配置core-site.xml檔案
<configuration>  
    <property>  
        <!--檔案系統依賴的基本配置 -->  
        <name>hadoop.tmp.dir</name>  
        <value>/data/hadoop/tmp</value>  
    </property>  
    <property>  
        <!-- 指定hdfs的nameservice為nameservices,可以自行命名-->  
        <name>fs.defaultFS</name>  
        <value>hdfs://nameservice</value>  
    </property>  
    <property>  
        <name>io.file.buffer.size</name>  
        <value>4096/value>  
    </property>  
    <property>  
        <!-- 指定zookeeper。我搭了三臺,伺服器名分別是nb1,nb2,nb3 -->  
        <name>ha.zookeeper.quorum</name>  
        <value>nb1:2181,nb2:2181,nb3:2181</value>  
    </property>  
</configuration>
6.配置hdfs-site.xml檔案
<configuration>  
    <property>  
        <!--指定hdfs的nameservice為nameservice,需要和core-site.xml中的保持一致 -->  
        <name>dfs.nameservices</name>  
        <value>nameservice</value>  
    </property>  
    <property>  
        <!-- nameservice下面有兩個NameNode,分別是namenode1,namenode2,名字自己定義-->  
        <name>dfs.ha.namenodes.nameservice</name>  
        <value>namenode1,namenode2</value>  
    </property>  
    <property>  
        <!-- namenode1的RPC通訊地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode1</name>  
        <value>nb2:9000</value>  
    </property>  
    <property>  
        <!-- namenode1的http通訊地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode1</name>  
        <value>nb2:50070</value>  
    </property>  
    <property>  
        <!-- namenode2的RPC通訊地址 -->  
        <name>dfs.namenode.rpc-address.nameservice.namenode2</name>  
        <value>nb1:9000</value>  
    </property>  
    <property>  
        <!-- namenode2的http通訊地址 -->  
        <name>dfs.namenode.http-address.nameservice.namenode2</name>  
        <value>nb1:50070</value>  
    </property>  
    <property>  
        <!-- 指定NameNode的元資料在JournalNode上的存放位置-->  
        <name>dfs.namenode.shared.edits.dir</name>  
        <value>qjournal://nb1:8485;nb2:8485;nb3:8485/nameservice</value>  
    </property>  
    <property>  
        <!-- 指定JournalNode在本地磁碟存放資料的位置 -->  
        <name>dfs.journalnode.edits.dir</name>  
        <value>/home/hadoop/workspace/journal</value>  
    </property>  
    <property>  
        <!-- 開啟NameNode故障時自動切換 -->  
        <name>dfs.ha.automatic-failover.enabled</name>  
        <value>true</value>  
    </property>  
    <property>  
        <!-- nameservice 需跟 core-site.xml一致 -->  
        <name>dfs.client.failover.proxy.provider.nameservice</name>  
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
    </property>  
    <property>  
        <!-- 配置隔離機制 -->  
        <name>dfs.ha.fencing.methods</name>  
        <value>sshfence</value>  
    </property>  
    <property>  
        <!-- 使用隔離機制時需要ssh免登陸。叢集間必須ssh免登入,方法自行百度 -->  
        <name>dfs.ha.fencing.ssh.private-key-files</name>  
        <value>/root/.ssh/id_rsa</value>  
    </property>  
    <!-- 以下都是正經配置 -->  
    <property>  
        <!-- replication 是資料副本數量,預設為3,salve少於3臺就會報錯 -->  
        <name>dfs.replication</name>  
        <value>2</value>  
    </property>  
    <property>  
        <name>dfs.namenode.name.dir</name>  
        <value>file:/data/hadoop/hdfs/name</value>  
        </property>  
    <property>  
        <name>dfs.datanode.data.dir</name>  
        <value>file:/data/hadoop/hdfs/data</value>  
    </property>  
</configuration>  
8.配置mapred-site.xml檔案
修改Hadoop中MapReduce的配置檔案,配置的是JobTracker的地址和埠。
<configuration>  
    <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:10020</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>nb2:19888</value>  
    </property>  
</configuration>
配置yarn-site.xml
<configuration>  
    <property>  
        <!-- 設定nodemanager 總記憶體大小為3G -->  
        <name>yarn.nodemanager.resource.memory-mb</name>  
        <value>3072</value>  
    </property>  
    <property>  
        <!--Container記憶體最大2G -->  
        <name>yarn.scheduler.maximum-allocation-mb</name>  
        <value>1024</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.resource.cpu-vcores</name>  
        <value>1</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.hostname</name>  
        <value>nb2</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.address</name>  
        <value>nb2:8032</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.scheduler.address</name>  
        <value>nb2:8030</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.resource-tracker.address</name>  
        <value>nb2:8031</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.admin.address</name>  
        <value>nb2:8033</value>  
    </property>  
    <property>  
        <name>yarn.resourcemanager.webapp.address</name>  
        <value>nb2:8088</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation-enable</name>  
        <value>true</value>  
    </property>  
    <property>  
        <name>yarn.nodemanager.remote-app-log-dir</name>  
        <value>/home/fibo/hadooplog/hadoop-yarn</value>  
    </property>  
    <property>  
        <name>yarn.log-aggregation.retain-seconds</name>  
        <value>86400</value>  
    </property>  
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://nb2:19888/jobhistory/logs/</value>  
    </property>  
</configuration>  
9.配置masters檔案(這個也可以沒有)
vi masters
新增本機ip
10.配置slaves檔案
vi slaves
叢集其他節點的ip
11.將hadoop移動到其他機子
scp -r /data/hadoop [email protected]:/data/
scp -r /data/hadoop [email protected]:/data/
12.格式化HDFS檔案系統
hdfs zkfc -formatZK 格式化zkfc,讓在zookeeper中生成ha節點
(注意,這條命令最好手動輸入,直接copy執行有可能會有問題,注意短橫線)
hadoop namenode -format
hdfs namenode -format
13.啟動hadoop
叢集啟動
啟動journalnode叢集 在nb1上執行如下命令完成JournalNode叢集的啟動
hadoop-daemons.sh start journalnode
格式化hdfs,執行一次
hadoop namenode -format
格式化zkfc,讓在zookeeper中生成ha節點 在nb1上執行如下命令,完成格式化,執行一次
hdfs zkfc -formatZK
首先在nb1上啟動active節點,在nb1上執行如下命令
hadoop-daemon.sh start namenode
在mast2上同步namenode的資料,同時啟動standby的namenod,命令如下
#把NameNode的資料同步到mast2上
hdfs namenode -bootstrapStandby
#啟動mast2上的namenode作為standby
hadoop-daemon.sh start namenode
啟動datanode 在mast1上執行如下命令
hadoop-daemons.sh start datanode
啟動yarn 在作為資源管理器上的機器上啟動
start-yarn.sh
啟動ZKFC 在mast1上執行如下命令,完成ZKFC的啟動
hadoop-daemons.sh start zkfc
14.關閉系統
stop-dfs.sh
stop-yarn.sh
15.zookeeper
1.zkCli.sh 
2.ls /