Spark学习_1(Hadoop集群HA模式安装)

1. 引言:

在Hadoop高可用搭建之前首先要准备好,hadoop,jdk,zookeeper的安装包,将安装包解压到合适的位置,本文设置路径位置位于/usr/java下,然后安装解压之后的文件夹名分别为hadoop,jdk1.8,zookeeper。具体路径位置可自由设置,当但你配置Hadoop中的xml文件时,文件路径必须对应好,否则肯定会出错的。
我这里用了三台虚拟机来搭建HA模式,各插件的位置如下图所示:


其中master节点和slave1节点安装namenode,slave1和slave2节点上安装datanode,zookeeper和journalnoe三台都做配置,ZKFC配置在master和slave1上。

2. 准备工作:

2.1. 免密配置:

免密配置十分重要,配置完成之后注意各台主机之间能否相互免密登录
1、cd .ssh
2、ssh-keygen -t rsa
3、ssh-copy-id root@master
ssh-copy-id root@slave1
ssh-copy-id root@slave2
注意:三台机器都要需要做这些操作
查看是否配置成功,相互通过ssh master(其他主机名),如果登录其他主机不需要密码则设置成功

2.2. 设置主机ip:

这里的hosts文件,还有之后配好了的zookeeper文件夹,hadoop文件夹都要分发到其他两台机器,注意文件的绝对路径不要发生更改!!!
vi /etc/hosts
192.168.43.10 master
192.168.43.11 slave1
192.168.43.12 slave2
(类似即可)

2.3. zookeeper配置:

安装解压
修改conf/zoo.cfg文件:

cp zoo_sample.cfg  zoo.cfg
vi zoo.cfg
dataDir=/usr/java/zk
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

新建usr/java/zk目录并在其中新建文件myid,3台虚拟机分别赋值1,2,3

vi /usr/java/zk/myid

在三台虚拟机上依次启动zookeeper集群,查看状态

zkServer.sh start	//启动命令
zkServer.sh status	//查看状态

此时三台机器应该是一台leader,两台follower状态

3. 配置安装:

3.1Hadoop的下载

官网下载对应版本,然后移动到合适的文件路径,解压安装包。修改profile文件

vi /etc/profile
export HADOOP_HOME=/usr/java/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

测试是否安装成功输入命令hadoop version

3.2core-site.xml的配置

cd /usr/java/hadoop/etc/hadoop	//注:此处路径根据自己实际情况本文
//将Hadoop解压在/url/java目录下
vi core-site.xml
修改core-site.xml中文件如下:
<configuration>
 <property>
<!-- 指定hdfs的nameservice为mycluster --> 
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
 <property>
<!-- 指定hadoop临时目录 -->
  <name>hadoop.tmp.dir</name>
  <value>/usr/java/hadoop/ha</value>
 </property>
<property>
<!-- 指定zookeeper地址 --> 
  <name>ha.zookeeper.quorum</name>
  <value>master:2181,slave1:2181,slave2:2181</value>
 </property>
</configuration>

3.3hdfs-site.xml的配置

<configuration>
<property>
<!-- 指定hdfs的nameservice为mycluster --> 
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
<!-- 指定mycluster下两个namenode,nn1和nn2 --> 
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
<!-- 指定nn1的rpc通信地址--> 
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>master:8020</value>
</property>
<property>
<!-- 指定nn2的rpc通信地址-->
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>slave1:8020</value>
</property>
<property>
  <!-- 指定nn1的http通信地址-->
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>master:50070</value>
</property>
<property>
<!-- 指定nn2的http通信地址-->
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>slave1:50070</value>
</property>
<property>
<!-- 指定namenode元数据在journalnode的存放位置-->
  <name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<property>
<!-- 指定journalnode在本地磁盘存放位置-->
  <name>dfs.journalnode.edits.dir</name>
  <value>/usr/java/hadoop/ha/jn</value>
</property>
<property>
<!--设置文件在hdfs中的备份数-->
   <name>dfs.replication</name>
   <value>2</value>
</property>
<property>
<!-- 配置失败自动切换实现方式-->
    <name>dfs.client.failover.proxy.provider.mycluster</name>  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<!-- 配置隔离机制方法,同一时刻只有一台服务器对外响应-->
     <name>dfs.ha.fencing.methods</name>
     <value>sshfence</value>
</property>
<property>
<!-- 配置ssh免密登录-->
         <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
 </property>
 <property>
<!--开启Automatic Failover模式,即主动主备切换-->
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

3.4.slaves的修改

slaves文件也位于hadoop/etc/hadoop下

slave1
slave2

4.启动

第一次启动

第一次启动需要格式化所以步骤相对较多
1、首先都(三台电脑都要启动)启动journalnode

hadoop-daemon.sh start journalnode

2、启动zookeeper集群(三台都要启动)

zkServer.sh start

3、格式化其中一个namenode(注:一个)

hdfs namenode -format
hadoop-daemon.sh start namenode

4、在另外一个namenode同步信息

hdfs namenode -bootstrapStandby

5、初始化zkfc(两台namenode任意一台)

hdfs zkfc -formatZK

6、关闭hdfs。

stop-dfs.sh

7、启动hdfs

start-dfs.sh

第n次启动

1、启动zk

zkServer.sh start 

2、然后

start-dfs.sh

5、总结(遇到的坑)

两台电脑不能自动切换主备状态

原因可能是:
1、主机之间没有完全ssh免密登录(我就遇到了,个别机器无法免密登录到其他机器)
2、xml配置文件关于zookeeper的出现了问题,zookeepe配置出错,zookeeper集群没有正常运行
3、系统里面缺少fuser

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值