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机器.调 ...
随机推荐
- C++_day8_ 多重继承、钻石继承和虚继承
1.继承的复习 1.1 类型转换 编译器认为访问范围缩小是安全的. 1.2 子类的构造与析构 子类中对基类构造函数初始化只能写在初始化表里,不能写在函数体中. 阻断继承. 1.3 子类的拷贝构造与拷贝 ...
- Kotlin 数据类与密封类
数据类 Kotlin 可以创建一个只包含数据的类,关键字为 data: data class User(val name: String, val age: Int) 编译器会自动的从主构造函数中根据 ...
- @staticmethod和@classmethod
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- 一键安装Lnmp教程
LNMP一键安装包 系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统 需要3GB以上硬盘剩余空间 128M以上内存,Xen的需要有SWAP ...
- python 学习笔记 3 ----> dive into python 3
Python内置数据类型 注意: Python可以不需要声明变量的数据类型.它是根据变量的初始赋值情况分析数据类型,并在内部跟踪变量. 比较重要的数据类型: 1 布尔型(Booleans):True. ...
- JVM垃圾回收(四)- GC算法:实现(1)
GC算法:实现 上面我们介绍了GC算法中的核心概念,接下来我们看一下JVM里的具体实现.首先必须了解的一个重要的事实是:对于大部分的JVM来说,两种不同的GC算法是必须的,一个是清理Young Gen ...
- Linux系统优化及基础命令
1.Linux系统优化及基础命令 2. vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****)pagedown 往下翻页(重要指数****)H 移动到屏幕首行gg ...
- Kali 安装 VMwaretools 时 “没有足够可有空间提取xxxxxx”
方法:将VMwaretools 的压缩包复制到想要解压的地方,然后再进行提取
- http请求requestUtils
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- HTML中的置换元素和非置换元素
我们都知道,行内元素不能够定义宽度和高度,但 img,input,button等标签作为行内元素却可以定义宽高,为什么呢?这就牵扯到了置换元素和非置换元素. 置换元素: w3c官方解释:“An ele ...