【Hadoop】集群搭建实战:超详细保姆级教程

🐇明明跟你说过:个人主页

🏅个人专栏:《大数据前沿:技术与应用并进》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、Hadoop简介

2、Hadoop集群概念

3、 Hadoop 集群的工作流程

二、安装环境准备

1、服务器

2、准备环境 

三、集群部署 

1、nameNode安装

2、dataNode安装 

3、访问测试 


一、引言

1、Hadoop简介

Hadoop 是一个由 Apache 软件基金会开发的开源框架,专门用于处理和存储海量数据。它以分布式计算为核心,可以在一个计算机集群上高效地处理和分析大规模数据集。Hadoop 的设计目标是提供可靠性、扩展性和分布式存储与计算的能力。以下是 Hadoop 的几个主要组件:

1. Hadoop 分布式文件系统 (HDFS):

  • HDFS 是 Hadoop 的存储系统,专为处理大数据量设计。它将数据分割成块,并将这些块分布在集群中的多个节点上。HDFS 提供高吞吐量的数据访问,并通过数据的多副本来确保容错性和高可用性。


2. MapReduce:

  • MapReduce 是 Hadoop 的计算模型,用于处理和生成大规模数据集。它将任务分为两个阶段:Map 阶段和 Reduce 阶段。Map 阶段将输入数据分割成键值对进行处理,而 Reduce 阶段则汇总这些结果。这个模型非常适合处理大规模的分布式数据。


3. YARN (Yet Another Resource Negotiator):

  • YARN 是 Hadoop 的资源管理器,它负责管理集群资源的调度和分配。YARN 允许多个数据处理引擎(如 MapReduce、Spark)在同一个集群上运行,并优化资源使用。


4. Hadoop Common:

  • Hadoop Common 包含了 Hadoop 框架中使用的通用工具和库。这些工具提供了文件系统和操作系统级别的抽象,以及各种实用程序库来支持 Hadoop 的其他模块。


Hadoop 的主要优势在于它的扩展性和成本效益。通过将数据和计算分布在大量廉价的计算机节点上,Hadoop 能够处理几乎无限量的数据,适合用于大数据分析、日志处理、数据仓库等场景。

2、Hadoop集群概念

1. 节点类型:

NameNode:

  • 是 HDFS 的主节点,负责管理文件系统的命名空间(元数据),包括文件和目录的结构以及文件块的位置信息。


DataNode:

  • 是 HDFS 的工作节点,负责存储实际的数据块,并根据 NameNode 的指令执行读写操作。


Secondary NameNode:

  • 并不是集群中的必要组件,但它的作用是对 NameNode 进行备份,并合并 fsimage 和 edit logs 文件来减小 NameNode 的内存压力。它并不提供集群的高可用性支持。


JobTracker (MapReduce 1.x):

  • 负责接收客户端提交的作业请求,并分配作业给 TaskTracker。


TaskTracker (MapReduce 1.x):

  • 执行由 JobTracker 分配的任务(map 或 reduce)。


ResourceManager (YARN, MapReduce 2.x):

  • 替代了 JobTracker 的角色,负责集群资源的管理和调度。


NodeManager (YARN, MapReduce 2.x):

  • 替代了 TaskTracker 的角色,负责监控容器(Container)的生命周期。


2. HDFS 架构:

  • HDFS 采用主从架构,其中 NameNode 是主节点,DataNode 是从节点。
  • 文件被分割成块(默认大小为 128MB 或 64MB),每个块可以被复制到集群的不同节点上以提高容错性。
  • NameNode 保存文件系统元数据,而 DataNode 存储实际的数据块。


3. MapReduce 框架:

  • MapReduce 是一种编程模型,用于大规模数据集的并行处理。
  • 数据处理分为两个阶段:Map 阶段和 Reduce 阶段。
  • Map 函数对输入数据进行处理,生成中间键值对。
  • Reduce 函数对相同键的值进行汇总或聚合,产生最终输出。


