当前位置: 首页 > news >正文

【分布式存储系统HDFS】架构和使用

分布式存储系统HDFS:架构和使用

目录

  1. 引言
  2. HDFS简介
  3. HDFS的架构
    • NameNode
    • DataNode
    • Secondary NameNode
  4. HDFS的工作原理
    • 数据读写流程
    • 数据冗余与恢复
  5. HDFS的安装和配置
    • 环境准备
    • HDFS安装步骤
    • HDFS配置文件
    • 启动HDFS
  6. HDFS的使用
    • 基本命令
    • HDFS Shell操作
    • Java API操作
  7. HDFS的应用场景
  8. 结论

引言

随着数据量的迅猛增长,传统的存储系统已经无法满足大数据的存储需求。分布式存储系统HDFS(Hadoop Distributed File System)应运而生,成为处理海量数据的重要基础设施。本文将详细介绍HDFS的架构、工作原理、安装配置及使用方法。


HDFS简介

HDFS是Apache Hadoop项目的一部分,专为大规模数据存储设计。它通过分布式架构,实现了高可靠性、高吞吐量的数据存储和访问,能够处理PB级别的数据量。HDFS采用主从架构,主要由NameNode和DataNode构成。


HDFS的架构

NameNode

NameNode是HDFS的核心组件,负责管理文件系统的元数据(如文件名、目录结构、文件与块的映射关系等)。NameNode不存储实际的数据文件,但它维护了整个文件系统的目录树及所有文件和目录的元数据信息。

DataNode

DataNode是HDFS中的工作节点,负责存储实际的数据块。每个DataNode管理其所在机器上的存储,并周期性地向NameNode汇报存储情况。DataNode执行读写操作,由客户端直接访问。

Secondary NameNode

Secondary NameNode并不是NameNode的备份,而是辅助NameNode管理元数据的组件。它定期合并NameNode的元数据快照和编辑日志,以减轻NameNode的负担,但在NameNode故障时无法替代其工作。


HDFS的工作原理

数据读写流程

写数据
  1. 客户端向NameNode请求上传文件。
  2. NameNode返回一个包含目标DataNode列表的写请求。
  3. 客户端将文件分块,并将每个数据块写入DataNode。
  4. DataNode按指定的副本数将数据块复制到其他DataNode。
读数据
  1. 客户端向NameNode请求读取文件。
  2. NameNode返回数据块所在的DataNode列表。
  3. 客户端直接从DataNode读取数据块。

数据冗余与恢复

HDFS通过数据块冗余机制,确保数据的高可靠性。默认情况下,每个数据块有三个副本,分别存储在不同的DataNode上。当某个DataNode故障时,NameNode会感知到并启动数据块的复制,以确保副本数不低于设定值。


HDFS的安装和配置

环境准备

在开始安装HDFS之前,确保以下环境准备工作已经完成:

  1. 一台或多台Linux服务器(建议使用Ubuntu或CentOS)。
  2. 安装Java JDK 8或更高版本。
  3. 安装SSH,并配置免密登录。

HDFS安装步骤

  1. 下载Hadoop:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
  1. 解压Hadoop:
tar -zxvf hadoop-3.3.1.tar.gz
  1. 配置环境变量:
export HADOOP_HOME=/path/to/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

HDFS配置文件

core-site.xml

编辑$HADOOP_HOME/etc/hadoop/core-site.xml,添加以下配置:

<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
hdfs-site.xml

编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml,添加以下配置:

<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:///path/to/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:///path/to/data</value></property>
</configuration>

启动HDFS

  1. 格式化NameNode:
hdfs namenode -format
  1. 启动HDFS:
start-dfs.sh

HDFS的使用

基本命令

  • 查看HDFS文件系统状态:
hdfs dfsadmin -report
  • 创建目录:
hdfs dfs -mkdir /user/hadoop
  • 上传文件:
hdfs dfs -put localfile.txt /user/hadoop
  • 下载文件:
hdfs dfs -get /user/hadoop/localfile.txt localfile_copy.txt
  • 删除文件:
