大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn Map

点一下关注吧!!!非常感谢!!持续更新!!!

基本介绍

目前我已经更新了很多大数据的文章!希望可以帮助到大家!之前都发布到 CSDN 上了,希望可以帮助到更多的小伙伴。

  • 大数据相关 正在更新··· 约 300 篇
  • 大模型相关 正在更新···
  • Java 正在更新··· 约 200 篇

章节内容

上一节完成了:

  • Java的环境配置
  • Hadoop环境配置

顺利完成了基础环境的配置,但是对于Hadoop来说,目前还有一些XML的配置需要我们修改,这样后续才能组装成集群来运行。接下来我们就进行一些XML的配置。Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置。

基本介绍

HDFS(Hadoop Distributed File System)是Apache Hadoop框架中用于存储大数据的分布式文件系统。它具有高容错性和高扩展性的特点,专为在廉价硬件上运行而设计,能够处理大规模数据集。

核心概念

  • 文件系统架构:HDFS基于主从架构,由NameNode(主节点)和多个DataNode(数据节点)组成:NameNode负责存储元数据,如文件目录、块位置信息等。它不会存储文件本身,而是维护文件块与DataNode的映射。DataNode负责实际存储文件数据。HDFS将文件拆分成多个固定大小的块(默认64MB或128MB),并将这些块分布式存储在不同的DataNode上。
  • 冗余与容错:为了保证数据安全,每个数据块都会被复制到多个DataNode上,默认是三个副本。这种机制可以防止数据丢失,即使某些节点发生故障,数据仍可从其他副本中恢复。
  • 流式数据访问:HDFS适合一次写入、多次读取的访问模式,主要用于批处理场景。它不支持像传统文件系统那样的随机写操作。

工作流程

  • 数据写入:客户端将文件写入HDFS时,文件会被拆分成块并分别存储到不同的DataNode上。NameNode会记录每个数据块的位置信息。当写入完成后,副本机制开始将数据复制到其他DataNode。
  • 数据读取:客户端从HDFS读取文件时,首先从NameNode获取文件块的位置信息,然后直接从对应的DataNode下载文件块。这种设计使得数据读取可以并行化,提升了读性能。

优势

  • 可扩展性:HDFS可以水平扩展,通过增加DataNode来扩大存储容量。
  • 高容错性:由于数据块的多副本机制,HDFS能有效应对硬件故障。当某个DataNode失效时,数据依然可从其他副本恢复。
  • 数据本地化:在Hadoop MapReduce中,计算任务会尽量安排在数据存储节点附近,以减少网络传输,提高计算效率。

局限性

  • 不支持低延迟数据访问:HDFS更适合批处理场景,不适合低延迟的实时查询。
  • 单点故障:NameNode作为整个系统的元数据管理者,如果NameNode故障,整个HDFS将无法正常工作。不过,通过引入高可用(HA)机制,这个问题可以得到解决。
  • 小文件问题:HDFS对小文件的处理效率较低,因为每个文件都需要元数据管理,小文件过多会给NameNode带来较大压力。

集群配置

由于我也是参考着别人的内容,这里有一个对应的关系:

  • h121对应linux121
  • h122对应linux122
  • h123对应linux123
  • 我们需要配置的内容如下图:Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置
  • 按照上图,一步一步来配置。

HDFS集群

运行环境

bash 复制代码
cd /opt/servers/hadoop-2.9.2/etc/hadoop

修改 hadoop 的运行内容

复制代码
vim hadoop-env.sh

找到 JAVA_HOME 的部分,配置为我们上节配置的地址:(防止后续的一系列不必要的问题,血泪史)

NameNode

bash 复制代码
cd /opt/servers/hadoop-2.9.2/etc/hadoop 

修改 core-site.xml

复制代码
sudo vim core-site.xml

添加如下的内容

xml 复制代码
<!-- HDFS NameNode 地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://h121.wzk.icu:9000</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/servers/hadoop-2.9.2/data/tmp</value>
</property>

当前的完整配置如下:

core-site.xml 中的所有参数地址:hadoop.apache.org/docs/r2.9.2...

SecondaryNameNode

复制代码
vim hdfs-site.xml

将下面的内容加入进去:

xml 复制代码
<!-- Hadoop 辅助节点地址 -->
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>h123.wzk.icu:50090</value>
</property>
<!-- 副本数量 -->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

当前的完整配置如下:

DataNode

复制代码
sudo vim slaves

这里是你的3台节点的名称,或者域名。

MapReduce集群

运行环境

复制代码
sudo vim mapred-env.sh

加入 JAVA_HOME 的环境,避免后续的不必要的问题。

javascript 复制代码
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

当前配置如下:

mapred-site

我们需要将默认的模板修改过来,并在这个基础上进行修改:

arduino 复制代码
sudo mv mapred-site.xml.template mapred-site.xml
sudo vim mapred-site.xml

加入如下的内容

xml 复制代码
<!-- 指定MR运行在Yarn上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

Yarn集群

运行环境

复制代码
 sudo vim yarn-env.sh

同前文,这里就不赘述了。也是修改 JAVA_HOME,避免后续不必要的麻烦!

yarn-site

复制代码
sudo vim yarn-site.xml

加入如下的内容:

xml 复制代码
<!-- 指定YARN的ResourceManager的地址 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>h123.wzk.icu</value>
</property>
<!-- Reducer获取数据的方式 -->
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
</configuration>

NodeManager

修改 slaves 文件,前文已经修改,这里就不需要了。

统一权限

现在已经完成了初步的配置,下面我们统一一下权限,防止后续出现权限问题:

bash 复制代码
sudo chown -R root:root /opt/servers/hadoop-2.9.2

DNS 修改

我是公网云,所以我统一一下DNS,避免后续不必要的麻烦(也可以不弄,问题不大)

bash 复制代码
vim /etc/resolv.conf

我使用的是阿里的DNS

复制代码
223.5.5.5

修改的截图如下:

相关推荐
程序员爱钓鱼28 分钟前
Go语言实战案例-创建模型并自动迁移
后端·google·go
javachen__33 分钟前
SpringBoot整合P6Spy实现全链路SQL监控
spring boot·后端·sql
一只栖枝5 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
uzong6 小时前
技术故障复盘模版
后端
GetcharZp6 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程7 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研7 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy8 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程