大数据技术之Hadoop:HDFS集群安装篇(三)
目录
分布式文件系统HDFS安装篇
一、为什么海量数据需要分布式存储
二、 分布式的基础架构分析
三、 HDFS的基础架构
四 HDFS集群环境部署
4.1 下载安装包
4.2 集群规划
4.3 上传解压
4.4 配置HDFS集群
4.5 准备数据目录
4.6 分发hadoop到其他服务器
4.7 配置环境变量
4.8 为普通用户授权
4.9 对整个文件系统进行格式化
4.10 启动、停止hdfs集群
4.11 查看HDFS webUI
五、虚拟机快照
此为个人学习笔记,包含个人归纳总结以及结合了对网络资源的整理,初衷是为了自己复习巩固。如果能帮到各位是我的荣幸!
该总结参考了黑马教程,感兴趣的也可以去观看相关视频。第二章-01-[理解]为什么需要分布式存储_哔哩哔哩_bilibili
分布式文件系统HDFS安装篇
一、为什么海量数据需要分布式存储
假如某个文件有100TB,试想哪台服务器能存下这么大的文件?
所以我们会搭建分布式服务集群,将这100TB的文件分成几份,分别发送到不同的服务器上。
当然,分布式不仅仅是解决了能存的问题, 多台服务器协同工作带来的也是性能的横向扩展。
也相当于是磁盘写入效率、传输效率的大大增加。
总结:
数据量太大,单机存储能力有上限,需要靠数量来解决问题。
数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的综合提升。 分布式组合在一起可以达到1+1>2的效果。
二、 分布式的基础架构分析
数量多,在现实生活中往往带来的不是提升,而是:混乱。
众多的服务器一起工作,是如何高效、不出问题呢?
大数据体系中,分布式的调度主要有2类架构模式:去中心化模式和中心化模式。


-
大数据框架,大多数的基础架构上,都是符合:中心化模式的。
即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。
这种模式,也被称之为:一主多从模式,简称主从模式(Master And Slaves)
-
三、 HDFS的基础架构
什么是HDFS?
-
HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一。
-
全称是:Hadoop Distributed File System(Hadoop分布式文件系统)。
-
它是Hadoop技术栈内提供的分布式数据存储解决方案。
-
可以在多台服务器上构建存储集群,存储海量的数据。
-
HDFS是一个典型的主从模式架构
-
HDFS中的架构角色有哪些?
-

NameNode:主角色,管理HDFS集群和DataNode角色
-
DataNode:从角色,负责数据的存储
-
SecondaryNameNode:辅助角色,协助NameNode整理元数据
-

-

四 HDFS集群环境部署
-
4.1 下载安装包
-
官方网址:https://hadoop.apache.org,课程使用当前最新的发行版:3.3.4版。
-

-
4.2 集群规划
4.3 上传解压
-
请确认已经完成前置准备中的服务器创建、固定IP、防火墙关闭、Hadoop用户创建、SSH免密、JDK部署等操作。
-
1. 上传Hadoop安装包到centos100节点中
-

-
2. 解压缩安装包到/opt/software/hadoop/中
-
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/software/hadoop/
-
3. 进入hadoop-3.3.4内

各个文件夹含义如下
-
bin,存放Hadoop的各类程序(命令)
-
etc,存放Hadoop的配置文件
-
include,C语言的一些头文件
-
lib,存放Linux系统的动态链接库(.so文件)
-
libexec,存放配置Hadoop系统的脚本文件(.sh和.cmd)
-
licenses-binary,存放许可证文件
-
sbin,管理员程序(super bin)
-
share,存放二进制源码(Java jar包)
4.4 配置HDFS集群
配置HDFS集群,我们主要涉及到如下文件的修改:
- workers: 配置从节点(DataNode)有哪些
- hadoop-env.sh: 配置Hadoop的相关环境变量
- core-site.xml: Hadoop核心配置文件
- hdfs-site.xml: HDFS核心配置文件
这些文件均存在与$HADOOP_HOME/etc/hadoop文件夹中。
ps:$HADOOP_HOME是后续我们要设置的环境变量,其指代Hadoop安装文件夹即/export/server/hadoop
配置workers文件
进入安装目录下的etc/hadoop目录。这里面存放了Hadoop的配置。编辑workers文件。

