高可用 hadoop HA 搭建教程_hadoop hatajian-程序员宅基地

技术标签: 学习之路  hdfs  hadoop  大数据  

1、基础环境配置

基础环境配置

点击跳转基础搭建链接

2、文件配置

配置java路径和hadoop_conf_dir

(1)hadoop.env.sh:

在这里插入图片描述

=========================================================

(2)mapred-env.sh

在这里插入图片描述

=========================================================

(3)yarn-env.sh

在这里插入图片描述

=========================================================

(4)core-site.xml

<!-- 指定zookeeper的存放地址-->
<property>
    <name>ha.zookeeper.quorum</name>
    <value>192.168.120.150:2181,192.168.120.151:2181,192.168.120.152:2181</value>
</property>
<!-- 指定hadoop集群在zookeeper上注册的节点名-->
<property>
    <name>fs.defauFS</name>
    <value>hdfs://mycluster</value>
</property>
<!-- 用来指定hadoop运行时产生的存放目录-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/hadoop01/tmp</value>
</property>
<!--设置缓存大小,默认4kb-->
<property>
    <name>io.file.buffer.size</name>
    <value>4096</value>
</property>

=========================================================

(5)hdfs-site.xml

<!--数据块默认大小128m-->
<property>
    <name>dfs.block.size</name>
    <value>134217728</value>
</property>

<!--副本数量,不配置默认为3-->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<!--namenode 数据存放位置-->
<property>
    <name>dfs.name.dir</name>
    <value>/hadoop01/namenode_data</value>
</property>

<!--datanode 数据存放位置-->
<property>
    <name>dfs.data.dir</name>
    <value>/hadoop01/datanode_data</value>
</property>


<property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
</property>

<property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>192.168.120.150:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>192.168.120.150:50070</value>
</property>


<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>192.168.120.151:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>192.168.120.151:50070</value>
</property>

<!-- 指定namenode的元数据在Journalnode上的存放数据-->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://192.168.120.150:8485;192.168.120.151:8485;192.168.120.152:8485/mycluster</value>
</property>

<!-- 指定Journalnode本地磁盘的存放数据位置-->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/hadoop01/journalnode</value>
</property>

<!-- 开启namenode故障转移自动切换-->
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>

<!--配置失败自动切换实现方式-->
<property>
    <name>dfs.client.filover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!--hdfs文件操作权限,false为不验证-->
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>

<!--配置隔离机制-->
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>
  sshfence
  shell(/bin/true)
  </value>
</property>


<!--使用隔离机制需要ssh免密登录-->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>

=========================================================

(6)mapred-site.xml

<!--指定mapreduce运行在yarn上-->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<!--配置任务历史服务器地址-->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>192.168.120.150:10020</value>
</property>
<!--配置任务历史服务器web-ui地址-->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>192.168.120.150:19888</value>
</property>
<!--开启uber模式-->
<property>
    <name>mapreduce.job.ubertark.enabled</name>
    <value>true</value>
</property>

=========================================================

(7)yarn-site.xml

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

<!--指定yarn集群在zookeeper上注册的节点名-->
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>hayarn</value>
</property>

<!--指定俩个ResourceManager的名称-->
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>

<!--指定rm1的主机 -->
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>192.168.120.151</value>
</property>

<!-- 指定rm2的主机-->
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>192.168.120.152</value>
</property>

<!-- 开始yarn恢复机制-->
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>

<!-- 配置zookeeper的地址-->
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>192.168.120.150:2181,192.168.120.151:2181,192.168.120.152:2181</value>
</property>

<!-- nodemanager获取数据的方法方式-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 配置执行ResourceManager恢复机制实现类-->
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

<!-- 指定主resourcemanager的地址-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>192.168.120.152</value>
</property>

=========================================================

3、 解释说明

前提必须要有zookeeper
hadoop2.6.0
zookeeper3.4.5
192.168.120.150 ===> master 或者 hadoop(文章里面可能带有相关字眼)
192.168.120.151 ===> slave1
192.168.120.152 ===> slave2

4、相关命令:

启动zookeeper(初始化工作)
zkServer.sh start 三台机子都要启动
zkServer.sh status 查看zk状态

hadoop-daemon.sh start journalnode  启动journalnode,三台都要使用
hdfs namenode -format  格式化(仅master)
hdfs namenode -bootstrapStandby   同步namenode数据,slave1使用

或者把
hadoop01目录下的namenode_data发送到slave1

scp /hadoop01/namenode_data slave1:/hadoop/namenode_data
hdfs zkfc -formatZK 复制Namenode节点后(在master或者slave1)格式化zkfc
start-dfs.sh    在master中启动hdfs相关服务
start-yarn.sh  在slave2上启动yarn相关服务

启动master的历史任务服务器

mr-jobhistory-daemon.sh start historyserver

启动slave1中的ResourceManager

yarn-daemon.sh start resourcemanager

jps查看端口号,把active的kill
kill -9 端口号
登录web-ui,查看

hdfs haadmin -getServiceState nn1   查看状态
yarn rmadmin -getServiceState rm1  查看状态

启动完成后会看到
master:
在这里插入图片描述
slave1:
在这里插入图片描述
slave2:
在这里插入图片描述

看一下namenode状态
在这里插入图片描述
看一下datanode状态
在这里插入图片描述

5、资源

链接:https://pan.baidu.com/s/1ffrub7pu_zc1SYX-6yBE_w
点击跳转
提取码:6666

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51214928/article/details/121041740

智能推荐

