Hadoop---HA集群搭建
来源:互联网 发布:济南网络推广招聘 编辑:程序博客网 时间:2024/05/22 05:09
1)hadoop-ha集群运作机制介绍
所谓HA,即高可用(7*24小时不中断服务)
实现高可用最关键的是消除单点故障
hadoop-ha严格来说应该分成各个组件的HA机制
2)HDFS的HA机制
通过双namenode消除单点故障
双namenode协调工作的要点:
A、元数据管理方式需要改变:
内存中各自保存一份元数据
Edits日志只能有一份,只有Active状态的namenode节点可以做写操作
两个namenode都可以读取edits
共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)
B、需要一个状态管理功能模块
实现了一个zkfailover,常驻在每一个namenode所在的节点
每一个zkfailover负责监控自己所在的namenode节点,利用zk进行状态标识
当需要进行状态切换时,由zkfailover来负责切换
切换时需要防止brain split现象的发生
上述过程的图示:
3)HA集群搭建
搭建环境:CentOS release 6.5 (Final) + jdk1.8.0_131
这里使用三台服务器来搭建,分别为node1、node2、node3;
对应的ip为:192.168.1.11、192.168.1.12、192.168.1.13
在搭建之前先配置三台机器之间的SSH免密登录和搭建zookeeper集群。参考:集群内部的SSH密钥认证登陆机制配置(免密登陆)和 ZooKeeper-3.4.6分布式集群安装。
1.主机名称与IP地址的映射配置
HDFS集群中具有两个关键的角色:namenode和datanode。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点都与namenode结点相连接,所以,在配置的hdfs集群的时候,每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息,方便结点之间的相互通信。
以node1为例:
vi /etc/hosts
进入配置文件hosts,配置对应映射
192.168.1.11 node1192.168.1.12 node2192.168.1.13 node3
2.关闭防火墙
//关闭防火墙service iptables stop // 防火墙开机不自动启动 chkconfig iptables off
3.安装Hadoop
我这里下载的是hadoop-2.6.5.tar.gz,执行
tar -zxvf hadoop-2.6.5.tar.gz -C /home/hadoop/app/
解压到/home/hadoop/app目录下,结构目录如下:
bin #可执行文件(hadoop的功能操作命令)etc #配置文件include lib #本地库文件(数据压缩编解码、本地文件系统操作)libexec LICENSE.txtNOTICE.txt README.txtsbin #可执行文件(hadoop集群进程管理的操作命令)share #开发所需要的jar包及用户帮助文档
4.修改配置文件
进入etc/hadoop/目录下
cd hadoop-2.6.5/etc/hadoop/
Hadoop集群需要修改的配置文件总共为6个,分别是
(1)hadoop-env.sh #配置jdk环境
(2)core-site.xml #配置Hadoop相关服务
(3)hdfs-site.xml #配置hdfs系统信息
(4) mapred-site.xml #配置mapreduce相关信息
(5)yarn-site.xml #配置yarn平台信息
(6)slaves #配置DataNode结点信息
如下图:
4.1 修改hadoop-env.sh 文件
//指定jdkJAVA_HOME = /home/hadoop/app/jdk1.8.0_131
4.2 修改core-site.xml文件,配置hdfs系统
<configuration><!-- 指定hdfs的nameservice为ns1 --><property><name>fs.defaultFS</name><value>hdfs://ns1/</value></property><!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/home/hadoop/app/hadoop-2.6.5/tmp</value></property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>node1:2181,node2:2181,node3:2181</value></property>
4.3 修改hdfs-site.xml文件
<configuration><!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 --><property> <name>dfs.nameservices</name> <value>ns1</value></property><!-- ns1下面有两个NameNode,分别是nn1,nn2 --><property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>node1:9000</value></property><!-- nn1的http通信地址 --><property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>node1:50070</value></property><!-- nn2的RPC通信地址 --><property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>node2:9000</value></property><!-- nn2的http通信地址 --><property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>node2:50070</value></property><!-- 指定NameNode的元数据在JournalNode上的存放位置 --><property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node1:8485;node2:8485;node3:8485/ns1</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/app/hadoop-2.6.5/journaldata</value></property><!-- 开启NameNode失败自动切换 --><property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value></property><!-- 配置失败自动切换实现方式 --><property> <name>dfs.client.failover.proxy.provider.ns1</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><!-- 使用sshfence隔离机制时需要ssh免登陆 --><property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value></property><!-- 配置sshfence隔离机制超时时间 --><property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>10000</value></property><!-- 配置复本数量,默认为3 --><property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
4.4 修改mapred-site.xml文件
<!-- 指定为yarn平台运行mapreduce --><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
4.5 修改yarn-site.xml文件,配置yarn-ha机制
<configuration><!-- Site specific YARN configuration properties --><!-- 开启RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分别指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>node1</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node2</value></property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>node1:2181,node2:2181,node3:2181</value></property><!-- 指定shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>
4.6修改slaves文件,配置DataNode结点
node1node2node3
5.复制分发Hadoop包至node2和node3
将配置文件修改好后,进入/app目录,执行
//复制分发到node2scp -r hadoop-2.6.5 node2:/home/hadoop/app//复制分发到node3scp -r hadoop-2.6.5 node3:/home/hadoop/app
6.配置Hadoop环境变量
配置方法与配置JAVA_HOME相同,参见Linux下JAVA_HOME配置
7.启动Hadoop-HA集群
注意:严格按照下面的步骤启动
7.1 启动zookeeper集群
zookeeper集群的搭建,参考 ZooKeeper-3.4.6分布式集群安装,启动zookeeper集群.
7.2 手动启动 journalnode
分别进入各结点的hadoop-2.6.5/sbin/目录下,执行
//启动 journalnode ./hadoop-daemon.sh start journalnode
- 7.3 格式化HDFS
只在node1上执行:
hdfs namenode -format//将格式化生成的集群id文件(tmp文件夹)复制到备用namenode上: scp -r tmp/ node2:/home/hadoop/app/hadoop-2.6.0
- 7.4格式化ZKFC
只在node1上执行:
hdfs zkfc -formatZK
- 7.5 启动hdfs和yarn平台
//启动hdfsstart-hdfs.sh//启动yarn平台start-yarn.sh//或者:直接启动hdfs+yarn服务: sbin/start-all.sh
4)登录web浏览器查看
使用web浏览器访问http://node1:50070,页面显示结果如下图:
表示此时node1状态为standby,为备用namenode结点,再访问http://node2:50070,
node2的状态为active,说明此时node2为工作状态的namenode,
此时若node2的namenode进程发生故障,则node1会被激活,将正式成为工作状态的namenode.
这里我们就直接杀死node2的namenode进程来模仿故障,
再次访问http://node2:50070,
再访问http://node1:50070,
node1已被激活,成功接管namenode工作,实现单点故障转移.
可再到node2结点上进入hadoop-2.6.5/sbin/目录下,执行
./hadoop-daemon.sh start namenode
再次启动node2,作为namenode备用结点
- Hadoop HA 集群搭建
- 搭建Hadoop HA集群
- Hadoop HA集群搭建
- Hadoop---HA集群搭建
- 【笔记】Hadoop-HA集群搭建
- hadoop HA集群的搭建
- hadoop集群和HA搭建
- Hadoop-2.6.0集群HA搭建
- hadoop HA 高可用集群部署搭建
- hadoop集群搭建HDFS、HA、 YARN
- hadoop集群搭建HDFS、HA、 YARN
- Hadoop HA高可用集群搭建
- Hadoop高可用集群搭建(HA)
- hadoop HA集群搭建(red hat)
- 基于docker的hadoop HA 集群搭建
- Hadoop HA 高可用集群搭建
- Hadoop集群HA高可用搭建
- 基于HA机制的Hadoop集群搭建
- pytorch 0.3发布(0.3.0b0),更新信息以及更新步骤
- 批处理 重定向
- Day17—File 类、I/O流
- [知了堂学习笔记] javascript数据类型、运算符、控制语句
- matlab求解非线性规划问题
- Hadoop---HA集群搭建
- 整理一下关于各种格式转换的问题
- 进程的环境变量
- 深入理解Java的接口和抽象类
- 【知了堂学习笔记】_JavaScript知识(二)
- Cow Contest POJ
- eclipse集成okhttp+rxjava+retrofit步骤
- 算法模板——线段树之Lazy标记
- 如何统一jdk版本