设置为我们的服务器名称,表示集群记录了这三个节点。
配置hadoop-env.sh文件
这个文件是Hadoop在运行时需要使用到的一些环境变量
# 填入如下内容
export JAVA_HOME=/opt/software/jdk
export HADOOP_HOME=/opt/software/hadoop/hadoop-3.3.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
-

-

配置core-site.xml文件
Hadoop的核心配置文件,主要配置HDFS文件系统的网络通讯地址和io操作文件缓冲区大小。
-
端口号一般大家都是用的8020,一般不建议更改。
<configuration><property><name>fs.defaultFS</name><value>hdfs://centos100:8020</value></property><property><name>io.file.buffer.size</name><value>131072</value></property>
</configuration>

配置hdfs-site.xml文件
<configuration><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>centos100,centos101,centos102</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>
</configuration>
-


-

4.5 准备数据目录
-
刚刚配置文件种规定了namenode和datanode的文件存储位置,但是还没有创建该目录。所以接下来我们需要创建目录。
-
在centos100节点:
-
mkdir -p /data/nn mkdir /data/dn在centos101节点和centos102节点:
-
mkdir -p /data/dn
-
4.6 分发hadoop到其他服务器
刚才我们安装、配置都是在centos100这台服务器上的,但是centos101和centos102这两台都还没有安装过hadoop,显然是不行的。
所以,我们可以通过分发的方式,将Hadoop分发到centos101和centos102这两台服务器上。


执行的时间可能比较长,要耐心等待。
执行完毕后,我们去centos101和centos102这两台服务器看看,分发过来没。

4.7 配置环境变量
我们操作Hadoop的可执行命令,需要进入到它的bin目录下,然后执行对应的命令。
但是我们觉得这样太麻烦了,能不能在任何地方都可以直接执行命令呢,当然可以。
这需要我们配置环境变量。
修改/etc/profile文件
vim /etc/profileexport HADOOP_HOME=/opt/software/hadoop/hadoop-3.3.4 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
让环境变量生效
source /etc/profile
然后在另外两台服务器中都同样配置一下。
4.8 为普通用户授权
hadoop部署的准备工作基本完成
为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务
所以,现在需要对文件权限进行授权。
ps:请确保已经提前创建好了hadoop用户(前置准备章节中有讲述),并配置好了hadoop用户之间的免密登录
以root身份,在centos100、centos101、centos102三台服务器上均执行如下命令:
# 以root身份,在三台服务器上均执行 chown -R hadoop:hadoop /data chown -R hadoop:hadoop /opt-R 表示对子文件夹全部执行更改
前一个hadoop表示账号,冒号后的hadoop表示hadoop账户组
最后是要授权的路径


-

4.9 对整个文件系统进行格式化
- 前期准备全部完成,现在对整个文件系统执行初始化。
格式化namenode
# 确保以hadoop用户执行
su - hadoop
# 格式化namenode
hadoop namenode -format
-

可以发现执行完成后,这个文件中就有数据了。
-
至于这些文件是什么,后续再说。
-
4.10 启动、停止hdfs集群
- 下面我们以hadoop用户,在centos100上通过命令可以一键启动停止整个hdfs集群。
-
# 一键启动hdfs集群 start-dfs.sh # 一键关闭hdfs集群 stop-dfs.sh# 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行 /opt/oftware/hadoop/hadoop-3.3.4/sbin/start-dfs.sh /opt/oftware/hadoop/hadoop-3.3.4/sbin/stop-dfs.sh

-
通过jps去另外两台服务器查看一下,也启动成功了。
-

