HDFS 是 Hadoop Distributed File System 的缩写,即 Hadoop 的分布式文件系统。
HDFS 是一种用于存储具有流数据访问模式的超大文件的文件系统,它运行在廉价的机器集群上。
HDFS 的设计目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。
HDFS 是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。因为 HDFS 可以部署在一个比较大的服务器集群上,集群中所有服务器的磁盘都可供 HDFS 使用,所以整个 HDFS 的存储空间可以达到 PB 级容量。
- Java208
- 数据库101
- 框架83
- 设计78
- Spring77
- 分布式74
- java62
- JavaSE57
- 工具37
- 大数据33
- 架构31
- 分布式通信31
- 笔记30
- 设计模式27
- 搜索引擎数据库25
- Spring核心24
- 综合22
- 软件20
- 关系型数据库20
- Spring综合20
- 网络19
- KV数据库19
- Redis18
- MQ17
- 数据结构和算法16
- Elasticsearch16
- JavaEE15
- 其他15
- 基础特性15
- 列式数据库14
- 操作系统13
- 分布式协同13
- mysql12
- 文档数据库12
- 分布式理论12
- HBase12
- JVM11
- MongoDB11
- Linux11
- 并发10
- Mysql10
- Spring数据10
- 中间件9
- flink9
- 构建9
- Kafka9
- 工作8
- DevOps8
- 编程8
- 网络综合8
- hive8
- IO8
- 服务器8
- 安全8
- Elastic8
- 解决方案8
- RPC8
- SpringWeb8
- 重构7
- 分布式存储7
- hadoop7
- Maven7
- 树6
- 网络协议6
- 分布式调度6
- Python6
- 高级特性6
- 容器6
- JavaWeb6
- 监控诊断6
- 分布式协同综合6
- ZooKeeper6
- 效能6
- Tomcat6
- dependence5
- 测试5
- 缓存5
- 微服务5
- Spring集成5
- network4
- vuepress4
- 数据库中间件4
- UML4
- 线性表4
- 网络技术4
- 编程范式4
- IDE4
- 模板引擎4
- hdfs4
- SpringIO4
- Spring其他4
- RPC综合4
- RocketMQ4
- 软件工程3
- redis3
- 数据库综合3
- 分布式综合3
- 编程语言3
- ORM3
- 规范3
- Git3
- minio3
- linux2
- AI2
- windows2
- DDD2
- 操作系统应用2
- 监控2
- JavaBean2
- 流量控制2
- Shardingsphere2
- 方法论2
- Dubbo2
- MQ综合2
- idea1
- 力量训练1
- CDN1
- cloudflare1
- 使用指南1
- markdown1
- 分布式高可用1
- spark1
- 人工智能1
- python1
- bug1
- 数据库``1
- 命令1
- Spring安全1
- io1
- 其他MQ1
2022年2月21日大约 1 分钟
2020年9月9日小于 1 分钟
MapReduce 简介
Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。
MapReduce 的设计思路是:
- 分而治之,并行计算
- 移动计算,而非移动数据
MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由 map
以并行的方式处理,框架对 map
的输出进行排序,然后输入到 reduce
中。MapReduce 框架专门用于 <key,value>
键值对处理,它将作业的输入视为一组 <key,value>
对,并生成一组 <key,value>
对作为输出。输出和输出的 key
和 value
都必须实现Writable 接口。
2020年6月22日大约 9 分钟
HDFS 是 Hadoop 分布式文件系统。
关键词:分布式、文件系统
HDFS 简介
HDFS 是 Hadoop Distributed File System 的缩写,即 Hadoop 的分布式文件系统。
HDFS 是一种用于存储具有流数据访问模式的超大文件的文件系统,它运行在廉价的机器集群上。
HDFS 的设计目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。
2020年2月24日大约 10 分钟
HDFS 命令
显示当前目录结构
# 显示当前目录结构
hdfs dfs -ls <path>
# 递归显示当前目录结构
hdfs dfs -ls -R <path>
# 显示根目录下内容
hdfs dfs -ls /
2020年2月24日大约 3 分钟
想要使用 HDFS API,需要导入依赖 hadoop-client
。如果是 CDH 版本的 Hadoop,还需要额外指明其仓库地址:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.heibaiying</groupId>
<artifactId>hdfs-java-api</artifactId>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hadoop.version>2.6.0-cdh5.15.2</hadoop.version>
</properties>
<!---配置 CDH 仓库地址-->
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
<dependencies>
<!--Hadoop-client-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2020年2月24日大约 5 分钟
YARN 的目标是解决 MapReduce 的缺陷。
MapReduce 的缺陷(Hadoop 1.x)
- 身兼两职:计算框架 + 资源管理框架
- JobTracker
- 既做资源管理,又做任务调度
- 任务太重,开销过大
- 存在单点故障
- 资源描述模型过于简单,资源利用率较低
- 仅把 Task 数量看作资源,没有考虑 CPU 和内存
- 强制把资源分成 Map Task Slot 和 Reduce Task Slot
- 扩展性较差,集群规模上限 4K
- 源码难于理解,升级维护困难
2019年5月7日大约 4 分钟