Hadoop 生态组件初探系列之——HDFS

HDFS

简要概括

HDFS(Hadoop Distribute File System),从它的英文全称拆开理解如下:

  • Hadoop : 它是Hadoop的组件,言简意赅,其实不只是组件,它还是hadoop的核心,基础;
  • Distribute : 分布式的,说明它能多台机器共用;
  • File System: 本身是一个文件系统,类似于linux的文件系统;

在hdfs集群中,机器被分为存储元数据的NameNode和存储文件数据的DataNode。

重要特性

不同于linux文件系统,hadoop的文件系统有以下特性:

  1. 基于操作系统的文件系统之上
    hdfs的架构
    操作系统负责将文件数据写到物理磁盘的不同位置,hdfs则将它的数据存到了操作系统的文件系统中;
  2. 为大量数据提供冗余存储
    默认每个文件存三份,为了保持高可用性,这三份文件会存放到不同DataNode机器上,具体存在哪里,怎么去获取这个文件,这些信息保存在集群的NameNode上。
  3. WriteOnece
    这个怎么理解,hadoop不像linux、windows的文件系统,linux和windows的文件可以通过文本编辑器去修改内容,而hdfs的文件,它是没有vim去修改它的内容的,一旦存到hdfs,修改方法就是删掉原来的文件,再重新存新文件。
  4. 分块存储,大文件存储
    hdfs 默认将文件分为128M的block,存到不同的机器上,由此可见,他适合存大文件,因为如果小文件特别多的话,每个文件分128M是很浪费资源的,小文件特别多的话,推荐压缩再上传hdfs。

hdfs的高可用

  1. hadoop2.0以下的解决方案——冷备份架构
    hdfs冷备份架构图
    Hdfs的各种client与namenode之间交互,活跃的namenode会在响应client请求的同时将元数据同步到备份的Secondary NameNode,一旦NameNode 挂掉(宕机)之后,激活备份的namenode,仍然可以使用。
    (上图也可以看到,文件分块,存三份。)

  2. hadoop 2.0+ 高可用架构

Zookeeper调控下的hdfs高可用架构
zookeeper的zkfc(ZookeeperFailoverController)进程负责对两台NameNode的状态进行监控,要求NameNode定时发送心跳(证明自己还活着)信息,一旦某段时间内没有收到心跳信息返回,就开始集群选举,选取新任NameNode自动激活,实现了高可用,与上述的手动切换namenode不同,zkfc进程详细信息我就不多说了,看下图:
在这里插入图片描述

hdfs基本操作

通过hdfs dfs 的前缀加上linux文件操作的各种命令,熟悉linux的朋友可以亲切的操作hdfs(注:hadoop fs前缀虽然也能用,但是官方已经说明以后有新命令不再支持,建议使用hdfs dfs

  1. 查看目录
hdfs dfs -ls [hdfs目录]

列举当前或者指定路径目录中的文件,不加hdfs目录就是当前目录(建议使用绝对路径,当前路径指的是/user/<当前用户> ,比如没有使用kerberos安全的集群root用户的当前路径就是/user/root)

  1. 上传文件
hdfs dfs -put  <本地文件>  <hdfs路径>

上述命令就是将本地的文件上传到了hdfs的目录下面

  1. 下载文件
hdfs dfs -get <hdfs文件名>  <下载到哪个目录>

与put相似,将hdfs的文件下载至操作系统文件系统。

  1. 修改文件权限
hdfs dfs [-chown] [-chmod] [-getfacl] [-setfacl]

上述命令与linux文件操作系统类似,不展开说明。

注:关于hdfs权限,后面再专门写一篇hdfs的权限说明,基本开发过程中有关于hdfs的最多问题,也就是权限问题了;此外hdfs提供了各个其他组件系统的接口,不属于初探系列,以后再说,原创不易,轻喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值