「大数据-2.0」安装Hadoop和部署HDFS集群

目录

一、下载Hadoop安装包

二、安装Hadoop

 0. 安装Hadoop前的必要准备

1. 以root用户登录主节点虚拟机

2. 上传Hadoop安装包到主节点

3. 解压缩安装包到/export/server/目录中

4. 构建软链接

三、部署HDFS集群

0. 集群部署规划

1. 进入hadoop安装包内

2 进入etc目录下的hadoop目录

3. 配置workers文件

4. 配置hadoop-env.sh文件

5.配置core-site.xml文件

6.配置hdfs-site.xml文件

7. 准备数据目录

8. 分发Hadoop文件夹

三、配置环境变量 

四、为Hadoop用户授权

五、格式化HDFS文件系统

1. 格式化namenode

2. 一键启动hdfs集群

3. 使用jps检查运行中的进程

4. 查看HDFS WEBUI

六、拍摄快照保存配置好的虚拟机 

七、启动和关闭HDFS集群

1. 一键启动HDFS集群

2. 一键关闭HDFS集群 


一、下载Hadoop安装包

1. 官网下载


2. 百度网盘链接  提取码:2233

二、安装Hadoop

0. 安装Hadoop前的必要准备

        在开始部署前,请确认已经完成前置准备中的服务器创建、固定IP、防火墙关闭、Hadoop用户创建、SSH免密、JDK部署等操作。 如果不确定,请看博主文章:http://t.csdn.cn/YlUi5


1. 以root用户登录主节点虚拟机

        如博主的主节点为node1,所以在node1虚拟机中以root身份登录,进入/export/server/目录下。


2. 上传Hadoop安装包到主节点

        将下载好的压缩包拖拽到远程终端软件 或 在远程终端软件中使用rz命令。


3. 解压缩安装包到/export/server/目录中

1. 进入/export/server/目录:
cd /export/server/2. 解压到当前目录下:
tar -zxvf hadoop-3.3.4.tar.gz

4. 构建软链接

ln -s /export/server/hadoop-3.3.4 hadoop

三、部署HDFS集群

0. 集群部署规划


1. 进入hadoop安装包内

cd hadoop

Hadoop安装包的目录结构:

现在是集群部署的配置阶段,我们着重于etc目录。


2 进入etc目录下的hadoop目录

cd /etc/hadoop

接下来主要要对以下四个文件进行配置:


3. 配置workers文件

        workers文件的作用是记录大数据集群中的从节点服务器。

配置步骤:

1. 使用vim打开workers:
vim workers2. 按i进入插入模式3. 删除原来的lockhoot4. 写入:
node1
node2
node35. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。


4. 配置hadoop-env.sh文件

        hadoop-env.sh文件的作用是记录Hadoop在运行时会用到的一些环境变量。

配置步骤:

1. 使用vim打开hadoop-env.sh:
vim hadoop-env.sh2. 按i进入插入模式3. 找个空白的地方(最上面)写入:
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。说明:
JAVA_HOME,指明JDK环境的位置在哪
HADOOP_HOME,指明Hadoop安装位置
HADOOP_CONF_DIR,指明Hadoop配置文件目录位置
HADOOP_LOG_DIR,指明Hadoop运行日志目录位置
通过记录这些环境变量, 来指明上述运行时的重要信息


5.配置core-site.xml文件

        该文件的作用是配置一些自定义设置,我们要在这里配置NameNode(主节点)的启动和缓冲区大小。

配置步骤:

1. 使用vim打开core-site.xml:
vim core-site.xml2. 找到标签<configuration></configuration>3. 按i进入插入模式,在标签中间写入:<property><name>fs.defaultFS</name><value>hdfs://node1:8020</value></property><property><name>io.file.buffer.size</name><value>131072</value></property>4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。说明:
1.key:fs.defaultFS
含义:HDFS文件系统的网络通讯路径
值:hdfs://node1:8020
协议为hdfs://
namenode(主节点)为node1
namenode(主节点)通讯端口为8020
2.key:io.file.buffer.size
含义:io操作文件缓冲区大小
值:131072 bit
3.hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)
表明DataNode(从节点)将和node1的8020端口通讯,node1是NameNode(主节点)所在机器
此配置固定了node1必须启动NameNode(主节点)进程