安卓工具类:FileUtils_fileutils 注入-程序员宅基地

文章浏览阅读268次。public class MineFileUtils { /** * 使用本地安装的文件查询器,打卡文件 * * @param activity * @param filepath */ public static void openAndroidFile(Activity activity, String filepath) ..._fileutils 注入

如果有人能力不如你工资比你高怎么看?_比你菜工资比你高-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏3次。你在公司里工作,如果同办公室里的一个人,能力没有你强,但工资却高于你,你会不会有想法,心理能平衡吗?1. 错误回答:1) 我当然不平衡,那我还干的什么意思?2) 如果他的能力比我强,我不会有想法。如果没有我强,我肯定心理不平衡。(路健就是这样回答的)3) 如果公司对待员工是这样的不公平,肯定企业文化有问题,这样的公司只有走人。2. 正确回答:(别忘了换位思考原则)工资是员工最敏感的问题,公司一般都会尽量处理好,如果那个同事的能力不如我,工资还高于我,肯定是他在其他方面强于我。或者,他能为公司解决_比你菜工资比你高

获取对话框当前cfont_VC调用系统字体对话框-程序员宅基地

文章浏览阅读474次。1、通过MFC类调用字体对话框2、通过win32API函数调用字体对话框通过MFC类调用字体对话框CFontDialog构造函数CFontDialog(LPLOGFONTlplfInitial=NULL,DWORDdwFlags=CF_EFFECTS|CF_SCREENFONTS,CDC*pdcPrinter=NULL,CWnd*pParentWnd=NULL..._vc++如何获取当前计算中的系统字体

《树莓派Python编程入门与实战》——3.2 检查你的Python环境-程序员宅基地

文章浏览阅读304次。本节书摘来异步社区《树莓派Python编程入门与实战》一书中的第3章,第3.2节,作者:【美】Richard Blum,更多章节内容可以访问云栖社区“异步社区”公众号查看3.2 检查你的Python环境树莓派Python编程入门与实战Raspbian发行版默认安装了Python第三版环境和一些必要的工具。下面是预装了的Python功能。Python..._怎么查树莓派是否有python环境?

工具IDEA 配置springboot+maven项目-程序员宅基地

文章浏览阅读81次。工具IDEA 配置springboot+maven项目 首先安装IDEA,至于怎么安装就不介绍了。。第一步 配置maven环境 首先安装maven,先在网上下载一个maven包。在IDEA的settings中Maven设置 点击USer settings file 文件夹正常的是空白 如图找到你下载的maven文件夹,引入setti..._maven项目怎么配置springboot

GSL 系列 5 — 向量和矩阵 2 — 向量 (vector)_gsl_vector *-程序员宅基地

文章浏览阅读1.3k次。文章目录0 写在前面1 向量 (vector)0 写在前面因为向量是构建于块之上,请先理解块,参见:GSL 系列 5 — 向量和矩阵 1 — 块 (block)1 向量 (vector)向量建构于块之上,添加了对块的切片描述,向量切片必须是内存空间中一组等间隔的元素,不同的向量可以创建于一个块之上,定义如下:// gsl_vector_double.htypedef struct {..._gsl_vector *

随便推点

浅析LiveMedia智能视频网关的AI识别技术及应用场景_.net ai 识别视频直播的话语-程序员宅基地

文章浏览阅读239次。LiveMedia智能视频边缘网关,支持对多路网络IPC和NVR设备的高清视频流进行实时智能分析。通过将网络摄像机、NVR、编码器等视频源设备统一集中接入和汇聚管理,对接入的多路高清视频流进行人、车、物、行为等实时检测与分析,结合硬件中内置的多种AI算法,实现人脸识别/检测、车辆识别/检测、目标检测、行为识别等目的,可对异常行为事件进行告警与提醒,支持对接视频结构化数据平台、大数据综合分析平台等。_.net ai 识别视频直播的话语

Kinetis KL8x 使用eDMA模块接收串口数据_site: csdn.net edma循环-程序员宅基地

文章浏览阅读1.6k次。飞思卡尔的芯片KL系列Cortex-M0+内核的,其他的应该可以通用,大体一致,之前在KL25上用过,这次是KL81,我对比两者使用类似,就是某些寄存器不同罢了正文开始:需要用LPUART接收上层接口的数据,比较大,而且大小不固定,之前用FIFO来接收,但是遇到收发错乱,很不稳定,故使用eDMA来接收#include "fsl_port_hal.h"#include "fsl_dev_site: csdn.net edma循环

OpenSSL杂记(CA证书)-程序员宅基地

文章浏览阅读896次。OpenSSL和OpenSSHOpenSSH只允许白名单的用户登录1、限制前:[email protected]'s password: [ww@qq ~]$ exitlogoutConnection to 10.201.106.129 closed.[root@zz ~]# ssh [email protected]@10.201.106.129's password: ...

GPIO 口的输入,输出模式及其说明_gpio_mode_in-程序员宅基地

文章浏览阅读4.2w次,点赞65次,收藏351次。GPIO端口各种模式的区别(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_A..._gpio_mode_in

CSS的三种引入方式_css 的三种引入方式-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏14次。CSS的引入方式共有三种:行内样式、内部样式表、外部样式表。_css 的三种引入方式

javascript用js简单的实现电子时钟_4、编写程序,实现电子时钟效果,要求每隔1秒获取一次当前时间,并提供一个按钮控制-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏12次。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><!--给div一个简单样式--><..._4、编写程序,实现电子时钟效果,要求每隔1秒获取一次当前时间,并提供一个按钮控制