大数据——hadoop高可用集群搭建

hadoop高可用集群搭建

配置HDFS-HA集群

主机名ip地址namenodeQuorumPeerMainJournalNodeNodeManagerJobHistoryServerDataNodeDFSZKFailoverControllerResourceManager
hadoop01192.168.136.35
hadoop06192.168.136.39
hadoop07192.168.136.40
  • 在主节点hadoo01中配置core-site.xml:
<!--默认节点为namenode集群-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns</value>
  </property>
<!-- hdfs的临时文件的目录  -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/tmp</value>
  </property>
<!--指定zookeeper地址-->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>hadoop01:2181,hadoop06:2181,hadoop07:2181</value>
   </property>
<!-- 其他机器的root用户可访问 -->
  <property>
   <name>hadoop.proxyuser.root.hosts</name>
   <value>*</value>
  </property>
<!-- 其他root组下的用户都可以访问 -->
  <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.native.lib</name>
    <value>false</value>
    <description>Should native hadoop libraries, if present, be used.
    </description>
  </property>
  • 在主节点hadoop01中配置hdfs-site.xml:
<!--节点数,ha中可不配置-->
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
<!--指定名称服务,与core-sitexml中的一致-->
  <property>
    <name>dfs.nameservices</name>
    <value>ns</value>
  </property>
<!--指定名称下的namenode节点-->
  <property>
    <name>dfs.ha.namenodes.ns</name>
    <value>hadoop01,hadoop06</value>
   </property>
<!--rpc地址,9000端口-->
  <property>
    <name>dfs.namenode.rpc-address.ns.hadoop01</name>
    <value>hadoop01:9000</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns.hadoop06</name>
    <value>hadoop06:9000</value>
  </property>
<!--http地址,50070端口,即页面地址-->
  <property>
    <name>dfs.namenode.http-address.ns.hadoop01</name>
    <value>hadoop01:50070</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns.hadoop06</name>
    <value>hadoop06:50070</value>
  </property>
<!--namenode在journalnode(datanode)上存放数据的端口8485-->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop01:8485;hadoop06:8485;hadoop07:8485/ns</value>
  </property>
<!--开启namenode失败自动切换-->
   <property>
     <name>dfs.ha.automatic-failover.enabled</name>
     <value>true</value>
   </property>
<!--设置namenode自动切换方式-->
   <property>
     <name>dfs.client.failover.proxy.provider.ns</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>
<!--超时设置-->
   <property>
      <name>dfs.ha.fencing.ssh.connect-timeout</name>
      <value>30000</value>
   </property>
   <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
   </property>
<!--当时用HA配置集群,则不需要secondarynamenode
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>192.168.136.35:50090</value>
</property>
-->
  • 在主节点hadoop01中配置mapred-site.xml:
  <property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
  </property>
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>192.168.136.35:10020</value>
</property>
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.136.35:19888</value>
</property>
  • 在主节点hadoop01中配置yarn-site.xml:
<!--HA配置-->
<!--开启HA-->
  <property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
<!--指定resourcemanager集群id-->
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>cluster_id</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>hadoop01</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop06</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hadoop01:8088</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>hadoop06:8088</value>
  </property>
<!--配置zookeeper集群-->
  <property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop01:2181,hadoop06:2181,hadoop07:2181</value>
  </property>
<!-- Site specific YARN configuration properties -->
<!--HA模式下指定resourcemanager
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop01</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.log-aggregation-enable</name>
    <value>true</value>
  </property>
<!-- 日志保留时间设置7-->
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>

注意:如果之前有配置相同的,就不用再配置一遍了。

  • 保证三台机器一致的状态。
  • 确保集群处于关闭的状态。
  • 把主节点上配置好的文件传输到另外两台机器上:
[root@hadoop01 hadoop]# scp hdfs-site.xml hadoop06:$PWD
[root@hadoop01 hadoop]# scp hdfs-site.xml hadoop07:$PWD
[root@hadoop01 hadoop]# scp core-site.xml hadoop06:$PWD
[root@hadoop01 hadoop]# scp core-site.xml hadoop07:$PWD
[root@hadoop01 hadoop]# scp yarn-site.xml hadoop06:$PWD
[root@hadoop01 hadoop]# scp yarn-site.xml hadoop07:$PWD
  • 三台机器都要返回根目录下的hadoop文件夹:
[root@hadoop01 hadoop]# cd ../..
  • 三台机器都要删除tmp文件夹和logs文件夹:
[root@hadoop01 hadoop]# rm -rf tmp/
[root@hadoop01 hadoop]# rm -rf logs/

启动HDFS-HA集群

  • 三台机器都要启动journalnode:
[root@hadoop01 hadoop]# hadoop-daemon.sh start journalnode
  • 查看一下进程:
[root@hadoop01 hadoop]# jps

在这里插入图片描述

  • 主节点格式化hdfs:
[root@hadoop01 hadoop]# hdfs namenode -format
  • 把主节点上的tmp文件夹传到备用节点的opt目录下的hadoop目录下:
[root@hadoop01 hadoop]# scp -r tmp hadoop06:$PWD

在这里插入图片描述

  • 三台机器移动到zookeeper目录下:
[root@hadoop01 hadoop]# cd /opt/zkpr/
  • 三台机器都要启动zookeeper:
[root@hadoop01 zkpr]# zkServer.sh start
  • 主节点启动整个hadoop集群:
[root@hadoop01 zkpr]# start-all.sh
  • 在备用节点上启动resourcemanager:
[root@hadoop01 zkpr]# yarn-daemon.sh start resourcemanager
  • 主节点格式化zkfc:
[root@hadoop01 zkpr]# hdfs zkfc -formatZK
  • 主备节点启动zkfc:
[root@hadoop01 zkpr]# hadoop-daemon.sh start zkfc
  • 在主节点上启动历史服务:
[root@hadoop01 zkpr]# mr-jobhistory-daemon.sh start historyserver
  • 查看三台机器的进程:
[root@hadoop01 zkpr]# jps

在这里插入图片描述
注意:主节点上除了jps进程要有8个进程,备用节点上除了jps进程要有7个进程,参与高可用的机器上除了jps进程要有4个进程。
到这一步,hadoop高可用集群才算真正的搭建完成。

  • 关闭所有进程
[root@hadoop01 zkpr]# mr-jobhistory-daemon.sh stop historyserver
[root@hadoop01 zkpr]# hadoop-daemon.sh stop zkfc
[root@hadoop01 zkpr]# yarn-daemon.sh stop resourcemanager
[root@hadoop01 zkpr]# zkServer.sh stop
[root@hadoop01 zkpr]# stop-all.sh
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值