HDFS学习

一、hdfs的概念及特性

        概念:首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件位置。其次,它是分布式的,又很多服务器联合起来实现其功能,集群中服务器有着各自的角色。

        重要特性:

        1)HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认在hadoop2.X中是128M,老版本中是64M。

        2)HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,例如:hdfs://hadoop01:9000/data/test

        3)目录结构及文件分块信息(元数据)的管理由namenode节点承担——namenode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器)

        4)文件的各个block的存储管理由datanode节点承担——datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replication)

        5)HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改

二、HDFS的shell操作

       在安装hadoop的机器上执行命令  hadoop  fs  这个命令就可以查看具体有哪些命令了。

(不做过多的介绍了)

三、HDFS的工作机制

        先空着,等后续使用一段时间后,根据自己的理解和结合实际的情况来重新补充。

四、HDFS的Java应用开发

        终于到实践的东西了,基础理论太枯燥了,不过理论的东西是基石,在不断实践中还需不断的将基本理论理解透彻。

        具体的java代码就不贴了,网上有很多。我要记录的是我之前遇到的一个问题,我在学的时候当然是在网上找列子,然后模仿着做一下。但是我找的几个都是直接贴了java代码,并没有说要将代码打包,上传到服务器上。我以为在本地运行就可以连接到虚拟机上。结果是报错,后来又看到了一个文章讲的比较细。下面贴了地址,有需要的可以去看看。

https://www.cnblogs.com/jackchen-Net/p/6588662.html

你可能感兴趣的:(HDFS学习)