频道栏目
首页 > 网络 > 云计算 > 正文

Hadoop2.6.1集群部署之手工切换HA

2017-12-16 13:35:38         来源:Liri  
收藏   我要投稿

1. 引言

在生产环境中NameNode的高可用是非常重要的,一旦NameNode宕机,那么整合集群就不能用了,在本篇博客中就主要介绍一下Hadoop2.6.1的HA部署(手动切换),在本篇博客中博主使用五台干净的机器从零开始搭建Hadoop集群环境,下面就是我使用的环境:

操作系统为:Centos6.7 jdk的版本为:1.7 jdk的安装路径为:/usr/local/jdk hadoop的版本为:2.6.1 hadoop的安装路径为:/usr/local/hadoop 使用root用户进行集群搭建

接下来我将按照下表进行搭建Hadoop集群:

HOST名称 ip地址 运行的进程
hadoop1 192.168.159.130 NameNode,ResourceManger,JournalNode
hadoop2 192.168.159.131 NameNode,JournalNode
hadoop3 192.168.159.132 DataNode,NodeManger,JournalNode
hadoop4 192.168.159.133 DataNode,NodeManger
hadoop5 192.168.159.134 DataNode,NodeManger

注:JournalNode进程主要用于NameNode的数据同步。

2. 搭建Hadoop2.6.1 集群

2.1 修改hostname

在hadoop1机器上修改hostname

//编辑文件
vim /etc/sysconfig/network
//修改主机名是hadoop1,(注意hostname的大小写)
hostname hadoop1
//命令行下修改hostname
hostname hadoop1

这里写图片描述

同理在hadoop2,hadoop3,hadoop4,hadoop5执行相同的命令,如下图所示

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2.2 建立hostname和ip的映射关系

为了部署集群方便,因此我们建立了ip和主机名称的映射,过程如下:

修改/etc/hosts文件
//编辑hosts文件
vim /etc/hosts
//建立ip和host的映射关系
192.168.159.130 hadoop1
192.168.159.131 hadoop2
192.168.159.132 hadoop3
192.168.159.133 hadoop4
192.168.159.134 hadoop5

这里写图片描述

同理在hadoop2,hadoop3,hadoop4,hadoop5也要建立ip和host的映射关系,过程和hadoop1完全相同。

2.3 关闭防火墙

在hadoop集群中会经常发生 机器和机器之间的交互,为了避免因为防火墙产生的意外故障,因此我们需要将防火墙关闭,过程如下:

//关闭防火墙
service iptables stop
//查看防火墙状态
service iptables status
//关闭防火墙的自动运行
chkconfig iptables off

2.4 SSH免密码登陆

ssh免密码登陆,由于要配置HA,在SSH免密码登录的时候需要注意两点,第一:NameNode之间要相互可以免密码登录,第二NameNode到DataNode的免密码登录

在Hadoop1机器设置免密码登录
//创建密钥,一直点确定到结束
ssh-keygen -t rsa
//设置NameNode的相互免密码登录
ssh-copy-id -i hadoop2
//设置NameNode到DataNode的免密码登录
ssh-copy-id -i hadoop3
ssh-copy-id -i hadoop4
ssh-copy-id -i hadoop5
在Hadoop2机器设置免密码登录
//创建密钥,一直点确定到结束
ssh-keygen -t rsa
//设置NameNode的相互免密码登录
ssh-copy-id -i hadoop1
//设置NameNode到DataNode的免密码登录
ssh-copy-id -i hadoop3
ssh-copy-id -i hadoop4
ssh-copy-id -i hadoop5

2.5 安装JDK

解压jdk,并修改名称
//将jdk解压到/usr/local
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local/
//进入到/usr/local
cd /usr/local
//修改文件夹的名称
mv jdk1.7.0_45 jdk
修改环境变量
//修改配置文件
vim /etc/profile
//需要添加的内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

这里写图片描述

将hadoop1的jdk复制到其他节点
//将jdk复制到hadoop2,hadoop3,hadoop4,hadoop5
scp -r /usr/local/jdk hadoop2:/usr/local/
scp -r /usr/local/jdk hadoop3:/usr/local/
scp -r /usr/local/jdk hadoop4:/usr/local/
scp -r /usr/local/jdk hadoop5:/usr/local/
//将环境变量复制到hadoop2,hadoop3,hadoop4,hadoop5
scp /etc/profile hadoop2:/etc/profile
scp /etc/profile hadoop3:/etc/profile
scp /etc/profile hadoop4:/etc/profile
scp /etc/profile hadoop5:/etc/profile
重新加载各个节点的环境变量
//分别在hadoop1,hadoop2,hadoop3,hadoop4,hadoop5执行下面命令(在五台机器上都执行)
source /etc/profile
分别在五台机器上验证Java是否安装成功
//判断Java版本
java -version

