大数据学习之路(准备篇)---------(二)「HA」Hadoop-2.9.2集群搭建

在上一篇中已经介绍了Linux虚拟机的搭建,那么下一步我们就应该来搭建我们的Hadoop集群了。系列主要增加了HA高可用和YARN,一个充分解决了集群环境中namenode挂掉的情况,一个解决了mapreduce计算的缺陷。那么下面我们来具体操作吧。

集群目标

一、安排

在进行HA配置之前需要对HA的基本概念有所了解,并且设计好HA的集群节点。在之前1.0的时候NameNode 存在单点故障,虽然有 SecorndaryNameNode,但是它并不是NameNode的备份,它只是 NameNode 的一个助理,协助 NameNode 工作,对 fsimage 和 edits 文件进行合并,并推送给 NameNode ,防止因 edits 文件过大,导致 NameNode 重启变得缓慢。

  1. 各节点简称如下:
    NN 表示 NameNode
    DN 表示 DataNode
    ZK 表示 ZooKeeper
    JN 表示 JournalNode
    RM 表示 ResouceManager
    DM 表示 DataManager
  2. 各节点安排如下:
    下面表格中,1表示该机器上有此节点,总体集群是:两台namenode(3核2G)、三台Zookeeper(ZK的投票机制决定了要使用大于1的奇数台ZK)、一台resourceManager(node1上),三台datanode(1核1.5G),后续如果不够用可以再加。
NNDNZKZKFCJNRNDM
node11111
node211111
node31111
node4111

二、安装步骤

安装Hadoop2.9.2

在安装之前我们先进行集群免密配置
1、首先在本地生成公钥和私钥。
ssh-keygen -t rsa #后面都按回车跳过即可(三次) # 运行结束后在 ~/.ssh/下生成两个新文件: id_rsa.pub和id_rsa
2、将公钥拷贝到远程主机
ssh-copy-id username@host # username是用户名 host是主机的地址 #远程主机将用户的公钥保存在 ~/.ssh/authorized_keys文件中
第二步是每台机器都要操作,包括本机。
将下载好的Hadoop安装包上传linux,在root创建一个soft文件夹,以后Hadoop的组件全部放入到这个文件夹下管理。
在这里插入图片描述
然后执行:

tar -zxvf hadoop-2.9.2.tar.gz
mv hadoop-2.9.2.tar.gz hadoop

解压好后,我们最主要修改三个文件,他们都在/root/soft/hadoop/etc/hadoop/

配置hadoop-env.sh

这里主要是配置java的路径,默认使用的是  `${JAVA_HOME}`,还是建议换成绝对的路径
 export JAVA_HOME=${JAVA_HOME}
 export JAVA_HOME=/usr/java/jdk1.8

配置hadoop-hdfs.xml

<property>
    <name>dfs.nameservices</name>
    <value>JPFee</value>
    <description>这个是集群的唯一标示,之后都会用到,官网指南上给的例子是mycluster</description>
</property>
<property>
    <name>dfs.ha.namenodes.JPFee</name>
    <value>nn1,nn2</value>
    <description>配置两个namenode的名称,注意namenodes的s和后面的JPFee,JPFee就是上面配置的nameservice</description>
