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以下的解决方案——冷备份架构
    Hadoop 生态组件初探系列之——HDFS_第1张图片
    Hdfs的各种client与namenode之间交互,活跃的namenode会在响应client请求的同时将元数据同步到备份的Secondary NameNode,一旦NameNode 挂掉(宕机)之后,激活备份的namenode,仍然可以使用。
    (上图也可以看到,文件分块,存三份。)

  2. hadoop 2.0+ 高可用架构

Hadoop 生态组件初探系列之——HDFS_第2张图片
zookeeper的zkfc(ZookeeperFailoverController)进程负责对两台NameNode的状态进行监控,要求NameNode定时发送心跳(证明自己还活着)信息,一旦某段时间内没有收到心跳信息返回,就开始集群选举,选取新任NameNode自动激活,实现了高可用,与上述的手动切换namenode不同,zkfc进程详细信息我就不多说了,看下图:
Hadoop 生态组件初探系列之——HDFS_第3张图片

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提供了各个其他组件系统的接口,不属于初探系列,以后再说,原创不易,轻喷。

你可能感兴趣的:(hadoop,hadoop,初探)