hdfs dfs -rm /user/hadoop/localfile.txt

HDFS Shell操作

HDFS Shell提供了一组命令,用于在HDFS中执行各种操作,如创建目录、上传下载文件等。常用命令如下:

  • 列出目录内容:
hdfs dfs -ls /user/hadoop
  • 显示文件内容:
hdfs dfs -cat /user/hadoop/file.txt
  • 移动文件:
hdfs dfs -mv /user/hadoop/file1.txt /user/hadoop/file2.txt

Java API操作

HDFS提供了丰富的Java API,用于在应用程序中进行文件操作。以下是一个简单的Java示例:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class HDFSExample {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://localhost:9000");FileSystem fs = FileSystem.get(conf);// 上传文件fs.copyFromLocalFile(new Path("localfile.txt"), new Path("/user/hadoop/localfile.txt"));// 下载文件fs.copyToLocalFile(new Path("/user/hadoop/localfile.txt"), new Path("localfile_copy.txt"));fs.close();}
}

HDFS的应用场景

大数据存储与分析

HDFS能够存储和处理PB级别的数据,适用于各种大数据存储和分析场景,如日志分析、数据仓库、机器学习等。

数据备份与恢复

HDFS的高冗余机制使其成为理想的数据备份和恢复解决方案。通过多副本存储和数据块自动复制,HDFS能够有效应对硬件故障,确保数据安全。

内容分发网络

HDFS的高吞吐量和分布式架构,使其在内容分发网络(CDN)中也有广泛应用。通过将内容分散存储在多个DataNode上,HDFS能够实现快速的内容传输和访问。


结论

HDFS作为一种强大的分布式存储系统,通过分布式架构和高冗余机制,解决了大规模数据存储和处理的难题。本文详细介绍了HDFS的架构、工作原理、安装配置及使用方法,希望能帮助读者更好地理解和使用HDFS。通过合理应用HDFS,可以大幅提升数据处理能力,为业务发展提供有力支持。

相关文章:

【分布式存储系统HDFS】架构和使用

分布式存储系统HDFS&#xff1a;架构和使用 目录 引言HDFS简介HDFS的架构 NameNodeDataNodeSecondary NameNode HDFS的工作原理 数据读写流程数据冗余与恢复 HDFS的安装和配置 环境准备HDFS安装步骤HDFS配置文件启动HDFS HDFS的使用 基本命令HDFS Shell操作Java API操作 HDFS…...

Linux 实验一Linux系统安装

一、实验日期与地址 1、实验日期&#xff1a;2024年 2 月28 日 2、实验地址&#xff1a;S1-504 二、实验目的 1、掌握VMware Workstation建立虚拟机 2、掌握虚拟机环境下安装Centos 7 三、实验环境 VMware Workstation、Centos 7 四、实验内容 1、安装VMware Workstat…...

【人工智能】深度剖析AI伦理:强化隐私防线,推动算法公平性的核心议题

文章目录 &#x1f34a;1 人工智能兴起背后的伦理及道德风险1.1 算法偏见与歧视1.2 数据隐私侵权1.3 透明度受限1.4 决策失衡1.5 AI生成内容的危险性 &#x1f34a;2 建构AIGC伦理观&#xff1a;实现人机共创的永续提升2.1 技术手段与伦理预防2.2 即时警告与紧急关停措施2.3 法…...

如何解决微服务下引起的 分布式事务问题

一、什么是分布式事务&#xff1f; 虽然叫分布式事务&#xff0c;但不是一定是分布式部署的服务之间才会产生分布式事务。不是在同一个服务或同一个数据库架构下&#xff0c;产生的事务&#xff0c;也就是分布式事务。 跨数据源的分布式事务 跨服务的分布式事务 二、解决方…...

牛客周赛50轮+cf955+abc363