6.配置hdfs-site.xml文件

        该文件的作用也是配置一些自定义设置,我们要在这里配置:默认创建的文件权限、主节点数据的存储位置、NameNode(主节点)允许哪几个节点的DataNode(从节点)连接(即允许加入集群)、hdfs默认块大小、Namenode(主节点)处理的并发线程数、从DataNode(从节点)的数据存储目录。

配置步骤:

1. 使用vim打开hdfs-site.xml:
vim hdfs-site.xml2. 找到标签<configuration></configuration>3. 按i进入插入模式,在标签中间写入:<property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><property><name>dfs.namenode.name.dir</name><value>/data/nn</value></property><property><name>dfs.namenode.hosts</name><value>node1,node2,node3</value></property><property><name>dfs.blocksize</name><value>268435456</value></property><property><name>dfs.namenode.handler.count</name><value>100</value></property><property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。说明:
1.key:dfs.datanode.data.dir.perm
含义:hdfs文件系统,默认创建的文件权限设置
值:700,即:rwx------
2.key:dfs.namenode.name.dir
含义:NameNode(主节点)元数据的存储位置
值:/data/nn,在node1节点的/data/nn目录下
3.key:dfs.namenode.hosts
含义:NameNode(主节点)允许哪几个DataNode(从节点)连接(即允许加入集群)
值:node1、node2、node3,这三台服务器被授权
4.key:dfs.blocksize
含义:hdfs默认块大小
值:268435456(256MB)
5.key:dfs.namenode.handler.count
含义:Namenode(主节点)处理的并发线程数
值:100,以100个并行度处理文件系统的管理任务
6.key:dfs.datanode.data.dir
含义:DataNode(从节点)的数据存储目录
值:/data/dn,即数据存放在node1、node2、node3,三台机器的/data/dn内


7. 准备数据目录

        在之前的配置中,只是指定了主节点和从节点的数据放在哪个文件,但我们还没有真正的创建这些文件,现在我们就是要创建这些文件。

        在上一步中的配置中,我们把 namenode数据存放在node1虚拟机的/data/nn目录下;datanode数据存放在node1、node2、node3虚拟机的/data/dn目录下。

        所以我们要在node1虚拟机创建/data/nn目录和/data/dn目录;在node2、node3虚拟机创建/data/dn目录(不要少了data前面的/)。

步骤:

1.在node1虚拟机:
mkdir -p /data/nn
mkdir -p /data/dn2.在node2和node3虚拟机:
mkdir -p /data/dn

8. 分发Hadoop文件夹

        目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2、node3(通过scp命令)。

步骤:

1. 在node1虚拟机执行如下命令
cd /export/server
scp -r hadoop-3.3.4 node2:`pwd`/
scp -r hadoop-3.3.4 node3:`pwd`/2. 在node2执行如下命令,为hadoop配置软链接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop3. 在node3执行如下命令,为hadoop配置软链接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop

三、配置环境变量 

        为了方便我们操作Hadoop,可以将Hadoop的一些脚本、程序配置到PATH中(通过配置profile文件),方便后续使用。

1. 修改/etc目录下的profile文件:

1. 使用vim打开/etc下的profile文件:
vim /etc/profile2. 按i进入插入模式,在末尾追加写入:
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin3. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。

2. 启动上面的配置

source /etc/profile

3. 在node2和node3虚拟机中重复上面的步骤。

四、为Hadoop用户授权

        到了这里,hadoop部署的准备工作基本完成,为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务。所以,现在需要对文件权限进行授权。


1. 以root身份,在node1、node2、node3三台虚拟机上均执行如下命令:

# 以root身份,在三台服务器上均执行
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export

2. 检查

五、格式化HDFS文件系统

        前期准备全部完成,现在对整个文件系统执行初始化,以下命令在主节点虚拟机node1中执行即可。


1. 格式化namenode

1. 在主节点虚拟机node1中切换到hadoop用户
su - hadoop
2. 格式化namenode
hadoop namenode -format

这样表示格式化成功了


2. 一键启动hdfs集群

1. 回到根目录
cd
2. 一键启动hdfs集群
start-dfs.sh

3. 使用jps检查运行中的进程

在终端中输入jps,如果显示内容像图片中的一样基本上表示整个配置都成功了:

如果jps中没有Datanode,证明clusterID有问题:

原因是多次格式化NameNode会重新生成新的clusterID(集群ID)

我们要做的是在主节点node1下找到正确的clusterID,然后更改所有从节点的clusterID。

步骤:

