欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop集群搭建 HA

程序员文章站 2022-07-06 16:27:20
...

Hadoop集群搭建 HA

下载hadoop-2.7.1包

将 hadoop2.4.1 上传

解压

tar -zxvf ./hadoop-2.7.1.tar.gz

修改hadoop环境变量

export HADOOP_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el6_10.x86_64

export PATH=PATH:PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin

检验hadoop环境变量

加载源 source /etc/profile

查看版本 hadoop version

修改hadoop的配置文件

修改 hadoop-2.7.1/etc/hadoop/下的四个文件

hadoop-env.sh

配置java环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el6_10.x86_64

yarn-env.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el6_10.x86_64

core-site.xml

在文件中的configuration节点里加入
<!--zookeeper服务名-->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://yuniko</value>
</property>
<!--hadoop临时文件-->
 <property>
     <name>hadoop.tmp.dir</name>
     <value>/home/hadoop/hadoop-2.7.1/tmp</value> 
</property>
<!--zookeeper端口-->
<property>
   <name>ha.zookeeper.quorum</name>
  <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>

hdfs-site.xml

<property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>


    <property>

      <name>dfs.replication</name>

      <value>3</value>

    </property>

    <property>

      <name>dfs.namenode.name.dir</name>

      <value>file:/home/hadoop/hadoop-2.7.1/hdfs/name</value>

    </property>

    <property>

      <name>dfs.datanode.data.dir</name>

      <value>file:/home/hadoop/hadoop-2.7.1/hdfs/data</value>

    </property>

    <!--块大小-->
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property> 
<!--制定hdfs的虚拟服务名-->
<property>
<name>dfs.nameservices</name>
<value>yuniko</value>
</property> 
<!--制定hdfs的虚拟服务名下的namenode的名字-->
<property>
<name>dfs.ha.namenodes.yuniko</name>
<value>nn1,nn2</value>
</property> 
<!--内部通信端口-->
<property>
<name>dfs.namenode.rpc-address.yuniko.nn1</name>
<value>hadoop1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yuniko.nn2</name>
<value>hadoop2:9000</value>
</property>
<!--web ui通信端口-->
<property>
<name>dfs.namenode.http-address.yuniko.nn1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yuniko.nn2</name>
<value>hadoop2:50070</value>
</property>
<!--指定journalnode数据共享目录-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/yuniko</value>
</property>
<!--本地共享数据存放-->
<property>
<name>hadoop.journalnode.edits.dir</name>
<value>/home/hadoop/hadoop-2.7.1/journaldata</value>
</property> 
<!--namenode失败进行自动切换的主类-->
<property>  
    <name>dfs.client.failover.proxy.provider.yuniko</name>  
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
</property>  
<!--指定SSh公钥位置-->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
  </property>
<!--防止多个namenode脑裂,采用某种方式杀死其中一个-->
<property>  
    <name>dfs.ha.fencing.methods</name>  
    <value>sshfence</value> 
</property>  

yarn-site.xml

  <property>

          <name>yarn.nodemanager.aux-services</name>

          <value>mapreduce_shuffle</value>

  </property>

  <property>

           <name>yarn.resourcemanager.address</name>

           <value>hadoop1:8032</value>

  </property>

  <property>

          <name>yarn.resourcemanager.scheduler.address</name>

          <value>hadoop1:8030</value>

  </property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

         <name>yarn.resourcemanager.resource-tracker.address</name>

         <value>hadoop1:8031</value>

     </property>

     <property>

         <name>yarn.resourcemanager.admin.address</name>

         <value>hadoop1:8033</value>

     </property>

     <property>

         <name>yarn.resourcemanager.webapp.address</name>

         <value>hadoop1:8088</value>

     </property>

 

mapred-site.xml

mapred-site.xml.template 是存在的 
mapred-site.xml不存在
注意:先要copy一份
cp mapred-site.xml.template mapred-site.xml
然后编辑
vim mapred-site.xml 
新增以下内容
<property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop1:10020</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop1:19888</value>

  </property>

格式化Namenode 节点

hdfs namenode - format

添加从节点

etc/hadoop/slaves //文件下添加Dataname节点 
    
    
hadoop01
hadoop02
hadoop03

复制配置信息 发送到其他机器 (环境变量+hadoop)

启动zk

zkServer.sh start

jps查看

2674 Jps
2647 QuorumPeerMain

启动journalnode服务(每台hadoop机器)

hadoop-daemon.sh start journalnode

jps查看

2739 JournalNo de
2788 Jps
2647 QuorumPeerMain

挑选两个namenode之中的一台来格式化

hdfs namenode -format

然后启动

hadoop-daemonsh start namenode

在另一台namenode的机子上拉取元数据

hdfs namenode -bootstrapStandby

格式化zkfc(在namenode节点)

hdfs zkfc -formatZK

浏览网页端口 hadoop1 :50070 查看节点状态

使用命令查看hadoop1节点状态

hdfs haadmin -getServiceState nn1

active

使用命令查看hadoop2节点状态

hdfs haadmin -getServiceState nn2

standby

在hadoop1中使用进程杀死 Namenode

kill -9 namenoded的id值

重新按照上述命令 浏览 hadoop1的和hadoop’2的值

hadoop2 状态变为active

在使用命令将hadoop1的namenode启动

hadoop-daemonsh start namenode

浏览hadoop1的状态

hadoop1 为 standby hadoop2为 active

HA高可用配置完成

可能出现的问题

指定默认文件系统名称为zookeeper的配置服务名

fs.defaultFS hdfs://yuniko

slaves 奴隶名 配置三台主机的名(三台datanode)

/etc /hosts 下主机名对相应

hdfs-site.xml中指定公钥位置

多次使用namenode格式化产生clusterID不对应