hadoop大数据平台 高可用

首先将yarn和dfs都关闭并且将所有节点上的数据进行删除

[hadoop@server1 hadoop]$ sbin/stop-yarn.sh 
Stopping nodemanagers
Stopping resourcemanager
[hadoop@server1 hadoop]$ sbin/stop-dfs.sh 
Stopping namenodes on [server1]
Stopping datanodes
Stopping secondary namenodes [server1]
[hadoop@server1 hadoop]$ rm -rf /tmp/* ##所有节点都执行一遍

再添加一台虚拟机做主备,设置方法和原来相同,创建用户,将安装nfs,将用户目录进行挂载。
现在在主节点server1上下载zookeeper压缩包直接解压。

[hadoop@server1 ~]$ tar zxf zookeeper-3.4.14.tar.gz 

解压完成直接在server2,3,4上面进行部署。
进入目录,编辑主配置文件

[hadoop@server2 ~]$ cd zookeeper-3.4.14/conf/
[hadoop@server2 conf]$ cp zoo_sample.cfg zoo.cfg  ##只有配置文件的模版,所以复制出来进行更改
[hadoop@server2 conf]$ vim zoo.cfg 

这些东西是默认值,不用修改

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper  ##这个目录没有需要创建
clientPort=2181
##在最后添加节点
server.1=192.168.122.12:2888:3888  ##myid
server.2=192.168.122.13:2888:3888  ##两个端口一个是选举端口,一个是通信端口
server.3=192.168.122.14:2888:3888

创建目录并写入myid,每个节点都要

[hadoop@server2 conf]$ mkdir /tmp/zookeeper
[hadoop@server2 conf]$ echo 1> /tmp/zookeeper/myid
[hadoop@server3 ~]$ mkdir /tmp/zookeeper
[hadoop@server3 ~]$ echo 2> /tmp/zookeeper/myid
[hadoop@server4 ~]$ mkdir /tmp/zookeeper
[hadoop@server4 ~]$ echo 3> /tmp/zookeeper/myid

编写完成就可以去启动
直接进行调用,每个节点都要启动

[hadoop@server2 zookeeper-3.4.14]$ bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@server3 zookeeper-3.4.14]$ bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@server4 zookeeper-3.4.14]$ bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

先将三个节点启动,等待三个节点进行选举

[hadoop@server3 zookeeper-3.4.14]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader  ##选举结果,这个节点为领导者,别的为随从

启动完成如何进行访问,zk里面有命令行

[hadoop@server3 zookeeper-3.4.14]$ bin/zkCli.sh ##这样使用命令行访问
[zk: localhost:2181(CONNECTED) 0] ls
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]

在server1上编辑hadoop核心文件
现在我们做高可用,不能指定单一的ip地址,同时指定zk节点

[hadoop@server1 hadoop]$ vim etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://masters</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>192.168.122.12:2181,192.168.122.13:2181,192.168.122.14:2181</value>
    </property>
</configuration>

编辑hdfs-site.xml指定信息

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>      ##三个副本
    </property>
<property>
  <name>dfs.nameservices</name>  ##指定主节点的名字为什么
  <value>masters</value>         ##这个名字要和核心节点上的名字相同
</property>

<property>
  <name>dfs.ha.namenodes.masters</name>  ##masters有两个节点
  <value>h1,h2</value>                   ##两个节点的名字可以自己任意设置
</property>

<property>
  <name>dfs.namenode.rpc-address.masters.h1</name>  ##指定h1的rpc端口
  <value>192.168.122.11:9000</value>
</property>

<property>
  <name>dfs.namenode.http-address.masters.h1</name> ##指定h1的通讯端口
  <value>192.168.122.11:9870</value>
</property>

<property>
  <name>dfs.namenode.rpc-address.masters.h2</name>
  <value>192.168.122.15:9000</value>
</property>

<property>
  <name>dfs.namenode.http-address.masters.h2</name>
  <value>192.168.122.15:9870</value>
</property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>   ##指定日志
  <value>qjournal://192.168.122.12:8485;192.168.122.13:8485;192.168.122.14:8485/masters</value>
</property>

<property>
  <name>dfs.namenode.edits.dir</name>      ##日志存放目录
  <value>/tmp/journaldata</value>
</property>

<property>
  <name>dfs.ha.automaric-failover.enabled</name>   ##启动失败自动切换
  <value>true</value>
</property>

<property>
  <name>dfs.client.failover.proxy.provider.masters</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.private-key-files</name>##私钥地址
<value>/home/hadoop/.ssh/id_rsa</value>
</property>

<property>
<name>dfs.ha.fencing.ssh.connect.timeout</name> ##多长时间要隔离
<value>/30000</value>
</property>

</configuration>

设置完成启动日志节点,在server2,3,4上分别开启

[hadoop@server2 hadoop]$ bin/hdfs --daemon start journalnode

开启后会打开8485端口
只有第一次要手动启动日志节点,后面会自动启动节点
下来切换到master节点初始化并且将初始化文件复制到server5上,因为初始化文件默认创建在server1上5上没有

[hadoop@server1 hadoop]$ bin/hdfs namenode -format
[hadoop@server1 tmp]$ scp -r hadoop-hadoop 192.168.122.15:/tmp/

下来格式化zk

[hadoop@server1 hadoop]$ bin/hdfs zkfc -formatZK

格式化完成下来启动进程

[hadoop@server1 hadoop]$ sbin/start-dfs.sh
[hadoop@server1 hadoop]$ jps
20596 NameNode
20998 DFSZKFailoverController
21067 Jps
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值