Hadoop2.6.2完全分布式集群HA模式安装配置详解

一、机器配置清单(8节点)

  1. hadoop100
    节点:NameNode、DFSZKFailoverController(ZKFC)
  2. hadoop101
    节点:NameNode、DFSZKFailoverController(ZKFC)
  3. hadoop102:
    节点:ResourceManager
  4. hadoop103:
    节点:ResourceManager
  5. hadoop104:
    节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
  6. hadoop105:
    节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
  7. hadoop106:
    节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
  8. hadoop107:
    节点:DataNode、NodeManager

二、解压安装配置相关软件

  1. JAVA_HOME=/usr/java/jdk1.7.0_71
    (配置环境变量略过,请自行搜索)

  2. HADOOP_HOME=/hadoop/hadoop-2.6.2

三、修改hosts配置文件

vim /etc/hosts

#添加相应是机器ip和主机名
10.x.xx.80  hadoop100
10.x.xx.81  hadoop101
10.x.xx.82  hadoop102
10.x.xx.83  hadoop103
10.x.xx.84  hadoop104
10.x.xx.85  hadoop105
10.x.xx.86  hadoop106
10.x.xx.87  hadoop107

#关闭防火墙
service iptables stop

#新建用户hadoop密码hadoop
useradd hadoop
passwd hadoop

四、在hadoop104、hadoop105、hadoop106安装Zookeeper

  1. 安装目录:
    /hadoop/zookeeper-3.4.6/

  2. 修改配置:

    cd /hadoop/zookeeper-3.4.6/conf/
    cp zoo_sample.cfg zoo.cfg
    vim zoo.cfg
    
    
    #-----
    
    修改以下内容
    dataDir=/hadoop/zookeeper-3.4.6/tmp
    
    在最后添加:
    server.1=hadoop104:2888:3888
    server.2=hadoop105:2888:3888
    server.3=hadoop106:2888:3888
    保存退出
    
    #-----
    
    
    
    #然后创建一个tmp文件夹
    
    mkdir /hadoop/zookeeper-3.4.6/tmp
    
    #再创建一个空文件
    
    touch /hadoop/zookeeper-3.4.6/tmp/myid
    
    
    #最后向该文件写入ID,填入myid文件里
    
    hadoop104机器:
    echo 1 > /hadoop/zookeeper-3.4.6/tmp/myid
    hadoop105机器:
    echo 2 > /hadoop/zookeeper-3.4.6/tmp/myid
    hadoop106机器:
    echo 3 > /hadoop/zookeeper-3.4.6/tmp/myid
    
    

五、配置Hadoop(cd /hadoop/hadoop-2.6.2/etc/hadoop/)

1.vim hadoop-env.sh
JAVA_HOME=/usr/java/jdk1.7.0_71
2.vim core-site.xml
<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://cluster1</value>
    </property>
    【这里的值指的是默认的HDFS路径。当有多个HDFS集群同时工作时,集群名称在这里指定!该值来自于hdfs-site.xml中的配置】

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/hadoop/hadoop-2.6.2/tmp</value>
    </property>
    【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。】

    <property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop104:2181,hadoop105:2181,hadoop106:2181</value>
    </property>
    【这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点】

</configuration>

3.vim hdfs-site.xml
<configuration>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    【指定DataNode存储block的副本数量。默认值是3个,我们现在有4个DataNode,该值不大于4即可。】

    <property>
        <name>dfs.nameservices</name>
        <value>cluster1</value>
    </property>
    【使用federation时,HDFS集群别名。名字可以随便起,多个集群时相互不重复即可】

    <property>
        <name>dfs.ha.namenodes.cluster1</name>
        <value>hadoop100,hadoop101</value>
    </property>
    【指定该集群的namenode的机器】

    <property>
        <name>dfs.namenode.rpc-address.cluster1.hadoop100</name>
        <value>hadoop100:9000</value>
    </property>
    【指定hadoop100的RPC地址】
    <property>
        <name>dfs.namenode.http-address.cluster1.hadoop100</name>
        <value>hadoop100:50070</value>
    </property>
    【指定hadoop100的http地址】

    <property>
        <name>dfs.namenode.rpc-address.cluster1.hadoop101</name>
        <value>hadoop101:9000</value>
    </property>
    【指定hadoop101的RPC地址】

    <property>
        <name>dfs.namenode.http-address.cluster1.hadoop101</name>
        <value>hadoop101:50070</value>
    </property>
    【指定hadoop101的http地址】

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop104:8485;hadoop105:8485;hadoop106:8485/cluster1
        </value>
    </property>
    【指定该集群的两个NameNode共享edits文件目录时,使用的JournalNode集群信息】

    <property>
        <name>dfs.ha.automatic-failover.enabled.cluster1</name>
        <value>true</value>
    </property>
    【指定该集群是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode】

    <property>
        <name>dfs.client.failover.proxy.provider.cluster1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        </value>
    </property>
    【指定该集群出故障时,哪个实现类负责执行故障切换】

    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    【一旦需要NameNode切换,使用ssh方式进行操作】

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/hadoop/.ssh/id_rsa</value>
    </property>
    【如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置】

    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>
    【connect-timeout连接超时】

</configuration>
4.vim mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    【指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方】
</configuration>
5.vim yarn-site.xml

<configuration>

    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    【启动HA高可用性】

    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</value>
    </property>
    【指定resourcemanager的名字】

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    【使用了2个resourcemanager,分别指定Resourcemanager的地址】

    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value> hadoop102</value>
    </property>
    【自定ResourceManager1的地址】

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value> hadoop103</value>
    </property>
    【自定ResourceManager2的地址】

    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop104:2181,hadoop105:2181,hadoop106:2181</value>
    </property>
    【制定Zookeeper机器】
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    【默认】
</configuration>
6.vim slave (hadoop100、hadoop101、hadoop102、hadoop103机器填写)
hadoop104
hadoop105
hadoop106
hadoop107

六、启动过程

1.启动zookeeper集群(在主机名hadoop104、hadoop105、hadoop106上启动)

./zkServer.sh start

#查看状态:一个leader,两个follower

./zkServer.sh status

2.启动journalnode(分别在在主机名(ip)04、主机名(ip)05、主机名(ip)06上执行)

sbin/hadoop-daemon.sh start journalnode

#验证
jps
#显示JouralNode + QuorumpeerMain

3.格式化namenode(hadoop100)

hdfs namenode -format

4.格式化ZKFC(在hadoop100上执行)

hdfs zkfc -formatZK

5.NameNode从hadoop100同步到hadoop101

1.在hadoop101执行
hdfs namenode bootstrapstandby

#验证
tmp下生成dfs

2.如果1失败(在hadoop100执行)
ssh-keygen -f "~/.ssh/known_hosts" -R hadoop101

#验证
tmp下生成dfs

6.启动NameNode和DataNode

start-dfs.sh

#验证
jps

7.启动yarn(在hadoop102执行)

start-yarn.sh

#验证:
jps

#显示ResourceManager + NodeManager

8.启动ZookeeperFailoverController(hadoop100和101执行)

hadoop-daemon.sh start zkfc

#验证
jps

#显示DFSZKFailoverController

七、完工~

  • 打开浏览器查看hadoop100(namenode显示active)

这里写图片描述

  • 查看hadoop101(namenode显示standby)

这里写图片描述

  • 查看各个datanode节点

这里写图片描述

  • 工作正常,上传个文件试试吧~
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值