hadoop2.6.0高可靠及yarn 高可靠搭建
| 机器名 | IP | 安装软件 | 运行进程 |
| namenode1 | 192.168.3.161 | hadoop | NameNode、DFSZKFailoverController、ResourceManager |
| namenode2 | 192.168.3.162 | hadoop | NameNode、DFSZKFailoverController、ResourceManager |
| datanode1 | 192.168.3.163 | hadoop,zookeeper | DataNode、QuorumPeerMain、JournalNode、NodeManager |
| datanode2 | 192.168.3.164 | hadoop,zookeeper | DataNode、QuorumPeerMain、JournalNode、NodeManager |
| datanode3 | 192.168.3.165 | hadoop | DataNode、NodeManager |
| datanode4 | 192.168.3.166 | hadoop,zookeeper | DataNode、QuorumPeerMain、JournalNode、NodeManager |
- 192.168.3.161 namenode1
- 192.168.3.162 namenode2
- 192.168.3.163 datanode1
- 192.168.3.164 datanode2
- 192.168.3.165 datanode3
- 192.168.3.166 datanode4
- export JAVA_HOME=/usr/java/jdk1.7.0_67
- export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- export PATH=$PATH:$JAVA_HOME/bin
- export HADOOP_HOME=/home/hadoop/hadoop_installs/hadoop-2.6.0
- service iptables stop
centos7好像把防火墙修改成firewalld,可以试试service firewalld stop
- chkconfig iptables off
- server.1=datanode1:2888:3888
- server.2=datanode2:2888:3888
- server.3=datanode4:2888:3888
然后分别在datanode1,2,4节点中创建一个tmp文件夹 ,mkdir /hadoop/zookeeper-3.4.5/tmp ,再创建一个空文件 touch /hadoop/zookeeper-3.4.5/tmp/myid 最后向该文件写入ID,datanode1执行echo 1 > /hadoop/zookeeper-3.4.5/tmp/myid,datanode1执行echo 2 > /hadoop/zookeeper-3.4.5/tmp/myid,datanode3执行echo 3 > /hadoop/zookeeper-3.4.5/tmp/myid
- export JAVA_HOME=/usr/java/jdk1.7.0_67
- export HADOOP_LOG_DIR=/data/log/hadoop
- <configuration>
- <!-- 指定hdfs的nameservice为ns1,是NameNode的URI。hdfs://主机名:端口/ -->
- <property>
- <name>fs.defaultFS</name>
- <value>hdfs://gagcluster</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- <!-- 指定hadoop临时目录 -->
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/data/hadoop/tmp</value>
- <description>Abase for other temporary directories.</description>
- </property>
- <!--指定可以在任何IP访问-->
- <property>
- <name>hadoop.proxyuser.hduser.hosts</name>
- <value>*</value>
- </property>
- <!--指定所有用户可以访问-->
- <property>
- <name>hadoop.proxyuser.hduser.groups</name>
- <value>*</value>
- </property>
- <!-- 指定zookeeper地址 -->
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>dataNode1:2181,dataNode2:2181,dataNode4:2181</value>
- </property>
- </configuration>
- <configuration>
- <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
- <property>
- <name>dfs.nameservices</name>
- <value>gagcluster</value>
- </property>
- <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
- <property>
- <name>dfs.ha.namenodes.gagcluster</name>
- <value>nn1,nn2</value>
- </property>
- <!-- nn1的RPC通信地址 -->
- <property>
- <name>dfs.namenode.rpc-address.gagcluster.nn1</name>
- <value>namenode1:9000</value>
- </property>
- <!-- nn2的RPC通信地址 -->
- <property>
- <name>dfs.namenode.rpc-address.gagcluster.nn2</name>
- <value>namenode2:9000</value>
- </property>
- <!-- nn1的http通信地址 -->
- <property>
- <name>dfs.namenode.http-address.gagcluster.nn1</name>
- <value>namenode1:50070</value>
- </property>
- <!-- nn2的http通信地址 -->
- <property>
- <name>dfs.namenode.http-address.gagcluster.nn2</name>
- <value>namenode2:50070</value>
- </property>
- <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
- <property>
- <name>dfs.namenode.shared.edits.dir</name>
- <value>qjournal://dataNode1:8485;datanode2:8485;datanode4:8485/gagcluster</value>
- </property>
- <!-- 配置失败自动切换实现方式 -->
- <property>
- <name>dfs.client.failover.proxy.provider.gagcluster</name>
- <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
- </property>
- <!-- 配置隔离机制 -->
- <property>
- <name>dfs.ha.fencing.methods</name>
- <value>sshfence</value>
- </property>
- <!-- 使用隔离机制时需要ssh免密码登陆 -->
- <property>
- <name>dfs.ha.fencing.ssh.private-key-files</name>
- <value>/home/hadoop/.ssh/id_rsa</value>
- </property>
- <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
- <property>
- <name>dfs.journalnode.edits.dir</name>
- <value>/data/hadoop/tmp/journal</value>
- </property>
- <!--指定支持高可用自动切换机制-->
- <property>
- <name>dfs.ha.automatic-failover.enabled</name>
- <value>true</value>
- </property>
- <!--指定namenode名称空间的存储地址-->
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/data/hadoop/dfs/name</value>
- </property>
- <!--指定datanode数据存储地址-->
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/data/hadoop/dfs/data</value>
- </property>
- <!--指定数据冗余份数-->
- <property>
- <name>dfs.replication</name>
- <value>3</value>
- </property>
- <!--指定可以通过web访问hdfs目录-->
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
- <!--保证数据恢复 -->
- <property>
- <name>dfs.journalnode.http-address</name>
- <value>0.0.0.0:8480</value>
- </property>
- <property>
- <name>dfs.journalnode.rpc-address</name>
- <value>0.0.0.0:8485</value>
- </property>
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>dataNode1:2181,dataNode2:2181,dataNode4:2181</value>
- </property>
- </configuration>
- <configuration>
- <!--rm失联后重新链接的时间-->
- <property>
- <name>yarn.resourcemanager.connect.retry-interval.ms</name>
- <value>2000</value>
- </property>
- <!--开启resource manager HA,默认为false-->
- <property>
- <name>yarn.resourcemanager.ha.enabled</name>
- <value>true</value>
- </property>
- <!--配置resource manager -->
- <property>
- <name>yarn.resourcemanager.ha.rm-ids</name>
- <value>rm1,rm2</value>
- </property>
- <property>
- <name>ha.zookeeper.quorum</name>
- <value>dataNode1:2181,dataNode2:2181,dataNode4:2181</value>
- </property>
- <!--开启故障自动切换-->
- <property>
- <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
- <value>true</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname.rm1</name>
- <value>namenode1</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname.rm2</name>
- <value>namenode2</value>
- </property>
- <!--在namenode1上配置rm1,在namenode2上配置rm2,注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改-->
- <property>
- <name>yarn.resourcemanager.ha.id</name>
- <value>rm1</value>
- <description>If we want to launch more than one RM in single node, we need this configuration</description>
- </property>
- <!--开启自动恢复功能-->
- <property>
- <name>yarn.resourcemanager.recovery.enabled</name>
- <value>true</value>
- </property>
- <!--配置与zookeeper的连接地址-->
- <property>
- <name>yarn.resourcemanager.zk-state-store.address</name>
- <value>datanode1:2181,datanode2:2181,datanode4:2181</value>
- </property>
- <property>
- <name>yarn.resourcemanager.store.class</name>
- <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
- </property>
- <property>
- <name>yarn.resourcemanager.zk-address</name>
- <value>datanode1:2181,datanode2:2181,datanode4:2181</value>
- </property>
- <property>
- <name>yarn.resourcemanager.cluster-id</name>
- <value>gagcluster-yarn</value>
- </property>
- <!--schelduler失联等待连接时间-->
- <property>
- <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>
- <value>5000</value>
- </property>
- <!--配置rm1-->
- <property>
- <name>yarn.resourcemanager.address.rm1</name>
- <value>namenode1:8132</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address.rm1</name>
- <value>namenode1:8130</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address.rm1</name>
- <value>namenode1:8188</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
- <value>namenode1:8131</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address.rm1</name>
- <value>namenode1:8033</value>
- </property>
- <property>
- <name>yarn.resourcemanager.ha.admin.address.rm1</name>
- <value>namenode1:23142</value>
- </property>
- <!--配置rm2-->
- <property>
- <name>yarn.resourcemanager.address.rm2</name>
- <value>namenode2:8132</value>
- </property>
- <property>
- <name>yarn.resourcemanager.scheduler.address.rm2</name>
- <value>namenode2:8130</value>
- </property>
- <property>
- <name>yarn.resourcemanager.webapp.address.rm2</name>
- <value>namenode2:8188</value>
- </property>
- <property>
- <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
- <value>namenode2:8131</value>
- </property>
- <property>
- <name>yarn.resourcemanager.admin.address.rm2</name>
- <value>namenode2:8033</value>
- </property>
- <property>
- <name>yarn.resourcemanager.ha.admin.address.rm2</name>
- <value>namenode2:23142</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
- <value>org.apache.hadoop.mapred.ShuffleHandler</value>
- </property>
- <property>
- <name>yarn.nodemanager.local-dirs</name>
- <value>/data/hadoop/yarn/local</value>
- </property>
- <property>
- <name>yarn.nodemanager.log-dirs</name>
- <value>/data/log/hadoop</value>
- </property>
- <property>
- <name>mapreduce.shuffle.port</name>
- <value>23080</value>
- </property>
- <!--故障处理类-->
- <property>
- <name>yarn.client.failover-proxy-provider</name>
- <value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value>
- </property>
- <property>
- <name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name>
- <value>/yarn-leader-election</value>
- <description>Optional setting. The default value is /yarn-leader-election</description>
- </property>
- </configuration>
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
- <!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
- <property>
- <name>mapreduce.jobhistory.address</name>
- <value>0.0.0.0:10020</value>
- </property>
- <!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>0.0.0.0:19888</value>
- </property>
- </configuration>
- atanode1
- datanode2
- datanode3
- datanode4
修改文件yarn-env.sh
- export JAVA_HOME=/usr/java/jdk1.7.0_67
- export YARN_LOG_DIR=/data/log/hadoop指定日志存放目录
进入到 zookeeper-3.4.5/bin/
- ./zkServer.sh start
查看状态:
- ./zkServer.sh status
(一个leader,两个follower)
进入到hadoop-2.6.0
- sbin/hadoop-daemons.sh start journalnode
- sbin/hadoop-daemon.sh start journalnode
(运行jps命令检验,多了JournalNode进程)
在namenode1上执行命令:
- hadoop namenode -format
格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,之后通过sbin/hadoop-daemon.sh start namenode启动namenode进程在namenode2上执行hdfs namenode -bootstrapStandby完成主备节点同步信息
- hdfs zkfc -formatZK
启动HDFS(在namenode1上执行)
- sbin/start-dfs.sh
启动YARN(在namenode1和namenode2上执行)
- sbin/start-yarn.sh
在namenode1上执行${HADOOP_HOME}/bin/yarn rmadmin -getServiceState rm1查看rm1和rm2分别为active和standby状态,也可以通过浏览器访问http://192.168.3.161:8188查看状态
hadoop2.6.0高可靠及yarn 高可靠搭建的更多相关文章
- 最详细的hadoop2.2.0集群的HA高可靠的最简单配置
简介 [from http://www.open-open.com/lib/view/open1390717631132.html] hadoop中的NameNode好比是人的心脏,非常重要,绝对不可 ...
- 国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置
简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了 ...
- hadoop2.9.0之前的版本yarn RM fairScheduler调度性能优化
对一般小公司来说 可能yarn调度能力足够了 但是对于大规模集群1000 or 2000+的话 yarn的调度性能捉襟见肘 恰好网上看到一篇很好的文章https://tech.meituan.com ...
- Hadoop2.6.0(2.4~2.7)完全分布式搭建-入门向 新手向 详细流程
.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.tabl ...
- Hadoop2.6.0实践:001 伪分布式环境搭建
##################### Centos6.4VM_01_os.rar ################################################准备工作/opt ...
- Hadoop2.2.0集群的HA高可靠的最简单配置
HA集群需要使用nameservice ID区分一个HDFS集群.另外,HA中还要使用一个词,叫做NameNode ID.同一个集群中的不同NameNode,使用不同的NameNode ID区分.为了 ...
- Hadoop2.2.0(yarn)编译部署手册
Created on 2014-3-30URL : http://www.cnblogs.com/zhxfl/p/3633919.html @author: zhxfl Hadoop-2.2编译 ...
- hadoop2.6.0实践:004 启动伪分布式hadoop的进程
[hadoop@LexiaofeiMaster hadoop-2.6.0]$ start-dfs.shStarting namenodes on [localhost]localhost: start ...
- 完全分布式hadoop2.5.0安装 VMware下虚拟机centos6.4安装1主两从hadoop
请跟我走,从零开始搭建hadoop2.5.0环境.总览第一步:搭建三台能不用密码shh的虚拟机.第二步,装jdk,解压hadoop文件,配置环境变量和xml文件.第三步,复制克隆两个slave机器.调 ...
随机推荐
- 10_bash_变量_条件判断及运算_sed_循环
shell编程: 编译器.解释器编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量):变量在使用前,必须事先声明,甚至还需要初始化 事先转换成可执行格式 C/C++.C#.Ja ...
- 出错:(unicode error) 'unicodeescape' codec can't decode bytes in position 8-9: malformed \N character escape
报错原因:python 中 \N 是换行的意思.这里要把 N 前面的 \ 转义一下.用 \\ 代替即可. Nokia_mac = np.loadtxt('data\oui\\NokiaMac201 ...
- java反射使用和源码解析
1 反射 1.1 什么是反射 正射:指的是我们知道类的定义和类中的方法名称,直接先创建对象,然后通过对象去调用方法.例如: Apple apple = new A ...
- [Basics] 递归
Recursion就是方法调用自己,递归其实和循环是非常像的,循环都可以改写成递归,递归未必能改写成循环,这是一个充分不必要的条件.
- 规则引擎 drools
https://www.jianshu.com/p/725811f420db 深入了解Drools 简单介绍 笔者正在做风控系统,风控系统里边存在非常多的规则(比如:age < 16 || ag ...
- 容器虚拟网卡与网桥docker0虚拟网卡的veth pair的配对
一)基本知识: Docker 安装时会自动在 host 上创建三个网络:none,host,和bridge:详细说明可参考其它文档.我们可用 docker network ls 命令查看: 基于DRI ...
- 举例说明$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 移动端跨平台方案对比:React Native、weex、Flutter
跨平台一直是老生常谈的话题,cordova.ionic.react-native.weex.kotlin-native.flutter等跨平台框架百花齐放,颇有一股推倒原生开发者的势头. 为什么我们需 ...
- C语言博客作业02——循环结构
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do- ...
- redmine
redmine直接复制图片 https://github.com/thorin/redmine_image_clipboard_paste