4. YARN (Yet Another Resource Negotiator):

  • YARN 是 Hadoop 2.x 引入的一个资源管理系统,它使得 Hadoop 集群可以支持多种计算框架,而不仅仅是 MapReduce。
  • ResourceManager 负责整个集群的资源管理和调度,NodeManager 负责单个节点上的资源管理。
  • ApplicationMaster 负责与 ResourceManager 协商资源,并与 NodeManager 交互来执行和监控任务。

 

3、 Hadoop 集群的工作流程

1. 文件存储:

  • 用户通过客户端将文件写入 HDFS,NameNode 根据文件大小和配置决定如何分割文件,并将块分布到不同的 DataNode 上。
  • DataNode 接收块并存储在本地文件系统中,并向 NameNode 报告状态。


2. 数据处理:

  • 用户提交 MapReduce 作业到 JobTracker 或 ResourceManager。
  • 作业被分解成多个任务(map 或 reduce),这些任务被分配给集群中的各个节点执行。
  • 数据在本地处理,减少网络传输开销(数据本地性原则)。


3. 容错机制:

  • Hadoop 设计时就考虑到了节点故障的可能性。例如,文件块会被复制到多个节点上,以保证即使某些节点失效,数据仍然是可访问的。
  • 当某个节点失败时,NameNode 或 ResourceManager 会重新调度任务到其他可用节点上。

 

二、安装环境准备

1、服务器

准备3台服务器,1个作为nameNode,2个作为dataNode,这里我们用的系统版本是 Centos 7.9,大家也可以使用其他系统,方法基本一致

2、准备环境 

分别在3台机器上执行

关闭Selinux

vi /etc/selinux/config

将 SELINUX=enforcing 修改为 SELINUX=disabled

之后重启服务器

禁用防火墙

systemctl stop firewalld && systemctl disable firewalld

添加阿里镜像源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache fast

安装JAVA

sudo yum install -y java-1.8.0-openjdk-devel

验证结果

java -version

添加环境变量 

vim /etc/profile

在文件最后添加如下内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

使环境变量生效

source /etc/profile

配置hosts,三台机器都要添加

vim /etc/hosts

添加如下内容

192.168.40.140 namenode
192.168.40.141 datanode1
192.168.40.142 datanode2

下载安装包,只在nameNode执行即可

[root@namenode ~]# wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz

解压安装包

[root@namenode local]# tar zxvf hadoop-3.4.0.tar.gz
[root@namenode ~]# mv hadoop-3.4.0 /usr/local/hadoop

配置nameNode到各节点免密连接

[root@namenode ~]# ssh-keygen

一路回车即可

接下来将密钥拷贝到各节点

[root@namenode ~]# ssh-copy-id root@namenode
[root@namenode ~]# ssh-copy-id root@datanode1
[root@namenode ~]# ssh-copy-id root@datanode2

三、集群部署 

1、nameNode安装

修改配置文件

[root@nameNode hadoop]# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

在文件末尾添加

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64"

编辑配置文件

