hadoop 的HA 配置

这里写图片描述

hadoop 单一的配置
1,修改hadoop-env.sh export JAVA_HOME=/app/jdk1.7.0_80
2,修改core-site.xml
<configuration>
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://zgt:9000</value> 
    </property> 
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/usr/local/hadoop/hadoop-2.7.5/data/</value>
    </property>
</configuration>
3,修改 hdfs-site.xml 
<configuration>
    <property> 
                <!-- 副本数-->
        <name>dfs.replication</name> 
        <value>1</value> 
    </property> 
</configuration>

4,修改mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
5,修改yarn-site.xml
<configuration>
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>zgt</value>
    </property>
    <!-- 指定reducer获取数据的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
6,修改slaves 文件
zgt

7,格式化namenode
./hadoop namenode -format

8,命令启动
./start-dfs.sh
./start-yarn.sh




hadoop HA 配置
 1,修改hadoop-env.sh export JAVA_HOME=/app/jdk1.7.0_80
 2,修改core-site.xml
   <configuration>
    <!-- 指定 hdfs 的nameservice 为ns1 -->
    <property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://ns1</value> 
    </property> 
    <!-- 指定 hadoop 临时目录-->
    <property> 
        <name>hadoop.tmp.dir</name> 
        <value>/app/hadoop-2.7.5/tmp/</value>
    </property>

    <!-- 指定zookeeper 地址 -->
    <property> 
        <name>ha.zookeeper.quorum</name> 
        <value>centos1:2181,centos2:2181,centos3:2181</value>
    </property>
   </configuration>

3,修改 hdfs-site.xml 
<configuration>
    <!-- 指定 hdfs 的nameservice 为ns1 需要和core-site 保持一致 -->
    <property> 
        <name>dfs.nameservices</name>  
            <value>ns1</value>  
    </property> 
    <!-- ns1 下面有两个NameNode 分别为 nn1,nn2  -->
    <property>  
        <name>dfs.ha.namenodes.ns1</name>  
        <value>nn1,nn2</value>  
    </property>
    <!--nn1 RPC 通信地址  -->
    <property>  
        <name>dfs.namenode.rpc-address.ns1.nn1</name>  
        <value>centos1:9000</value>  
    </property>
    <!-- nn1的http通信地址,外部访问地址 -->  
    <property>  
        <name>dfs.namenode.http-address.ns1.nn1</name>  
        <value>centos1:50070</value>  
    </property>  

    <!--nn2 RPC 通信地址  -->
    <property>  
        <name>dfs.namenode.rpc-address.ns1.nn2</name>  
        <value>centos2:9000</value>  
    </property>
    <!-- nn2的http通信地址,外部访问地址 -->  
    <property>  
        <name>dfs.namenode.http-address.ns1.nn2</name>  
        <value>centos2:50070</value>  
    </property>  

    <!-- 指定NameNode的元数据在JournalNode日志上的存放位置(一般和zookeeper部署在一起) -->  
    <property>  
        <name>dfs.namenode.shared.edits.dir</name>  
        <value>qjournal://centos1:8485;centos2:8485;centos3:8485/ns1</value>  
    </property>  
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->  
    <property>  
        <name>dfs.journalnode.edits.dir</name>  
        <value>/app/hadoop-2.7.5/journaldata</value>  
    </property>  

    <!-- 开启 NameNode 失败自动切换  -->  
    <property>  
        <name>dfs.ha.automatic-failover.enabled</name>  
        <value>true</value>
    </property> 
    <!-- 配置失败自动 切换的实现方式 -->  
    <property>  
        <name>dfs.client.failover.proxy.provider.ns1</name>  
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
    </property> 

    <!--配置隔离机制的方法 多个机制用换行分割 即每个机制暂用一行  -->  
    <property>  
        <name>dfs.ha.fencing.methods</name>  
        <value>
        sshfence
        shell{/bin/true}
        </value>
    </property>

    <!-- 这个是使用sshfence隔离机制时才需要配置ssh免登陆 -->  
    <property>  
        <name>dfs.ha.fencing.ssh.private-key-files</name>  
        <value>/root/.ssh/id_rsa</value>  
    </property>  
    <!-- 配置sshfence隔离机制超时时间,这个属性同上,如果你是用脚本的方法切换,这个应该是可以不配置的 -->  
    <property>  
        <name>dfs.ha.fencing.ssh.connect-timeout</name>  
        <value>30000</value>  
    </property>    

</configuration>

4,修改mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
5,修改yarn-site.xml

<configuration>

    <!-- 开启RM 高可用  -->
    <property>  
        <name>yarn.resourcemanager.ha.enabled</name>  
        <value>true</value>  
       </property> 
    <!-- 指定RM cluster id  -->
       <property>  
        <name>yarn.resourcemanager.cluster-id</name>  
        <value>yrc</value>  
       </property> 
       <!-- 指定RM 的名字  --> 
       <property>  
        <name>yarn.resourcemanager.ha.rm-ids</name>  
        <value>rm1,rm2</value>  
       </property>  
    <!--分别指定RM 的地址  --> 
    <property>  
        <name>yarn.resourcemanager.hostname.rm1</name>  
        <value>centos1</value>  
       </property>
       <property>  
        <name>yarn.resourcemanager.hostname.rm2</name>  
        <value>centos2</value>  
       </property>
       <!--指定zk 集群的地址  --> 
    <property> 
        <name>yarn.resourcemanager.zk-address</name> 
        <value>centos1:2181,centos2:2181,centos3:2181</value>
    </property>
    <property> 
        <name>yarn.resourcemanager.aux-services</name> 
        <value>mapreduce_shuffle</value>
    </property>

</configuration>
6,修改slaves 文件
centos1
centos2
centos3

7,命令启动  sbin
./hadoop-daemon.sh start journalnode

8, 格式化namenode  bin
./hadoop namenode -format
9,拷贝
 scp -r tmp centos2:/app/hadoop-2.7.5/
10,格式化 ZKFC 在centos1 上格式化即可 bin 
./hdfs zkfc -formatZK
11,启动 HDFS 在centos1上执行
sbin/start-dfs.sh
12,启动 yarn 
sbin/start-yarn.sh

--centos2 要单独启动
./yarn-daemon.sh start resourcemanager

13,可以启动浏览器查看
http://xxxx:9000
http://xxxx:50070

14,验证HDFS HA 
   首先上传一个文件
    hdfs fs -put /etc/profile  /profile
    hdfs fs-ls
    然后kill掉 active 的NameNode
    kill -9 pid
    通过浏览器访问 50070 查看是否切换

15, 若发现两个 hdfs 都是 standby 执行下面的命令 bin
    ./hdfs haadmin -transitionToActive --forcemanual nn1 


zookeeper 配置
scp test.txt zgt@zgt:/app/  ubuntu 远程传输文件
centos 修改主机名 hostnamectl set-hostname centos2
改配置文件:
   zoo.cfg
server.1=zgt:2888:3888
server.2=centos1:2888:3888
server.3=centos2:2888:3888

新建 dataDir=/app/zookeeper-3.4.10/data 并且 echo 1 > myid

猜你喜欢

转载自blog.csdn.net/zhangguangtao1207/article/details/79981240