-
停止hdfs集群试试。
-

4.11 查看HDFS webUI
-
我们先不要关闭集群。然后通过web访问centos100这台服务器的9870端口,即可查看HDFS的web可视化页面。
当然了,如果windows系统配置了host文件,将这几个ip地址映射了服务名,也可以直接用域名:9870的方式打开。



-
-
五、虚拟机快照
- 为了避免服务器出问题,导致我们辛辛苦苦搭建的集群崩溃掉。我们最好做一下快照保存。这样即使后面我们误操作,导致服务器崩溃掉,也可以恢复到我们当前这个阶段。
- 好了,这部分内容暂时就梳理到这里。我们下个阶段见!
相关文章:
大数据技术之Hadoop:HDFS集群安装篇(三)
目录 分布式文件系统HDFS安装篇 一、为什么海量数据需要分布式存储 二、 分布式的基础架构分析 三、 HDFS的基础架构 四 HDFS集群环境部署 4.1 下载安装包 4.2 集群规划 4.3 上传解压 4.4 配置HDFS集群 4.5 准备数据目录 4.6 分发hadoop到其他服务器 4.7 配置环境变…...
移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略
您可以将本文作为指南,确保您的应用程序符合可行的最重要标准。请注意,这份清单远非详尽无遗;您可以加以利用,并添加一些自己的见解。 了解您的目标受众 要制作一个成功的应用程序,你需要了解你是为谁制作的。从创建…...
2023年第二届网络安全国际会议(CSW 2023)
会议简介 Brief Introduction 2023年第二届网络安全国际会议(CSW 2023) 会议时间:2023年10月13日-15日 召开地点:中国杭州 大会官网:www.cybersecurityworkshop.org 2023年第二届网络安全国际会议(CSW 2023)由杭州电子科技大学,国…...
【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
目录 专栏导读 1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素 2.2 正则表达式的分组操作 3 re 模块详解与示例 4 正则表达式修饰符 专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 1 正则表达式概述 python 的…...
C++ 派生类成员的标识与访问——作用域分辨符
在派生类中,成员可以按访问属性分为以下四种: (1)不可访问成员。这是从基类私有成员继承下来的,派生类或是建立派生类对象的模块都无法访问到它们,如果从派生类继续派生新类,也是无法访问的。 &…...
SQL注入实操三(SQLilabs Less41-65)
文章目录 一、sqli-labs靶场1.轮子模式总结2.Less-41 stacked Query Intiger type blinda.注入点判断b.轮子测试c.获取数据库名称d.堆叠注入e.堆叠注入外带注入获取表名f.堆叠注入外带注入获取列名g.堆叠注入外带注入获取表内数据 3.Less-42 Stacked Query error baseda.注入点…...
(亲测解决)PyCharm 从目录下导包提示 unresolved reference(完整图解)
最近在进行一个Flask项目的过程中遇到了unresolved reference 包名的问题,在网上找了好久解决方案,并没有一个能让我一步到位解决问题的。 后来,我对该问题和网上的解决方案进行了分析,发现网上大多数都是针对项目同一目录下的py…...
【AI量化模型】跑通baseline
跑通baseline 任务学习内容特征工程模型训练与验证 bug未纠错的结果 任务 教程部署在百度 AI Studio,可以一键fork运行代码,选择*v100 32g1*的配置,baseline运行大约20分钟,再加上进阶部分大约40分钟 学习内容 特征工程 构建基…...
ElasticSearch:全文检索及倒排索引原理
1.从全文检索说起 首先介绍一下结构化与非结构化数据: 结构化数据将数据具有的特征事先以结构化的形式定义好,数据有固定的格式或有限的长度。典型的结构化数据就是传统关系型数据库的表结构,数据特征直接体现在表结构的字段上,…...
blk_mq_alloc_tag_set函数struct blk_mq_tag_set结构体学习
struct blk_mq_tag_set结构体 include/linux/blk-mq.h struct blk_mq_tag_set {unsigned int *mq_map;const struct blk_mq_ops *ops;unsigned int nr_hw_queues;unsigned int queue_depth; /* max hw supported */unsigned int reserved_tags;unsigned int cmd_size; /…...
Windows搭建Snort环境及使用方式
目录 0x01 前置环境0x02修改配置文件0x03 自测0x04 使用0x05 感言 0x01 前置环境 环境描述windows10snort2.9.2https://www.snort.org/downloads 先把上面环境下载好! 需要注意的是安装npcap这个软件 0x02修改配置文件 软件安装目录:C:/Snort/ 配置文…...
Android network — iptables四表五链
Android network — iptables四表五链 1. iptables简介2. iptables的四表五链2.1 iptables流程图2.2 四表2.3 五链2.4 iptables的常见情况 3. NAT工作原理3.1 BNAT3.2 NAPT 4. iptables配置 本文主要介绍了iptables的基本工作原理和四表五链等基本概念以及NAT的工作原理。 1. i…...
【C++从0到王者】第十六站:stack和queue的使用
文章目录 一、stack的使用1.stack的介绍2.stack的使用 二、queue的使用1.queue的护额晒2.queue的使用 三、stack和queue相关算法题1.最小栈2.栈的压入、弹出序列3.逆波兰表达式4.两个栈实现一个队列5.用两个队列实现栈6.二叉树的层序遍历1.双队列2.用一个变量levelSize去控制 7…...
centos7 部署Tomcat和jpress应用
目录 一、静态、动态、伪静态 二、Web 1.0 和 Web 2.0 三、centos7 部署Tomcat 3.1 安装、配置jdk 3.2 安装 Tomcat 3.3 配置服务启动脚本 3.3.1 创建用户和组 3.3.2 创建tomcat.conf文件 3.3.3 创建服务脚本(tomcat.service) 3.3.4 重新加载守护进程并且测试 四、部…...
Unity Shader:常用的C#与shader交互的方法
俗话说久病成医,虽然不是专业技术美术,但代码写久了自然会积累一些常用的shader交互方法。零零散散的,总结如下: 1,改变UGUI的材质球属性 有时候我们需要改变ui的一些属性,从而实现想要的效果。通常UGUI上…...
luajit 使用 clang编译的坑
为了尝试将LuaJIT接入虚幻Lua插件之中,需要预编译LuaJIT链接库,在桌面平台问题不大, 主要是移动平台,涉及跨平台编译,因为对跨平台编译具体细节没有系统研究,这里先记录一下跨平台编译LuaJIT的主要过程 由于官方提供的…...
[SWPUCTF 2021 新生赛]Do_you_know_http
打开环境,根据题目提示,应该是考察http相关的东西 打开环境提示说请使用wLLm浏览器访问 那我们更改浏览器信息,在burp重发器中发包后发现是302重定向,但是提示说success成功,说明 我们修改是成功的,既然是…...
web前端之CSS
文章目录 一、CSS简介1.1 CSS语法规则 二、CSS的引用方法2.1 定义行内样式表2.2定义内部样式表2.3链入外部样式表2.4导入外部样式表 三、CSS选择符3.1 基本选择符3.1.1 标签选择符3.1.2 class类选择符3.1.3 id选择符 3.2 复合选择符3.2.1 交集选择符(合并选择器&…...
HarmonyOS元服务开发实践:桌面卡片字典
一、项目说明 1.DEMO创意为卡片字典。 2.不同卡片显示不同内容:微卡、小卡、中卡、大卡,根据不同卡片特征显示同一个字的不同内容,基于用户习惯可选择喜欢的卡片。 3.万能卡片刷新:用户点击卡片刷新按钮查看新内容,同时…...
xLua学习
xLua教程:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md xLua配置:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/configure.md FAQ:https://github.com/Tencent/xLua/blob/maste…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