D-小红的因式分解_牛客周赛 Round 50 (nowcoder.com) 思路&#xff1a; 巨蠢的题目&#xff0c;ax^2bxca1*a2*x^2(b1*a2b2*a1)xb1*b2&#xff0c;即&#xff1a; aa1*a2,ba1*b2a2*b1,cb1*b2 数据范围很小&#xff0c;直接暴力枚举吧&#xff08;注意条件&#xff09; 代码…...

【MySQL】:对库和表的基本操作方法

数据库使用的介绍 什么是SQL 学习数据库的使用——>基于 SQL编程语言 来对数据库进行操作 重点表述的是“需求”&#xff0c;期望得到什么结果。&#xff08;至于结果是如何得到的&#xff0c;并不关键&#xff0c;都是数据库服务器在背后做好了&#xff09; 重点表述的是…...

Library not found for -lstdc++.6.0.9

解决方案一 由于项目已经很多年了&#xff0c;前段时间更新了Xcode发现编译报错lstdc这个库很早以前就被舍弃了&#xff0c;但是一个项目的维护都随着解决bug堆砌出来的&#xff0c;这也导致了我们的项目走上了这条路。 比如 Library not found for -lstdc.6.0.9 报的错&#x…...

防火墙之双机热备篇

为什么要在防火墙上配置双机热备技术呢&#xff1f; 相信大家都知道&#xff0c;为了提高可靠性&#xff0c;避免单点故障 肯定有聪明的小伙伴会想到那为什么不直接多配置两台防火墙&#xff0c;然后再将他们进行线路冗余&#xff0c;不就完成备份了吗&#xff1f; 答案是不…...

终端里面ifconfig命令无法运行

在 Ubuntu 以及基于 Debian 的系统中&#xff0c;ifconfig 命令可能不会默认安装&#xff0c;因为自 Ubuntu 17.10 版本开始&#xff0c;系统默认使用 ip 命令作为网络配置的主要工具&#xff0c;而 ifconfig 命令则来自 net-tools 包&#xff0c;该包不再作为标准工具被包含在…...

掌握Python中的文件序列化:Json和Pickle模块解析

Python 文件操作与管理&#xff1a;Open函数、Json与Pickle、Os模块 在Python中&#xff0c;文件是一个重要的数据处理对象。无论是读取数据、保存数据还是进行数据处理&#xff0c;文件操作都是Python编程中不可或缺的一部分。本文将详细介绍Python中文件操作的几种常用方法&…...

WordPress 6.6 “Dorsey多尔西”发布

WordPress 6.6 “Dorsey多尔西”已经发布&#xff0c;它以传奇的美国大乐队领袖 Tommy Dorsey 名字命名。Dorsey 以其音调流畅的长号和作品而闻名&#xff0c;他的音乐以其情感深度和充满活力的能量吸引了观众。 当您探索 WordPress 6.6 的新功能和增强功能时&#xff0c;让您的…...

核函数支持向量机(Kernel SVM)

核函数支持向量机&#xff08;Kernel SVM&#xff09;是一种非常强大的分类器&#xff0c;能够在非线性数据集上实现良好的分类效果。以下是关于核函数支持向量机的详细数学模型理论知识推导、实施步骤与参数解读&#xff0c;以及两个多维数据实例&#xff08;一个未优化模型&a…...

二分查找(折半查找)

这次不排序了&#xff0c;对排好序的数组做个查找吧 介绍 二分查找排序英文名为BinarySort&#xff0c;是一种效率较高的查找方法要求线性表必须采用顺序存储结构 基本思路 通过不断地将搜索范围缩小一半来找到目标元素&#xff1a; 1、假定数组为arr&#xff0c;需要查找的…...

arcgis紧凑型切片缓存(解决大范围切片,文件数量大的问题)

ArcGIS 切片缓存的紧凑型存储格式是一种优化的存储方式&#xff0c;用于提高切片缓存的存储效率和访问速度。紧凑型存储格式将多个切片文件合并为一个单一的 .bundle 文件&#xff0c;从而减少文件系统的开销和切片的加载时间。这类格式已经应用很久了&#xff0c;我记得2013我…...

ESP32CAM人工智能教学15

ESP32CAM人工智能教学15 Flask服务器TCP连接 小智利用Flask在计算机中创建一个虚拟的网页服务器服务器&#xff0c;让ESP32Cam通过WiFi连接&#xff0c;把摄像头拍摄到的图片发送到电脑中&#xff0c;并在电脑中保存成图片文件。 Flask是用Python编写的网页服务程序WebServer。…...

Pandas 33个冷知识 0721

Pandas 33个冷知识 从Excel读取数据: 使用 pd.read_excel(file.xlsx) 来读取Excel文件。 写入Excel: 使用 df.to_excel(file.xlsx, indexFalse) 将DataFrame写入Excel文件。 创建日期索引: 使用 df.set_index(pd.to_datetime(df[date])) 创建日期索引。 向后填充缺失值: 使用…...

C++ map和set的使用

目录 0.前言 1.关联式容器 2.键值对 3.树形结构的关联式容器 3.1树形结构的特点 3.2树形结构在关联式容器中的应用 4.set 4.1概念与性质 4.2使用 5.multiset 5.1概念与性质 5.2使用 6.map 6.1概念与性质 6.2使用 7.multimap 7.1概念与性质 7.2使用 8.小结 &a…...

yarn的安装和配置以及更新总结,npm的对照使用差异

1. Yarn简介 Yarn 是一个由 Facebook 开发的现代 JavaScript 包管理器&#xff0c;旨在提供更快、更安全、更可靠的包管理体验。 1.1 什么是Yarn Yarn 是一个快速、可靠和安全的 JavaScript 包管理器&#xff0c;它通过并行化操作和智能缓存机制&#xff0c;显著提升了依赖安…...

【Git命令】git rebase之合并提交记录

使用场景 在本地提交了两个commit&#xff0c;但是发现根本没有没必要分为两次&#xff0c;需要想办法把两次提交合并成一个提交&#xff1b;这个时候可以使用如下命令启动交互式变基会话&#xff1a; git rebase -i HEAD~N这里 N 是你想要重新调整的最近的提交数。 如下在本地…...

为什么品牌需要做 IP 形象?

品牌做IP形象的原因有多方面&#xff0c;这些原因共同构成了IP形象在品牌建设中的重要性和价值&#xff0c;主要原因有以下几个方面&#xff1a; 增强品牌识别度与记忆点&#xff1a; IP形象作为品牌的视觉符号&#xff0c;具有独特性和辨识性&#xff0c;能够在消费者心中留…...

Kubernetes 1.24 版弃用 Dockershim 后如何迁移到 containerd 和 CRI-O

在本系列的上一篇文章中&#xff0c;我们讨论了什么是 CRI 和 OCI&#xff0c;Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近&#xff0c;我们得知 Docker 即将从 kubernetes 中弃用&#xff01;&#xff08;查看 kubernetes 官方的这篇文章&#xff09;那么让我…...

70. 爬楼梯【 力扣(LeetCode) 】

一、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 二、测试用例 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…...

R语言优雅的把数据基线表(表一)导出到word

基线表&#xff08;Baseline Table&#xff09;是医学研究中常用的一种数据表格&#xff0c;用于在研究开始时呈现参与者的初始特征和状态。这些特征通常包括人口统计学数据、健康状况和疾病史、临床指标、实验室检测、生活方式、社会经济等。 本人在既往文章《scitb包1.6版本发…...

XMl基本操作

引言 使⽤Mybatis的注解⽅式&#xff0c;主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能&#xff0c;建议使⽤XML来配置映射语句&#xff0c;也就是将SQL语句写在XML配置⽂件中. 之前&#xff0c;我们学习了&#xff0c;用注解的方式来实现MyBatis 接下来我们…...

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序&#xff0c;它是用户使用Linux的桥梁 Shell 既是一种命令语言&#xff0c;有是一种程序设计语言 Shell是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问…...

pyspark使用 graphframes创建和查询图的方法

1、安装graphframes的步骤 1.1 查看 spark 和 scala版本 在终端输入&#xff1a; spark-shell --version 查看spark 和scala版本 1.2 在maven库中下载对应版本的graphframes https://mvnrepository.com/artifact/graphframes/graphframes 我这里需要的是spark 2.4 scala 2.…...

【web】-flask-简单的计算题(不简单)

打开页面是这样的 初步思路&#xff0c;打开F12&#xff0c;查看头&#xff0c;都发现了这个表达式的base64加密字符串。编写脚本提交答案&#xff0c;发现不对&#xff1b; 无奈点开source发现源代码&#xff0c;是flask,初始化表达式&#xff0c;获取提交的表达式&#xff0…...

Apache Sqoop

Apache Sqoop是一个开源工具&#xff0c;用于在Apache Hadoop和关系型数据库&#xff08;如MySQL、Oracle、PostgreSQL等&#xff09;之间进行数据的批量传输。其主要功能包括&#xff1a; 1. 数据导入&#xff1a;从关系型数据库&#xff08;如MySQL、Oracle等&#xff09;中将…...

【Python】TensorFlow介绍与实战

TensorFlow介绍与使用 1. 前言 在人工智能领域的快速发展中&#xff0c;深度学习框架的选择至关重要。TensorFlow 以其灵活性和强大的社区支持&#xff0c;成为了许多研究者和开发者的首选。本文将进一步扩展对 TensorFlow 的介绍&#xff0c;包括其优势、应用场景以及在最新…...

第100+16步 ChatGPT学习:R实现Xgboost分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现Xgboost分类 &#xff08…...

深圳龙岗疫情最新消息今天又封了/seo站内优化和站外优化

今天在用一键安装mysql的shell脚本安装mysql-5.1.73软件后发现mysql始终无法启动&#xff0c;多次执行后依旧报错&#xff0c;只能去查看error日志&#xff0c;发现了如下的2个错误&#xff1a; 错误一&#xff1a;Fatal error: Cant open and lock privilege tables: Table my…...

青浦营销型网站建设/东莞网站建设工作

PMP认证在国内的背景 随着国家经济建设从基础设施转向高端产业以及市场项目规模扩大&#xff0c;投资额度上升&#xff0c;在项目中对项目管理者的要求也越来越高&#xff0c;国内科技的发展&#xff0c;企业扩展项目管理人才时的要求也会随之提高&#xff0c;这时候很需要竞争…...

阿里企业邮箱客服/搜索引擎外部链接优化

花了近一天的时间&#xff0c;总算把Lenovo-Vista-Chs-Rdvd-Um下载完&#xff08;2.45G&#xff09;&#xff0c;刻盘后安装系统。安装过程中没碰到什么问题&#xff0c;但第一次久未进入系统&#xff0c;起初认为是系统仍要作初始化之类的工作&#xff0c;等了很长时间未见反应…...

网站建设推广文案/百度浏览器app下载

前言 在深入之前先了解下下ReentrantLock 和 Condition: 重入锁ReentrantLock: ReentrantLock锁在同一个时间点只能被一个线程锁持有&#xff1b;而可重入的意思是&#xff0c;ReentrantLock锁&#xff0c;可以被单个线程多次获取。 ReentrantLock分为“公平锁”和“非公平锁”…...

网上商城网站系统/公关公司

给表新增字段时&#xff0c;可能经常遇到错误&#xff1a;ORA-00054:资源正忙但指定以NOWAIT方式获取资源或者超时失效这种错误出现的情景在oracle 11.1 和 11.2 的版本中有点区别以下实验中 表 &#xff1a;create table hlb (id int); &#xff0c;表中有数据&#xff0c;ddl…...

政府网网站一般谁做的/济南最新消息今天

ylbtech-Arithmetic:Console-算法-求0—7所能组成的奇数个数1.A&#xff0c;Demo(案例)【程序83】题目&#xff1a;求0—7所能组成的奇数个数。1.程序分析&#xff1a; 1.B&#xff0c;Solution(解决方案) 【不是明白是如何构思的】using System;namespace ConsoleApplication1…...