当前位置: 首页 > news >正文

Hadoop3.3.5搭建指南(双NN版本)

由最初的单NN双DN的模式,扩展到高HA架构,增加一个节点NN,现在变成双NN和双DN的架构,需要了解的请移步上一篇文章

服务器规划如下

54、44服务器 NN RM

61.62服务器 DN NM 

Zookpeer/JournalNode  54.61.62

ZKFC 54.44

1、配置hosts

54 master

44 master2

61 slave1

62 slave2

2、修改Hadoop的配置

修改:vi core-site.xml

<configuration>
<property>
<!-- 指定HDFS的通信地址,在NameNode HA中连接到nameservice的,
值为mycluster是需要在下一个hdfs-site.xml中配置的 -->
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<!-- 配置Hadoop 的临时目录 -->
<name>hadoop.tmp.dir</name>
<value>file:/datas/hadoop/hadoop-3.3.5/tmp</value>
</property>
<property>
<!-- 指定Zookeeper地址(2181端口参考zoo.cfg配置文件) -->
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value></value></property><property><name>hadoop.proxyuser.root.groups</name><value></value>
</property>
</configuration>

修改vi hdfs-site.xml配置

<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/datas/hadoop/hadoop-3.3.5/tmp/master</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/datas/hadoop/hadoop-3.3.5/tmp/slave</value>
</property>
<!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns下面有两个NameNode,分别是master,master2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>master,master2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.master</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.master</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.master2</name>
<value>master2:9001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.master2</name>
<value>master2:9870</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置(即NameNode集群间的用于共享的edits日志的journal节点列表) -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置  -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/hadoop/export/data/journaldata/</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置NameNode失败后自动切换实现方式(客户端连接可用状态的NameNode所用的代理类) -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.permissions.enable</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>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/datas/hadoop/hadoop-3.3.5/tmp/master</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/datas/hadoop/hadoop-3.3.5/tmp/slave</value>
</property>

修改vi yarn-site.xml

<configuration>
<property>
<!-- 启用ResourceManager的HA功能 -->
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<!-- 开启ResourceManager失败自动切换 -->
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<!-- 给ResourceManager HA集群命名id -->
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<!-- 指定ResourceManager HA有哪些节点 -->
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<!-- 指定第一个节点在那一台机器 -->
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<!-- 指定第二个节点在那一台机器 -->
<name>yarn.resourcemanager.hostname.rm2</name>
<value>master2</value>
</property>
<property>
<!-- 指定ResourceManager HA所用的Zookeeper节点 -->
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<!-- 启用RM重启的功能,默认为false -->
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<!-- 用于状态存储的类 -->
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<!-- NodeManager启用server的方式 -->
<name>yarn-nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!-- NodeManager启用server使用算法的类 -->
<name>yarn-nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<!-- 启用日志聚合功能 -->
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<!-- 聚集的日志在HDFS上保存最长的时间 -->
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<property>
<!-- 聚集的日志在HDFS上保存最长的时间 -->
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/datas/hadoop/hadoopHA/logs</value>
</property>
<!--hadoop3里面必须要添加的classpath-->
<property>
<name>yarn.application.classpath</name>
<value>/datas/hadoop/hadoop-3.3.5/etc/hadoop:/datas/hadoop/hadoop-3.3.5/share/hadoop/common/lib/:/datas/hadoop/hadoop-3.3.5/share/hadoop/common/:/datas/hadoop/hadoop-3.3.5/share/hadoop/hdfs:/datas/hadoop/hadoop-3.3.5/share/hadoop/hdfs/lib/:/datas/hadoop/hadoop-3.3.5/share/hadoop/hdfs/:/datas/hadoop/hadoop-3.3.5/share/hadoop/mapreduce/lib/:/datas/hadoop/hadoop-3.3.5/share/hadoop/mapreduce/:/datas/hadoop/hadoop-3.3.5/share/hadoop/yarn:/datas/hadoop/hadoop-3.3.5/share/hadoop/yarn/lib/:/datas/hadoop/hadoop-3.3.5/share/hadoop/yarn/</value>
</property>
</configuration>
4、修改zookeeper

在配置文件中(zoo.cfg)增加如下配置:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/u01/datas/hadoop/zookeeper/data

dataLogDir=/u01/datas/hadoop/zookeeper/logs

clientPort=2181

5、启动操作

重启zookeeper,三台服务器都要操作

在54服务器执行hdfs zkfc –formatZK,进行zookeeper的初始化,其本质工作是创建对应的zookeeper节点

启动journalNode,三台机器执行以下命令启动journalNode,用于我们的元数据管理

hadoop-daemon.sh start journalnode

在主namenode(54)节点格式化namenode和journalnode目录

hdfs namenode -format ns

启动namenode

hadoop-daemon.sh start namenode

在备用namenode节点执行第一行命令,这个是把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了!然后用第二个命令启动备namenode进程

hdfs namenode -bootstrapStandby

hadoop-daemon.sh start namenode

在主节点启动datanode

hadoop-daemons.sh start datanode

在主备两个节点启动zkfc

hadoop-daemon.sh start zkfc

主节点启动historyserver

mr-jobhistory-daemon.sh start historyserver

http://www.dtcms.com/a/389837.html

相关文章:

  • 如何正确写Controller?参数校验、异常处理
  • 线性代数:LU与Cholesky分解
  • 饮用水在线监测设备:实时、精准地捕捉水体中的关键参数,为供水安全提供全方位保障
  • 【环境搭建】Conda安装教程
  • Java与机器学习的结合:库与应用!
  • DHCP基本原理及实验(ENSP配置)
  • 高系分十一:软件需求工程
  • MCP Server Chart AntV 项目解析
  • 2025药物市场调研分析案例(模板资源分享)
  • 飞网出口网关:安全便捷地访问受限资源
  • 大模型训练的三大显存优化策略
  • 动态加载js链接、异步传参加载组件、有趣打印
  • 【Python】Python异常、模块与包
  • 第三方网站系统测试:【基于Pytest的自动化测试框架的测试】
  • 每个 SIwave 求解器的正确激励
  • 给 C++ Protobuf“装上 Abseil”版本确认、Bazel/CMake 实战与避坑
  • Java 大视界 -- Java 大数据在智能物流运输车辆智能调度与路径优化中的技术实现
  • 电脑中的32位和64位
  • 如何免费使用AWS服务器?AWS Free Tier免费套餐申请与避坑指南
  • QML界面调用C++层阻塞函数,如何不卡界面
  • JVM GC 调优:GC 问题发现工具,五大 GC 异常模式,四大调优方案与案例实战
  • Excel处理控件Aspose.Cells教程:如何使用Python在Excel中创建下拉列表
  • React 18.2中使用Redux 5.0.1
  • 程序开发的基本规律
  • Day26_【深度学习(6)_神经网络NN(1.1)激活函数_softmax详解篇】
  • 通过调用deepseek大模型接口对千条评论信息进行文本分析/词频分析/情感分析
  • 攻坚家电代工转型痛点|远望电器牵手盘古信息,以IMS重塑数字制造根基
  • SpringBoot实现Markdown语法转HTML标签
  • DeepSeek:大语言模型在中文生态中的技术突破与应用探索
  • 【Agent博客分享】从多Agent问题到新的上下文工程方法