1. 进入node1虚拟机下的/data/nn/current/目录
cd /data/nn/current/2. 打开VERSION文件
vim VERSION3. 复制clusterID4. 退出,然后进入/data/dn/current/目录
cd /data/dn/current/5. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID6. 进入node2虚拟机下的/data/dn/current/目录
cd /data/dn/current/7. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID8. 进入node3虚拟机下的/data/dn/current/目录
cd /data/dn/current/9. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID

4. 查看HDFS WEBUI

        启动Hadoop后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。

能够打开这个网址,且Live Nodes 为3,就表示我们的Hadoop部署完全成功了!

六、拍摄快照保存配置好的虚拟机 

0. 为什么需要拍摄快照?

        拍快照相当于给当前虚拟机的配置做一个备份,将来有问题,直接按照快照还原虚拟机即可,不需要删除再重新配置。


1. 在VMware将所有虚拟机关机


2. 拍摄快照


3. 如何使用快照恢复?

七、启动和关闭HDFS集群

Hadoop HDFS组件内置了HDFS集群的一键启停脚本。

1. 一键启动HDFS集群

$HADOOP_HOME/sbin/start-dfs.sh

2. 一键关闭HDFS集群 

$HADOOP_HOME/sbin/stop-dfs.sh

关闭虚拟机前一定要先关闭HDFS集群,然后用 init 0 断开Xshell等远程连接!


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

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

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

相关文章

图像几何变换

图像缩放 图像缩放&#xff0c;顾名思义&#xff0c;就是对图像进行整体放大或缩小的操作。图像缩放在数据预处理时经常会用作规范图像的大小&#xff08;宽高&#xff09;&#xff0c;从而便于后面神经网络的处理。OpenCV中是利用cv2.resize(src,dsize,dstNone,fxNone,fyNone…

从零开始之了解电机及其控制(1)磁场与磁力

&#xff08;链接&#xff1a;从零开始之电机FOC控制_foc电机_一只小白啊的博客-CSDN博客&#xff09;之后&#xff0c;总感觉整个流程都知道&#xff0c;但是深入到具体细节时&#xff0c;就不知所措&#xff0c;感觉啥也不懂一样。 那么为什么要用FOC控制无刷电机呢&#xff…

【项目管理】--敏捷开发管理之Scrum

目录 一、前言二、what---敏捷开发是什么2.1、敏捷开发宣言2.2、敏捷开发原则2.3、一句话概述敏捷开发三、why---为什么会有敏捷开发3.1、传统开发模式和敏捷开发模式对比四、how---敏捷开发怎么实践到项目团队4.1、what---Scrum是什么4.2、what---Scrum有哪些内容(1)、Scrum之…

学习记忆——宫殿篇——记忆宫殿——记忆桩——单间+客厅+厨房+厕所+书房+院子

文章目录 单间客厅厨房厕所书房院子 单间 水壶 水龙头 香皂 果汁机 电视 门空间 花 红酒 葡萄 不锈钢 白毛沙发 彩色垫子 吉他 皮椅 挂画 风扇 糖抱枕 盒子 花土 水晶腿 衣柜 笔 三环相框 水壶 壁挂 台灯 被 网球拍 足球 抽屉 闹钟 蝴蝶 心 斑马 三轮车 音响 椅子 碗 玩偶 烟灰…

AIGC 绘画Stable Diffusion工具的安装与使用

我们先让ChatGPT来帮我们回答一下,什么是Stable Diffusion Stable Diffusion 是一种基于概率模型的图像生成技术。它通过对图像空间中每个像素的颜色值进行推断,从而生成具有高度真实感和细节的图像。 Stable Diffusion 使用一种称为扩散过程的方法来生成图像。在生成过程中…

React 全栈体系(十七)

第九章 React Router 6 一、概述 React Router 以三个不同的包发布到 npm 上&#xff0c;它们分别为&#xff1a; react-router: 路由的核心库&#xff0c;提供了很多的&#xff1a;组件、钩子。react-router-dom: 包含 react-router 所有内容&#xff0c;并添加一些专门用于 …

为什么要用线程池?

线程池是一种管理和复用线程资源的机制&#xff0c;它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池&#xff0c;以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源&#xff0c;避免了线程的频繁…

星河AI网络,大模型纪元的运力答案

随着AI预训练大模型的价值不断显现&#xff0c;且模型规模愈发庞大。产学各界已经形成了这样一个共识&#xff1a;AI时代&#xff0c;算力就是生产力。 这一认知虽然正确&#xff0c;却并不全面。数字化系统有存、算、网三大支柱&#xff0c;AI技术也是如此。如果抛开存储和网络…

