栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS高可用搭建

HDFS高可用搭建

首先需要构建三台虚拟机(这里是示范),构建的流程可以参考这篇文章。

使用虚拟机完成Hadoop完全分布式的搭建_你可以自己看的博客-CSDN博客

在完成上篇文章的Hadoop完全分布式搭建以后,就可以做接下来的操作——搭建Zookeeper集群

首先下载Linux版的Zookeeper

链接:https://pan.baidu.com/s/1_alxqyJMAiCkORtM37RT0Q 
提取码:hjl4 
 

下载完以后使用命令进行解压

将文件上传至/usr/local下(上传方法在上述的文件中有示范)

tar -zxvf apache-zookeeper-3.7.0-bin.tar -C ~/home/hadoop/

解压后进入zookeeper的conf目录下,将zoo.sampli.cfg文件修改为zoo.cfg

cp zoo.sample.cfg zoo.cfg

修改zoo.cfg

vi cfg

将dataDir修改为自定义的目录

dataDir=/home/hadoop/zkdata

在文件末添加如下内容

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

上述配置中的1、2、3指的是zookeeper集群各节点的编号,等号右侧以冒号分隔的内容分别指的是对应的主机名、节点间的心跳端口、数据交互的端口

zoo.cfg修改完毕后,创建其中指定的dataDir目录,并且将配置中对应的节点编号保存到一个名称为myid的文件中
 

mkdir  /home/hadoop/zkdata

echo 1 >/home/hadoop/zkdata/myid

 将加压后的zookeeper文件夹分发到slave1和slave2

scp -r apache-zookeeper-3.7.0-bin root@slave1:/home/hadoop/

scp -r /home/hadoop/apache-zookeeper-3.7.0-bin root@slave2:/home/hadoop

分别在slave1和slave2上创建zkdata

mkdir  /home/hadoop/zkdata

echo 2 >/home/hadoop/zkdata/myid
mkdir  /home/hadoop/zkdata

echo 3 >/home/hadoop/zkdata/myid

 添加zookeeper环境变量

vi /etc/profile

export PATH=$PATH:/home/hadoop/apache-zookeeper-3.7.0-bin/bin

启动zookeeper,查看是否安装成功

zkServer.sh start

zkServer.sh status

 

 

 看到这样的就表面zookeeper已经安装成功

zookeeper已经安装成功了,接下来搭建HDFS HA集群

上述文章中已经安装好了HDFS集群了,现在直接去修改配置文件达到HA的配置。

首先修改core-site.xml文件

vi /usr/local/hadoop/etc/hadoop/core-site.xml

在该配置文件下面添加如下内容

 
         
                
                fs.defaultFS
                hdfs://ns
        

        
        
                ha.zookeeper.quorum
                master:2181,slave1:2181,slave2:2181
        

修改hdfs-site.xml文件

vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml

添加如下内容

        
        
                dfs.nameservices
                ns
        
        
        
                dfs.ha.namenodes.ns
                nn1,nn2
        
        
        
                dfs.namenode.rpc-address.ns.nn1
                master:8020
        
        
        
                dfs.namenode.http-address.ns.nn1
                master:9870
        
        
        
                dfs.namenode.rpc-address.ns.nn2
                slave1:8020
        
        
        
                dfs.namenode-http-address.ns.nn2
                slave1:9870
        
        
        
                dfs.namenode.shared.edits.dir
                qjournal://master:8485;slave1:8485;slave2:8485/ns
        
        
        
                dfs.journalnode.edits.dir
                /home/hadoop/ha/journal
        
        
        
                dfs.ha.automatic-failover.enabled
                true
        
        
        
                dfs.client.failover.proxy.provider.ns             org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        
        
        
                 dfs.ha.fencing.methods
                sshfence
                shell(/bin/true)
                
        
        
        
                dfs.ha.fencing.ssh.private-key-files
                /home/hadoop/.ssh/id_rsa
        

修改mapred-site.xml

vi /usr/local/hadoop/etc/hadoop/mapred-site.xml

添加如下内容

        
                mapreduce.jobhistory.address
                master:10020
        
        
                mapreduce.jobhistory.webapp.address
                master:19888
        

修改yarn-site.xml文件

vi /usr/local/hadoop/etc/hadoop/yarn-site.xml

添加如下内容

 
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        
  
        
                yarn.resourcemanager.hostname
                master
        
        
                yarn.log-aggregation-enable
                true
        

下一步修改slaves文件(由于版本不同有些是workers文件,hadoop3.x以上版本)

添加如下内容

master
slave1
slave2

将配置好的hadoop分发到slave1和slave2中

scp -r /usr/local/hadoop/etc/hadoop root@slave1:/usr/local/hadoop/etc/

scp -r /usr/local/hadoop/etc/hadoop root@slave2:/usr/local/hadoop/etc/

接下来就是HA集群所需要的各个服务了

zkServer.sh start(已启动)

启动JournalNode

hadoop-daemon.sh start journalnode

执行完后,用jps查看进程

需要包含框内的进程,即表示启动成功

然后格式化HDFS

在master中执行命令:hdfs namenode -format

执行成功后会在core-site.xml配置的hadoop.tmp.dir目录下创建对应的数据目录。结构如下:

tree tmp(命令用不了,先执行yum -y install tree)

 由于slave1也要启动NameNode,所以将此生成的目录复制到slave1对应的目录下

格式化ZKFC

hdfs zkfc -formatZK

格式化成功后会输出大量日志

 

接着启动HDFS和YARN集群

执行start-dfs.sh/start-yarn.sh命令

使用jps查看进程

 

 忽略红框中这个进程

在master节点上输入hdfs haadmin -getAllServiceState 

 我这里是切换过的,按照上述应该是master为actice

这是可以访问http://master:9870和http://slave1:9870

 

 通过jps可以看到在slave1中NameNode的进程号为57946,使用 kill -9  57946,杀死该进程。查看NameNode是否可以正常切换。输入地址:http://slave1:9870 

 

至此,HDFS高可用配置已示范完毕,下篇文章关于YARN高可用的配置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号