这里写图片描述

2.6 hadoop2.6.1的集群部署

将hadoop解压并且改名
//解压hadoop
tar -zxvf hadoop-2.6.1.tar.gz -C /usr/local/
//进入/usr/local目录
cd /usr/local
//将hadoop-2.6.1改名为hadoop
mv hadoop-2.6.1 hadoop
修改配置文件hadoop-env.sh
//修改hadoop-env.sh配置文件
vim etc/hadoop/hadoop-env.sh
//修改jdk的环境变量
export JAVA_HOME=/usr/local/jdk

这里写图片描述

修改配置文件core-site.xml



fs.defaultFS
hdfs://cluster1


hadoop.tmp.dir
/usr/local/hadoop/tmp

这里写图片描述

修改配置文件hdfs-site.xml



dfs.replication
3


dfs.nameservices
cluster1


dfs.ha.namenodes.cluster1
hadoopOne,hadoopTwo


dfs.namenode.rpc-address.cluster1.hadoopOne
hadoop1:9000


dfs.namenode.http-address.cluster1.hadoopOne
hadoop1:50070


dfs.namenode.rpc-address.cluster1.hadoopTwo
hadoop2:9000


dfs.namenode.http-address.cluster1.hadoopTwo
hadoop2:50070


dfs.ha.automatic-failover.enabled.cluster1
false


dfs.namenode.shared.edits.dir
qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/cluster1


dfs.journalnode.edits.dir
/usr/local/hadoop/journal


dfs.ha.fencing.methods
sshfence


dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa


dfs.client.failover.proxy.provider.cluster1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

这里写图片描述

修改配置文件yarn-site.xml



yarn.resourcemanager.hostname
hadoop1


yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler

这里写图片描述

修改配置文件mapred-site.xml
//首先修改模板文件为配置文件
mv mapred-site.xml.template mapred-site.xml



mapreduce.framework.name
yarn

这里写图片描述

设置从节点的位置
//编辑slaves文件
vim slaves
//slaves的内容为:
hadoop3
hadoop4
hadoop5

这里写图片描述

将hadoop分发到hadoop2,hadoop3,hadoop4,hadoop5
scp -r /usr/local/hadoop hadoop2:/usr/local
scp -r /usr/local/hadoop hadoop3:/usr/local
scp -r /usr/local/hadoop hadoop4:/usr/local
scp -r /usr/local/hadoop hadoop5:/usr/local
启动journalnode集群
//分别在hadoop1,hadoop2,hadoop3上启动journalnode
hadoop/sbin/hadoop-daemon.sh start journalnode

这里写图片描述

格式化NameNode并启动集群
//在Hadoop1上格式化集群
hadoop/bin/hdfs namenode -format
//在Hadoop1上启动NameNode,此时NameNode默认是standby状态
hadoop/sbin/hadoop-daemon.sh start namenode
//在hadoop2上格式化集群
hadoop/bin/hdfs namenode -bootstrapStandby
//在hadoop2上启动NameNode,此时NameNode默认是standby状态
hadoop/sbin/hadoop-daemon.sh start namenode
//手动切换NameNode的状态(注意是使用的逻辑名切换)
hadoop/bin/hdfs haadmin -failover --forceactive hadoopOne hadoopTwo
//在NameNode(hadoop1或者hadoop2)上执行,启动datanode
hadoop/sbin/hadoop-daemons.sh start datanode
//在NameNode(hadoop1或者hadoop2)上执行,启动resourcemanager和nodemanager
hadoop/sbin/start-yarn.sh start resourcemanager

这里写图片描述

这里写图片描述

2.7 验证hadoop是否安装成功

使用命令验证
//查看java进程
jps
从web界面查看(http://hadoop1:50070

这里写图片描述

上一篇:常用注解分析@RequestMapping@AutoWired@Resource@component
下一篇:SparkStream例子HdfsWordCount(代码实例)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站