Hadoop(6) HDFS详解


Hadoop(6) HDFS详解

HDFS


HDFS介绍

HDFS的定义

HDFS(Hadoop Distributed File System), 即Hadoop分布式文件系统

HDFS由多台主机搭建服务器集群来实现, 集群中的服务器分别负责不同的功能

HDFS通过目录树来定位文件

HDFS的优缺点

优点

  1. 采用多副本机制, 如果一个副本丢失, 可以自动恢复, 容错性高
  2. 适合处理大数据
  3. 可以构建在廉价的机器上, 随时航向扩展, 通过多副本机制提高可靠性

缺点

  1. 不适合低延迟访问数据
  2. 无法高效的对大量小文件进行存储
    1. 存储大量的小文件会占用大量的NameNode内存
    2. 小文件的寻址时间会浪费大量的时间, 从而降低效率(一般来说寻址时间<传输时间的 1%比较合适)
  3. 不支持并发写入和文件的修改
    1. 一个文件只能单线程写入, 不允许多线程操作
    2. 仅支持数据的追加, 不支持文件的修改
HDFS的应用场景

HDFS适合一次写入, 多次读取, 并且不支持文件的修改, 适合做数据分析



HDFS的组成

1577319920934

HDFS由NameNode, DataNode, ClientSecondaryNameNode组成, 在
HDFS中, 文件以切块的形式存在, 即一个大文件分成多个部分来存储, 每个块大小为128MB(1.x版本中是64MB)

一个块(block)如果太小, 会增加寻址时间, 如果一个block太大, 会导致MapReduce处理这块数据时会非常慢

注意

HDFS的块大小主要取决与磁盘的传输速率

NameNode 可以理解为结群的主管
  • 管理HDFS的名称空间
  • 配置副本策略
  • 管理数据块的信息(不是数据块)
  • 处理客户端的读写请求(只是处理请求, 不处理读写过程)

DataNode 负责具体的任务执行
  • 存储实际的数据块
  • 执行数据块的读写操作

Client 客户端
  • 与NameNode交互, 获取数据块信息

  • 与DataNode交互, 负责向DataNode读写数据

  • 上传文件时负责文件的切块

  • 通过指令管理和操作HDFS

  • SecondaryNameNode

    • 只是对NameNode起辅助作用, 注意不是NameNode的热备


配置Hadoop开发环境

由于加使用的操作系统, 开发软件可能都不一样, 就比如我使用的是基于Linux的Deepin15.11桌面版, 开发软件使用的是idea, 相比大多数人使用的是Windows系统下Eclipse开发, 所以操作不太一样

虽然操作不同, 但是配置的思路给大家列举一下, 如果大家不会配置, 就根据下面的步骤百度一下:

  1. 在开发软件中配置Maven
  2. 将Hadoop的软件包(zip或者tar.gz)解压到自己的磁盘中, 不能有中文路径
  3. 配置Hadoop的环境变量
  4. 配置完之后重启一下电脑


HDFS的Shell命令

注意

1. 在执行命令时, 使用bin/hadoop fsbin/hdfs dfs的效果是一样的, 这是因为dfs是fs的实现类, 它们底层调用的jar包都是一样的

2. HDFS的命令和Linux的命令很像, 如果熟悉Linux指令, HDFS的Shell操作可以很快上手

3. 下面所有的命令演示, 涉及到HDFS文件(夹)的变更, 都可以通过浏览器访问NameNode50070端口查看HDFS的文件系统详情来查看命令执行的结果

  • 查看fs的所有命令
hadoop fs

也可以通过下面的指令查看

hadoop fs --help

注意

1. 同样的hadoop dfshadoop dfs --help也一样, 下面我们就不把fsdfs一一做列举了, 我们统一使用fs

2. 通过以上指令可以查看HDFS的所有指令, 下面我们只列举最常用的几个指令, 如果大家感兴趣可以把HDFS所有的命令自己测试一遍


HDFS操作
  • 查看指定目录的内容