[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml# 修改如下
<configuration><property><name>fs.defaultFS</name><value>hdfs://nameNode:9000</value></property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml# 修改如下内容
<configuration><property><name>dfs.http.address</name><value>0.0.0.0:50070</value></property><property><name>dfs.namenode.http-address</name><value>namenode:50070</value></property><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>file:///usr/local/hadoop/data/namenode</value></property><property><name>dfs.datanode1.data.dir</name><value>file:///usr/local/hadoop/data/datanode</value></property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml# 添加如下内容
<configuration><property><name>yarn.resourcemanager.hostname</name><value>namenode</value></property>
</configuration>

修改环境变量,三台都要改

[root@namenode bin]# vim /etc/profile#配置文件中添加以下内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

 使环境变量生效

source /etc/profile

在namenode执行初始化

[root@namenode bin]# cd /usr/local/hadoop/bin
[root@namenode bin]# ./hdfs namenode -format

启动

[root@namenode bin]# cd /usr/local/hadoop/sbin/
[root@namenode sbin]# ./start-all.sh 

访问测试 

浏览器地址栏输入 http://192.168.40.140:50070/

2、dataNode安装 

拷贝安装包到两台dataNode节点

[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode1:/usr/local/hadoop/
[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode2:/usr/local/hadoop/

修改配置文件

[root@datanode1 ~]# vim /usr/local/hadoop/etc/hadoop/workers # 添加如下内容
namenode
datanode1
datanode2

 创建目录

mkdir /usr/local/hadoop/data/namenode -p

启动

[root@datanode1 sbin]# cd /usr/local/hadoop/sbin
[root@datanode1 sbin]# ./hadoop-daemon.sh start datanode
[root@datanode2 ~]# cd /usr/local/hadoop/sbin/
[root@datanode2 sbin]# ./hadoop-daemon.sh start datanode

3、访问测试 

在浏览器输入 namenode 的IP加 50070 端口

显示如下则证明成功

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于大数据的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/80796.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/80796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云人工智能大模型通义千问Qwen3开发部署

本文主要描述阿里云人工智能大模型开源社区ModelScope提供的通义千问Qwen3开发部署。 与阿里云一起 轻松实现数智化 让算力成为公共服务&#xff1a;用大规模的通用计算&#xff0c;帮助客户做从前不能做的事情&#xff0c;做从前做不到的规模。让数据成为生产资料&#xff1a;…

24.(vue3.x+vite)引入组件并动态挂载(mount)

示例截图 组件代码: <template><div><div>{{message }}</div>

《Python星球日记》 第56天:循环神经网络(RNN)入门

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、序列数据的特点与挑战1. 什么是序列数据?2. 序列数据的挑战二、RNN 的基本结构与前向传播1. RNN的核心理念2. RNN的数学表达3. RNN的前向传…

手写 vue 源码 === computed 实现

目录 计算属性的基本概念 计算属性的核心实现 ComputedRefImpl 类的实现 ReactiveEffect 与计算属性的关系 计算属性的工作流程 1. 创建计算属性 2. 依赖收集过程 3. 嵌套 effect 的处理 4. 更新过程 嵌套 effect 关系图解 依赖关系建立过程 代码实现分析 1. 创建…

【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决

在Vivado中在always块中写逻辑时如果出现always块中的异步复位敏感词在块内部未使用的情况&#xff0c;如下例的rst&#xff1a; always (posedge clk or posedge rst) begin if(~tx_sense_flag)o_rd_adr < d1;else if((o_rd_adr d94) & (bit_cnt d7))o_rd_adr <…

【hadoop】Sqoop数据迁移工具的安装部署

一、Sqoop安装与配置 步骤&#xff1a; 1、使用XFTP将Sqoop安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz发送到master机器的主目录。 2、解压安装包&#xff1a; tar -zxvf ~/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 3、修改文件夹的名字&#xff0c;将其改为s…

BUUCTF——PYWebsite

BUUCTF——PYWebsite 进入靶场 看看基本信息 没有什么信息 扫个目录看看 http://node5.buuoj.cn:28115/.DS_Store http://node5.buuoj.cn:28115/flag.php http://node5.buuoj.cn:28115/index.html访问flag.php 提示保存购买者的IP 抓包看看 直接XFF伪造一下 X-Forwarded-F…

基于Qt开发的多线程TCP服务端

目录 一、Qt TCP服务端开发环境准备1. 项目配置2. 核心类说明二、服务端搭建步骤详解步骤1:初始化服务端对象步骤2:启动端口监听步骤3:处理客户端连接三、数据通信与状态管理1. 数据收发实现2. 客户端状态监控四、进阶功能扩展1. 多客户端并发处理2. 心跳检测机制五、调试与…

【Tools】VScode使用CMake构建项目

这里写目录标题 vscode 使用 CMake**安装插件**新建CMake项目 vscode 使用 CMake 安装插件 CMake和CMake Tools c等等 CMake插件主要功能是CMake语法高亮、自动补全CMake Tools的功能主要是结合VSCode IDE使用CMake这个工具&#xff0c;比如生成CMake项目、构建CMake项目等…

neo4j图数据库基本概念和向量使用

一.节点 1.新建节点 create (n:GroupProduct {name:都邦高保额团意险,description: "保险产品名称"} ) return n CREATE&#xff1a;Neo4j 的关键字&#xff0c;用于创建新节点或关系。 (n:GroupProduct)&#xff1a; n 是节点的临时别名&#xff08;变量名&#…

2025年渗透测试面试题总结-渗透测试红队面试八(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 渗透测试红队面试八 二百一十一、常见中间件解析漏洞利用方式 二百一十二、MySQL用户密码存储与加密 …

大语言模型主流架构解析:从 Transformer 到 GPT、BERT

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…

Java设计模式之装饰器模式:从基础到高级的全面解析(万字解析)

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 一、装饰器模式基础概念 1.1 什么是装饰器模式 装饰…

RN 鸿蒙混合开发实践(踩坑)

#三方框架# #React Native # 1 。环境配置&#xff1b; 安装 DevEco 开发工具&#xff1b; Node 版本16&#xff1b; hdc环境配置 hdc 是 OpenHarmony 为开发人员提供的用于调试的命令行工具&#xff0c;鸿蒙 React Native 工程使用 hdc 进行真机调试。hdc 工具通过 OpenHa…

动态网站 LNMP

一、名词解释&#xff1a; LNMP&#xff1a; L : 代表 Linux 操作系统&#xff0c;为网站提供了可靠的运行环境N : 代表 Nginx&#xff0c;它是一款轻量级的高性能 Web 服务器&#xff0c;能够快速处理大量并 发连接&#xff0c;有效提升网站的访问速度和性能 M : 代表…

DAY04:Vue.js 指令与事件处理深度解析之从基础到实战

1. 指令系统核心概念 1.1 插值表达式与基础指令 Vue.js 的指令系统是其响应式编程模型的核心&#xff0c;我们首先从最基础的插值表达式开始&#xff1a; <div id"app"><!-- 基础文本插值 --><p>{{ message }}</p><!-- JavaScript 表达…

12配置Hadoop集群-集群配置

&#xff08;一&#xff09;Hadoop的组成 对普通用户来说&#xff0c; Hadoop就是一个东西&#xff0c;一个整体&#xff0c;它能给我们提供无限的磁盘用来保存文件&#xff0c;可以使用提供强大的计算能力。 在Hadoop3.X中&#xff0c;hadoop一共有三个组成部…

Kubernetes生产实战(四):kubelet日志快速定位指南

kubelet作为Kubernetes节点的核心管家&#xff0c;其日志是排查节点问题的金钥匙。本文将分享生产环境中查看和分析kubelet日志的完整方案&#xff0c;助你快速定位节点级故障。 一、基础操作&#xff1a;快速查看日志 1. systemd服务日志&#xff08;推荐首选&#xff09; …

麦科信获评CIAS2025金翎奖【半导体制造与封测领域优质供应商】

在苏州举办的2025CIAS动力能源与半导体创新发展大会上&#xff0c;深圳麦科信科技有限公司凭借在测试测量领域的技术积累&#xff0c;入选半导体制造与封测领域优质供应商榜单。本届大会以"新能源芯时代"为主题&#xff0c;汇集了来自功率半导体、第三代材料应用等领…

Python实例题:pygame开发打飞机游戏

目录 Python实例题 题目 pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本 代码解释 初始化部分&#xff1a; 游戏主循环&#xff1a; 退出部分&#xff1a; 运行思路 注意事项 Python实例题 题目 pygame开发打飞机游戏 pygame-aircraft-game使用 Pygame 开发…