HADOOP高可用详细搭建教程

先搭建环境

https://blog.csdn.net/qq_45007567/article/details/120372863

在这里插入图片描述

进入到zookeeper的环境目录下 进入conf文件夹

在这里插入图片描述

拷贝一份zoo_sample.cfg文件 出来重新命名 zoo.cfg

在这里插入图片描述

修改配置文件内容,添加方式为 server.1+主机名+端口

在这里插入图片描述

这里写上zookeeper安装目录里的data中

在这里插入图片描述

通过 source 对配置文件进行刷新操作

在这里插入图片描述

创建一个data目录

在这里插入图片描述

在文件目录中创建myid文件写上1

在这里插入图片描述
在etc/hosts 目录下配置好要分布服务器ip和名字

hdfs-size.xml配置

<!-- 指定副本的数量 -->
<property>
	<name>fs.replication</name>
	<value>2</value>
</property>
<!-- 指定hdfs的nameservice为myns1(在core-site.xml配置的一致) -->
<property>
	<name>dfs.nameservices</name>
	<value>hadoop1</value>
</property>
<!-- hadoopHA下面有两个Namenode,分别是nn1,nn2 -->
<property>
	<name>dfs.ha.namenodes.hadoop1</name>
	<value>nn1,nn2</value>
</property>

<!-- nn1的RPC通信地址,myns1为前后对应的,mymaster是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.hadoop1.nn1</name>
	<value>hadoop1:9000</value>
</property>
<!-- nn1的http通信地址,myns1为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.hadoop1.nn1</name>
	<value>hadoop1:50070</value>
</property>

<!-- nn2的RPC通信地址,myns1为前后对应的,myslave1是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.hadoop1.nn2</name>
	<value>hadoop2:9000</value>
</property>
<!-- nn2的http通信地址,myns1为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.hadoop1.nn2</name>
	<value>hadoop2:50070</value>
</property>

<!-- 指定namenode的edits元数据在JournalNode上的存放位置 -->
<property>
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/hadoop1</value>
</property>
<!-- 指定namenode在本地磁盘存放数据的位置
     journaldata目录自己创建并且指定
-->
<property>
	<name>dfs.journalnode.edits.dir</name>
	<value>/opt/soft/hadoop/journaldata</value>
</property>

<!-- 开启NameNode失败自动切换,监控体系发现activity挂了,把备用的启用  -->
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>

<!-- 配置失败自动切换实现方式  -->
<!-- 此处配置在安装的时候切记检查不要换行 ,注意myns1是上面配置的集群服务名 -->
<property>
	<name>dfs.client.failover.proxy.provider.hadoop1</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免登陆,注意这里是id_rsa文件地址  -->
<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name>
	<value>/root/.ssh/id_rsa</value>
	<!-- 如果直接使用root,则路径为 /root/.ssh/id_rsa -->
</property>

<!-- 配置sshfence隔离机制超时时间 -->
<property>
	<name>dfs.ha.fencing.ssh.connect-timeout</name>
	<value>30000</value>
</property>

<!--  -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>

mapred-size.xml的配置

<!-- 指定mr框架为yarn方式 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

<!-- 指定mapreduce的历史服务器地址和端口号 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>hadoop1:10020</value>
</property>

<!-- 指定mapreduce的web访问地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>hadoop1:19888</value>
</property>

slaves

将集群datanode节点机器名放在这里,换行即可,如:
hadoop1
hadoop2
hadoop3

yarn-size.xml

<!-- 开启YARN高可用 -->
<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
</property>

<!-- 指定RM的cluster id,该value可以随意 -->
<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>hadoop1</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname.rm2</name>
	<value>hadoop2</value>
</property>

<!-- 指定zookeeper集群地址 -->
<property>
	<name>yarn.resourcemanager.zk-address</name>
	<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>

<!-- 要运行MapReduce程序必须配置的附属服务 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- Yarn集群的聚合日志最长保留时间 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>86400</value>
</property>
<!-- 启用自动恢复 -->
<property>
	<name>yarn.resourcemanager.recovery.enabled</name>
	<value>true</value>
</property>

<!-- 指定resourcemanager的状态信息存储在zookeeper集群上 -->
<property>
	<name>yarn.resourcemanager.store.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

core-size.xml


<!-- 指定hdfs的nameservice为,如myns1,统一对外提供服务的名字
不再单独指定某一个机器节点-->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop1/</value>
</property>
<!-- 指定hadoop数据存储目录,自己指定 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/soft/hadoop/data</value>
</property>
<!-- 依赖zookeeper,所以指定zookeeper集群访问地址,名字为不同集群机器的hostname -->
<property>
	<name>ha.zookeeper.quorum</name>
	<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
<!-- 下面的配置是为了解决以后其他组件连接HDFS集群做准备的
开始可以无需要配置-->
<property>
	<name>hadoop.proxyuser.bigdata.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.bigdata.groups</name>
	<value>*</value>
</property>

然后对hadoop 目录下的/etc/hadoop 目录下进行修改以上四个文件

在这里插入图片描述

克隆三台机器
修改ip后设置他们的myid
修改机器名称第一台改成hadoop1 以此类推
使用zkServer.sh start 启动三台的zookeeper

在这里插入图片描述

启动三台的journalnode

hadoop-daemon.sh start journalnode

进行格式化操作

hdfs namenode -format

格式化完成后会有一个date文件在hadoop目录下,把该文件传输到另外两台机器的hadoop目录中

在第一台 hdfs zkfc -fromatZK 格式化
在第一台 start-dfs.sh
在第一台 start-yarn

打开浏览器 hadoop1的ip +50070就可以访问了
如:192.168.52.128:50070

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值