参考:https://blog.csdn.net/wild46cat/article/details/53423472
hadoop2.7.3在集群中配置多个namenode(federation cluster)
首先需要说明的是,在集群中配置多个namenode和在集群中使用secondaryNamenode是完完全全的两码事。具体是如何区分的,我之后会在写一篇haoop官方当中的译文,同时解释一下这两者的区别。在这里先简单的说一下。secondaryNamenode的作用是给namenode分担压力的,会定时的帮助namenode做一些处理。而配置多个namenode的相当于配置了一个联邦集群,每个anmenode之间都不会进行通信,各自管理各自的命名空间。
好,下面上货。
当然,完成本篇配置的前提:
1、已经能够配置单个namenode的hadoop集群。
2、haoop集群最好是完全分布式的(伪分布式没有测试,但是单点估计是不行。)
一、硬件环境:
host1 192.168.1.221
host2 192.168.1.222
host3 192.168.1.223
二、配置文件
其中,host1用作namenode,host2用作namenode,host3用作datanode。
配置文件(每个主机上的相同):hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>4096</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>host1,host2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.host1</name>
<value>host1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.host1</name>
<value>host1:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.host1</name>
<value>host1:9001</value>
</property>
<property>
<name>dfs.namenode.rpc-address.host2</name>
<value>host2:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.host2</name>
<value>host2:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.host2</name>
<value>host2:9001</value>
</property>
</configuration>
host1上的配置文件:core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://host1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
host2上的配置文件:core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://host2:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
host3上的配置文件:core-site.xml(需要说明一下,这里的df.defaultFS配置成任意一个就可以了)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://host1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
注意,host3作为datanode没有使用core-site.xml中的配置,而host1和host2在进行文件读取的时候,都会先读取本地的core-site.xml这个配置文件。
三、测试截图
下面是一个简单的测试,用来显示和证明这两个namenode是分开的分别拥有自己的命名空间的。
首先是启动hadoop:
启动后,从web中看两个namenode的情况:
在host1中创建一个目录。
host1中的文件夹:
在host2中创建一个目录。
host2中的文件夹:
这样说明了两个namenode是分离的,分别保存着自己的文件块对应表。
原文链接:https://blog.csdn.net/wild46cat/article/details/53423472
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2018-12-18 【spring-boot】spring-boot 整合 ehcache 实现缓存机制
2018-12-18 java 设计模式http://www.runoob.com/design-pattern/design-pattern-tutorial.html
2018-12-18 DDD领域驱动设计(例子)
2018-12-18 js要怎么接收后端传的excel文件流?