跳至主要內容
HDFS 教程

HDFS 教程

HDFSHadoop Distributed File System 的缩写,即 Hadoop 的分布式文件系统。

HDFS 是一种用于存储具有流数据访问模式的超大文件的文件系统,它运行在廉价的机器集群上。

HDFS 的设计目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

HDFS 是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。因为 HDFS 可以部署在一个比较大的服务器集群上,集群中所有服务器的磁盘都可供 HDFS 使用,所以整个 HDFS 的存储空间可以达到 PB 级容量。


钝悟...大约 1 分钟大数据hadoophdfs大数据HadoopHDFS
MapReduce

MapReduce

MapReduce 简介

Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。

MapReduce 的设计思路是:

  • 分而治之,并行计算
  • 移动计算,而非移动数据

MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由 map 以并行的方式处理,框架对 map 的输出进行排序,然后输入到 reduce 中。MapReduce 框架专门用于 <key,value> 键值对处理,它将作业的输入视为一组 <key,value> 对,并生成一组 <key,value> 对作为输出。输出和输出的 keyvalue 都必须实现Writable 接口。


钝悟...大约 9 分钟大数据hadoop大数据HadoopMapReduce
HDFS 入门

HDFS 入门

HDFS 是 Hadoop 分布式文件系统。

关键词:分布式、文件系统

HDFS 简介

HDFSHadoop Distributed File System 的缩写,即 Hadoop 的分布式文件系统。

HDFS 是一种用于存储具有流数据访问模式的超大文件的文件系统,它运行在廉价的机器集群上。

HDFS 的设计目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。


钝悟...大约 10 分钟大数据hadoophdfs大数据HadoopHDFS
HDFS 运维

HDFS 运维

HDFS 命令

显示当前目录结构

# 显示当前目录结构
hdfs dfs -ls <path>
# 递归显示当前目录结构
hdfs dfs -ls -R <path>
# 显示根目录下内容
hdfs dfs -ls /

钝悟...大约 3 分钟大数据hadoophdfs大数据HadoopHDFS
HDFS Java API

HDFS Java API

想要使用 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>

钝悟...大约 5 分钟大数据hadoophdfs大数据HadoopHDFS
YARN

YARN

YARN 的目标是解决 MapReduce 的缺陷。

MapReduce 的缺陷(Hadoop 1.x)

  • 身兼两职:计算框架 + 资源管理框架
  • JobTracker
    • 既做资源管理,又做任务调度
    • 任务太重,开销过大
    • 存在单点故障
  • 资源描述模型过于简单,资源利用率较低
    • 仅把 Task 数量看作资源,没有考虑 CPU 和内存
    • 强制把资源分成 Map Task Slot 和 Reduce Task Slot
  • 扩展性较差,集群规模上限 4K
  • 源码难于理解,升级维护困难

钝悟...大约 4 分钟大数据hadoop大数据HadoopYARN