</property>
<property>
    <name>dfs.namenode.rpc-address.JPFee.nn1</name>
    <value>node1:8020</value>
    <description>配置nn1的rpc地址(该地址是hdfs://node1:8020的地址)</description>
</property>
<property>
    <name>dfs.namenode.rpc-address.JPFee.nn2</name>
    <value>node2:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.JPFee.nn1</name>
  <value>node1:50070</value>
  <description>配置nn1的http的地址,通过这个地址能够访问nn1的web界面</description>
</property>
 <property>
  <name>dfs.namenode.http-address.JPFee.nn2</name>
  <value>node2:50070</value>
</property>
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    <description>开启自动切换</description>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/JPFee</value>
  <description>配置edits.dir,这个是为了投票将某个namenode标记为active的ZK地址,有三个ZK,分别在node1/node2/node3上,注意最后面的ptbirdns</description>  
</property>
<property>
  <name>dfs.client.failover.proxy.provider.JPFee</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  <description>这是默认的配置</description>
</property>
<property>
   <name>dfs.ha.fencing.methods</name>
   <value>sshfence</value>
   <description>配置通信方式为ssh</description>
</property>
<property>
   <name>dfs.ha.fencing.ssh.private-key-files</name>
   <value>/root/.ssh/id_rsa</value>
   <description>SSH免密钥登录的私钥</description>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/hadoop/jndata</value>
  <description>配置journalnode的目录,主要存放fsImage等namenode的元数据,为了切换</description>
</property>

配置core-site.xml

<!-- do not know which node is avtive, so do not use ip address to replace hdfs://ptbirdns-->
<!-- and ptbirdns is the 'nameservice' in hdfs-site.xml-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://JPFee</value>
  <description>上面的JPFee就是在hdfs-site中配置的nameservice</description>
</property>
<property>
  <name>ha.zookeeper.quorum</name>
  <value>node1:2181,node2:2181,node3:2181</value>
  <description>配置zookeeper的集群地址,默认端口2181</description>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop/tmp</value>
  <description>配置临时目录</description>
</property>

配置slaves

node2
node3
node4

配置Zookeeper

先去这个地址去下载zookeeper
下下来上传到soft下解压就行。,然后吧刚才的hadoop和zookeeper一块配置到环境变量中。

vim /etc/profile
#java
export JAVA_HOME=/mnt/software/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
#zookeeper home
export ZOOKEEPER_HOME=/root/soft/zookeeper/bin
export PATH=$PATH:$ZOOKEEPER_HOME
#HADOOP_HOME
 export HADOOP_HOME=/root/soft/hadoop
 export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

写完后不要忘了sourcem /etc/profile
配置 conf/zoo.sample.cfg ,当然需要改成zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/zookeeper/
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#
#zookeeper cluster config
#the "server.x":the x is the ID of the zookeeper cluster
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
最主要把dataDir这个文件夹配好,里面要配置myid。zookeeper cluster这个server后面1对应你的机器的myid。

配置完之后一定要检查一下你的集群所有机器的防火墙是否关闭,最好设置成开机关闭,不然zookeeper报错。

systemctl status firewalld.service    #查看firewalld状态
systemctl stop firewalld       #关闭
systemctl disable firewalld     #开机自动关闭   
chkconfig --list|grep network

在上述条件都配置好了之后。
在启动Hadoop之前先启动三台zookeeper。

zkServer.sh start

根据上面的配置条件,在2,3,4上分别执行以下命令开启journalnode

hadoop-daemon.sh start journalnode

在node1上进行format操作。

hadoop namenode -format

在这里插入图片描述
format成功(出现successfully)之后,需要将将node1的namenode启动,此时node1就是active的namenode
启动成功后,node1的元数据 /opt/Hadoop/tmp/dfs/name/current/fsimage_* 拷贝到node2【在没有格式化的namenode也就是node2上执行 hdfs namenode -bootstrapStandby】说明地址:指南

hdfs namenode -bootstrapStandby

在这里插入图片描述
上述操作成功后,停止dfs再重新启动dfs,此时node1不一定是active,可能node2是active。

 ./sbin/stop-dfs.sh
 ./sbin/start-dfs.sh

然后在其中一个namenode中初始化 zkfc ,官网地址:指南
这个命令一定要手打,不知道为什么,复制粘贴就是不对。

 ./bin/hdfs zkfc –formatZK

在这里插入图片描述
上述操作完成后,再次stop和start

./sbin/stop-dfs.sh
./sbin/start-dfs.sh

当出现这个界面,证明你已经安装好啦。
在这里插入图片描述
这节有点偏长了,下一节我们在配置MapReduce和YARN吧。
关注本公众号,分享视频教程,分享工作中遇到的问题,一起学习大数据。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值