大数据-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

修改的截图如下:

相关推荐
一 乐1 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈2 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈2 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
智能相对论3 小时前
CES深度观察丨智能清洁的四大关键词:变形、出户、体验以及生态协同
大数据·人工智能
踏浪无痕4 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假4 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
焦耳热科技前沿4 小时前
北京科技大学/理化所ACS Nano:混合价态Cu₂Sb金属间化合物实现高效尿素电合成
大数据·人工智能·自动化·能源·材料工程
min1811234565 小时前
深度伪造内容的检测与溯源技术
大数据·网络·人工智能
武子康5 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr5 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby