【分布式存储系统HDFS】架构和使用
分布式存储系统HDFS:架构和使用
目录
- 引言
- HDFS简介
- HDFS的架构
- NameNode
- DataNode
- Secondary NameNode
- HDFS的工作原理
- 数据读写流程
- 数据冗余与恢复
- HDFS的安装和配置
- 环境准备
- HDFS安装步骤
- HDFS配置文件
- 启动HDFS
- HDFS的使用
- 基本命令
- HDFS Shell操作
- Java API操作
- HDFS的应用场景
- 结论
引言
随着数据量的迅猛增长,传统的存储系统已经无法满足大数据的存储需求。分布式存储系统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的工作原理
数据读写流程
写数据
- 客户端向NameNode请求上传文件。
- NameNode返回一个包含目标DataNode列表的写请求。
- 客户端将文件分块,并将每个数据块写入DataNode。
- DataNode按指定的副本数将数据块复制到其他DataNode。
读数据
- 客户端向NameNode请求读取文件。
- NameNode返回数据块所在的DataNode列表。
- 客户端直接从DataNode读取数据块。
数据冗余与恢复
HDFS通过数据块冗余机制,确保数据的高可靠性。默认情况下,每个数据块有三个副本,分别存储在不同的DataNode上。当某个DataNode故障时,NameNode会感知到并启动数据块的复制,以确保副本数不低于设定值。
HDFS的安装和配置
环境准备
在开始安装HDFS之前,确保以下环境准备工作已经完成:
- 一台或多台Linux服务器(建议使用Ubuntu或CentOS)。
- 安装Java JDK 8或更高版本。
- 安装SSH,并配置免密登录。
HDFS安装步骤
- 下载Hadoop:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
- 解压Hadoop:
tar -zxvf hadoop-3.3.1.tar.gz
- 配置环境变量:
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
- 格式化NameNode:
hdfs namenode -format
- 启动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:架构和使用 目录 引言HDFS简介HDFS的架构 NameNodeDataNodeSecondary NameNode HDFS的工作原理 数据读写流程数据冗余与恢复 HDFS的安装和配置 环境准备HDFS安装步骤HDFS配置文件启动HDFS HDFS的使用 基本命令HDFS Shell操作Java API操作 HDFS…...
Linux 实验一Linux系统安装
一、实验日期与地址 1、实验日期:2024年 2 月28 日 2、实验地址:S1-504 二、实验目的 1、掌握VMware Workstation建立虚拟机 2、掌握虚拟机环境下安装Centos 7 三、实验环境 VMware Workstation、Centos 7 四、实验内容 1、安装VMware Workstat…...
【人工智能】深度剖析AI伦理:强化隐私防线,推动算法公平性的核心议题
文章目录 🍊1 人工智能兴起背后的伦理及道德风险1.1 算法偏见与歧视1.2 数据隐私侵权1.3 透明度受限1.4 决策失衡1.5 AI生成内容的危险性 🍊2 建构AIGC伦理观:实现人机共创的永续提升2.1 技术手段与伦理预防2.2 即时警告与紧急关停措施2.3 法…...
如何解决微服务下引起的 分布式事务问题
一、什么是分布式事务? 虽然叫分布式事务,但不是一定是分布式部署的服务之间才会产生分布式事务。不是在同一个服务或同一个数据库架构下,产生的事务,也就是分布式事务。 跨数据源的分布式事务 跨服务的分布式事务 二、解决方…...
牛客周赛50轮+cf955+abc363
D-小红的因式分解_牛客周赛 Round 50 (nowcoder.com) 思路: 巨蠢的题目,ax^2bxca1*a2*x^2(b1*a2b2*a1)xb1*b2,即: aa1*a2,ba1*b2a2*b1,cb1*b2 数据范围很小,直接暴力枚举吧(注意条件) 代码…...
【MySQL】:对库和表的基本操作方法
数据库使用的介绍 什么是SQL 学习数据库的使用——>基于 SQL编程语言 来对数据库进行操作 重点表述的是“需求”,期望得到什么结果。(至于结果是如何得到的,并不关键,都是数据库服务器在背后做好了) 重点表述的是…...
Library not found for -lstdc++.6.0.9
解决方案一 由于项目已经很多年了,前段时间更新了Xcode发现编译报错lstdc这个库很早以前就被舍弃了,但是一个项目的维护都随着解决bug堆砌出来的,这也导致了我们的项目走上了这条路。 比如 Library not found for -lstdc.6.0.9 报的错&#x…...
防火墙之双机热备篇
为什么要在防火墙上配置双机热备技术呢? 相信大家都知道,为了提高可靠性,避免单点故障 肯定有聪明的小伙伴会想到那为什么不直接多配置两台防火墙,然后再将他们进行线路冗余,不就完成备份了吗? 答案是不…...
终端里面ifconfig命令无法运行
在 Ubuntu 以及基于 Debian 的系统中,ifconfig 命令可能不会默认安装,因为自 Ubuntu 17.10 版本开始,系统默认使用 ip 命令作为网络配置的主要工具,而 ifconfig 命令则来自 net-tools 包,该包不再作为标准工具被包含在…...
掌握Python中的文件序列化:Json和Pickle模块解析
Python 文件操作与管理:Open函数、Json与Pickle、Os模块 在Python中,文件是一个重要的数据处理对象。无论是读取数据、保存数据还是进行数据处理,文件操作都是Python编程中不可或缺的一部分。本文将详细介绍Python中文件操作的几种常用方法&…...
WordPress 6.6 “Dorsey多尔西”发布
WordPress 6.6 “Dorsey多尔西”已经发布,它以传奇的美国大乐队领袖 Tommy Dorsey 名字命名。Dorsey 以其音调流畅的长号和作品而闻名,他的音乐以其情感深度和充满活力的能量吸引了观众。 当您探索 WordPress 6.6 的新功能和增强功能时,让您的…...
核函数支持向量机(Kernel SVM)
核函数支持向量机(Kernel SVM)是一种非常强大的分类器,能够在非线性数据集上实现良好的分类效果。以下是关于核函数支持向量机的详细数学模型理论知识推导、实施步骤与参数解读,以及两个多维数据实例(一个未优化模型&a…...
二分查找(折半查找)
这次不排序了,对排好序的数组做个查找吧 介绍 二分查找排序英文名为BinarySort,是一种效率较高的查找方法要求线性表必须采用顺序存储结构 基本思路 通过不断地将搜索范围缩小一半来找到目标元素: 1、假定数组为arr,需要查找的…...
arcgis紧凑型切片缓存(解决大范围切片,文件数量大的问题)
ArcGIS 切片缓存的紧凑型存储格式是一种优化的存储方式,用于提高切片缓存的存储效率和访问速度。紧凑型存储格式将多个切片文件合并为一个单一的 .bundle 文件,从而减少文件系统的开销和切片的加载时间。这类格式已经应用很久了,我记得2013我…...
ESP32CAM人工智能教学15
ESP32CAM人工智能教学15 Flask服务器TCP连接 小智利用Flask在计算机中创建一个虚拟的网页服务器服务器,让ESP32Cam通过WiFi连接,把摄像头拍摄到的图片发送到电脑中,并在电脑中保存成图片文件。 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 包管理器,旨在提供更快、更安全、更可靠的包管理体验。 1.1 什么是Yarn Yarn 是一个快速、可靠和安全的 JavaScript 包管理器,它通过并行化操作和智能缓存机制,显著提升了依赖安…...
【Git命令】git rebase之合并提交记录
使用场景 在本地提交了两个commit,但是发现根本没有没必要分为两次,需要想办法把两次提交合并成一个提交;这个时候可以使用如下命令启动交互式变基会话: git rebase -i HEAD~N这里 N 是你想要重新调整的最近的提交数。 如下在本地…...
为什么品牌需要做 IP 形象?
品牌做IP形象的原因有多方面,这些原因共同构成了IP形象在品牌建设中的重要性和价值,主要原因有以下几个方面: 增强品牌识别度与记忆点: IP形象作为品牌的视觉符号,具有独特性和辨识性,能够在消费者心中留…...
Kubernetes 1.24 版弃用 Dockershim 后如何迁移到 containerd 和 CRI-O
在本系列的上一篇文章中,我们讨论了什么是 CRI 和 OCI,Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近,我们得知 Docker 即将从 kubernetes 中弃用!(查看 kubernetes 官方的这篇文章)那么让我…...
70. 爬楼梯【 力扣(LeetCode) 】
一、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 二、测试用例 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶…...
R语言优雅的把数据基线表(表一)导出到word
基线表(Baseline Table)是医学研究中常用的一种数据表格,用于在研究开始时呈现参与者的初始特征和状态。这些特征通常包括人口统计学数据、健康状况和疾病史、临床指标、实验室检测、生活方式、社会经济等。 本人在既往文章《scitb包1.6版本发…...
XMl基本操作
引言 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中. 之前,我们学习了,用注解的方式来实现MyBatis 接下来我们…...
Linux——Shell脚本和Nginx反向代理服务器
1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell 既是一种命令语言,有是一种程序设计语言 Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…...
pyspark使用 graphframes创建和查询图的方法
1、安装graphframes的步骤 1.1 查看 spark 和 scala版本 在终端输入: spark-shell --version 查看spark 和scala版本 1.2 在maven库中下载对应版本的graphframes https://mvnrepository.com/artifact/graphframes/graphframes 我这里需要的是spark 2.4 scala 2.…...
【web】-flask-简单的计算题(不简单)
打开页面是这样的 初步思路,打开F12,查看头,都发现了这个表达式的base64加密字符串。编写脚本提交答案,发现不对; 无奈点开source发现源代码,是flask,初始化表达式,获取提交的表达式࿰…...
Apache Sqoop
Apache Sqoop是一个开源工具,用于在Apache Hadoop和关系型数据库(如MySQL、Oracle、PostgreSQL等)之间进行数据的批量传输。其主要功能包括: 1. 数据导入:从关系型数据库(如MySQL、Oracle等)中将…...
【Python】TensorFlow介绍与实战
TensorFlow介绍与使用 1. 前言 在人工智能领域的快速发展中,深度学习框架的选择至关重要。TensorFlow 以其灵活性和强大的社区支持,成为了许多研究者和开发者的首选。本文将进一步扩展对 TensorFlow 的介绍,包括其优势、应用场景以及在最新…...
第100+16步 ChatGPT学习:R实现Xgboost分类
基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现Xgboost分类 (…...
深圳龙岗疫情最新消息今天又封了/seo站内优化和站外优化
今天在用一键安装mysql的shell脚本安装mysql-5.1.73软件后发现mysql始终无法启动,多次执行后依旧报错,只能去查看error日志,发现了如下的2个错误: 错误一:Fatal error: Cant open and lock privilege tables: Table my…...
青浦营销型网站建设/东莞网站建设工作
PMP认证在国内的背景 随着国家经济建设从基础设施转向高端产业以及市场项目规模扩大,投资额度上升,在项目中对项目管理者的要求也越来越高,国内科技的发展,企业扩展项目管理人才时的要求也会随之提高,这时候很需要竞争…...
阿里企业邮箱客服/搜索引擎外部链接优化
花了近一天的时间,总算把Lenovo-Vista-Chs-Rdvd-Um下载完(2.45G),刻盘后安装系统。安装过程中没碰到什么问题,但第一次久未进入系统,起初认为是系统仍要作初始化之类的工作,等了很长时间未见反应…...
网站建设推广文案/百度浏览器app下载
前言 在深入之前先了解下下ReentrantLock 和 Condition: 重入锁ReentrantLock: ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁,可以被单个线程多次获取。 ReentrantLock分为“公平锁”和“非公平锁”…...
网上商城网站系统/公关公司
给表新增字段时,可能经常遇到错误:ORA-00054:资源正忙但指定以NOWAIT方式获取资源或者超时失效这种错误出现的情景在oracle 11.1 和 11.2 的版本中有点区别以下实验中 表 :create table hlb (id int); ,表中有数据,ddl…...
政府网网站一般谁做的/济南最新消息今天
ylbtech-Arithmetic:Console-算法-求0—7所能组成的奇数个数1.A,Demo(案例)【程序83】题目:求0—7所能组成的奇数个数。1.程序分析: 1.B,Solution(解决方案) 【不是明白是如何构思的】using System;namespace ConsoleApplication1…...