hadoop fs -ls <目录路径>
  • 查看文本文件内容
hadoop fs -cat <文件路径>
  • 复制
hadoop fs -cp <文件(夹)路径> <拷贝后的文件夹路径>
  • 删除
hadoop fs -rm -r <要删除的文件夹路径>
  • 查看分区情况
Hadoop fs -df [选项]

选项:

选项 说明
-h 存储单位以比较友好的方式展现, 说白了就是把单位转换成GB, MB等
  • 查看文件夹的使用情况
hadoop fs -du [选项] <路径>

选项:

选项 说明
-h 同df, 存储单位以比较友好的方式展现, 说白了就是把单位转换成GB, MB等
  • 设置文件副本数量
hadoop fs -setrep <副本数量n> <HDFS中文件路径>

注意

设置的数量一定要小于DataNode的数量, 否则只能创建DataNode个数的副本

  • 设置目录权限
hadoop fs -chmod [-R] <权限> <目录>

HDFS上传操作
  • 上传文件到HDFS(复制本地文件到HDFS)
hadoop fs -copyFromLocal <本地文件路径> <HDFS文件路径>

或者

hadoop fs -put <本地文件路径> <HDFS文件路径> 

注意

-copyFromLocal-put的作用是一样的, 在底层copyFromLocal其实是put的一个子类, 但是这个子类什么其他的功能都没有实现, 只是换了一个名字而已

  • 剪切本地的文件到HDFS

其实moveFromLocalcopyFromLocal唯一的区别就是一个是剪切, 一个是复制

hadoop fs -moveFromLocal <本地文件路径> <HDFS文件路径>
  • 追加内容到HDFS中的文件中
hadoop -appendToFile <本地文件路径> <要追加到的文件路径>

HDFS下载操作
  • 下载文件(复制HDFS文件到本地)

下载同上传一样, 有两个方法

hadoop fs -copyToLocal <HDFS中的文件路径> <下载到本地的文件路径>

或者

hadoop fs -get <HDFS中的文件路径> <下载到本地的文件路径>
  • 下载多个文件到本地, 并合并成一个文件
hadoop fs -getmerge <HDFS中的文件路径1> <HDFS中的文件路径2> ... <HDFS中的文件路径n> <本地合并后的文件路径>

HDFS的API操作

开发软件中开发环境的搭建
  1. 首先, 新建一个Maven项目(不需要官方模板, 直接新建简单项目即可)

  2. 然后引入依赖

<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>RELEASE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop配置文件是用来配置Hadoop集群的参数和属性的文件。它们位于Hadoop安装目录的`etc/hadoop`文件夹。以下是一些常见的Hadoop配置文件及其详解: 1. **core-site.xml**: 这个配置文件包含Hadoop核心的配置属性,比如文件系统的默认URI、I/O缓冲区大小和权限检查等。其一个重要的属性是`fs.defaultFS`,它指定了默认的文件系统URI。 2. **hdfs-site.xml**: 这个配置文件包含Hadoop分布式文件系统(HDFS)的配置属性。它定义了HDFS的数据块大小、副本数量、存储路径等。其一个重要的属性是`dfs.replication`,它指定了数据块的副本数量。 3. **mapred-site.xml**: 这个配置文件包含了MapReduce框架的配置属性。它定义了作业跟踪器和任务跟踪器的地址、任务重试次数、任务并行度等。其一个重要的属性是`mapreduce.framework.name`,它指定了使用的MapReduce框架。 4. **yarn-site.xml**: 这个配置文件包含了YARN(Yet Another Resource Negotiator)资源管理框架的配置属性。它定义了资源管理器和节点管理器的地址、任务分配策略、容器内存大小等。其一个重要的属性是`yarn.resourcemanager.hostname`,它指定了资源管理器的主机名。 这些只是Hadoop配置文件的一部分,还有其他一些配置文件用于特定组件或插件的配置。每个配置文件都有其特定的作用,通过修改这些配置文件,可以根据集群的需求来定制Hadoop的行为和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值