diskGenius专业版使用:windows系统下加载ext4 linux系统分区并备份还原资源(文件的拷贝进、出)

前言 EXT4是第四代扩展文件系统&#xff08;英语&#xff1a;Fourth extended filesystem&#xff0c;缩写为 ext4&#xff09;是Linux系统下的日志文件系统&#xff0c;是ext3文件系统的后继版本。 所以我们在windows系统下是不能识别的&#xff0c;也不能对其写入、拷贝出文…

Azure AD混合部署,通过 Intune 管理设备,实现条件访问

需求&#xff1a; 公司要求&#xff0c;非公司设备不允许使用 邮箱&#xff0c;Teams等O365服务。 我们可以通过 Intune 中的 "条件访问" 解决这个问题。 一、设备同步到 AAD 1、配置 AAD Connect 2、选择 3、下一步 4、配置本地 企业管理员 5、配置成功 二、设备…

DataExcel控件读取和保存excel xlsx 格式文件

需要引用NPOI库 https://github.com/dotnetcore/NPOI 调用Read 函数将excel读取到dataexcel控件 调用Save 函数将dataexcel控件文件保存为excel文件 using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; using System; using …

torch.sum()——dim参数

dim指在dim的这个维度上&#xff0c;对tesnor 进行求和&#xff0c;如果keepdim&#xff08;保持维度&#xff09;False&#xff0c;返回结果会删去dim所指的这个维度。以下面的例子分析dim的参数~ torch.tensor([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) print(…

【C++STL基础入门】list交换、翻转,排序、合并和拼接操作

文章目录 前言一、交换list二、翻转list三、排序list四、合并list五、拼接list总结 前言 在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;list是一个双向链表容器&#xff0c;提供了丰富的功能和操作。本文将介绍list容器在交换、翻转、排序、合并和拼接等方面的基…

消息中间件

rabbitmq如何保证消息不丢失&#xff1f; 先要看生产者发送消息再哪个环节会丢失&#xff1f; 1 生产者发送消息到交换机失败&#xff08;生产者服务宕机&#xff09; 2 交换机到队列失败 3队列中消息丢失 消息失败后怎么处理呢&#xff1f; 可以设置回调方法重发 记录日…

【JVM】运行时数据区之方法区——自问自答

开局从康师傅那里借图几张 线程共享与私有 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分&#xff0c;但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。” 但对于HotSpotJVM而言&#xff0c;方法区还有一个别名叫做Non-Heap(非堆)&#…

Vue之ElementUI之动态树+数据表格+分页(项目功能)

目录 前言 一、实现动态树形菜单 1. 配置相应路径 2. 创建组件 3. 配置组件与路由的关系 index.js 4. 编写动态树形菜单 5. 页面效果演示 二、实现数据表格绑定及分页功能 1. 配置相应路径 2. 编写数据表格显示及分页功能代码 BookList.vue 3. 演示效果 总结 前言…

vue 普通组件的 局部注册

vue 普通组件的 注册 11 Vue2_3入门到实战-配套资料\01-随堂代码素材\day03\素材\00-准备代码\小兔鲜首页静态页\src

蓝桥杯每日一题20223.9.26

4407. 扫雷 - AcWing题库 题目描述 分析 此题目使用map等都会超时&#xff0c;所以我们可以巧妙的使用哈希模拟散列表&#xff0c;哈希表初始化为-1首先将地雷读入哈希表&#xff0c;找到地雷的坐标在哈希表中对应的下标&#xff0c;如果没有则此地雷的位置第一次出现&#…

MySQL基础篇-约束

目录 1.约束概述 2.分类 3.测试user表的约束情况 主键约束 非空约束及唯一约束 检查约束 默认约束 4.外键约束 外键约束的语法 外键约束的删除/更新行为 小结 1.约束概述 MySQL约束&#xff08;Constraints&#xff09;是用于确保表中数据完整性和一致性的规则。它们定…

vue3 + mark.js | 实现文字标注功能

页面效果 具体实现 新增 1、监听鼠标抬起事件&#xff0c;通过window.getSelection()方法获取鼠标用户选择的文本范围或光标的当前位置。2、通过 选中的文字长度是否大于0或window.getSelection().isCollapsed (返回一个布尔值用于描述选区的起始点和终止点是否位于一个位置&…