这是一篇最通熟易懂的Hadoop HDFS实践攻略!
《这是一篇最通熟易懂的Hadoop HDFS实践攻略!》要点: 作者介绍:杜亦舒,创业中,技术合伙人,喜欢研究分享技术.个人订阅号:性能与架构.
学习并实践本文教程后,可以对HDFS有比较清晰的认识,并可以进行熟练操作,为后续学习Hadoop体系打好基础. 目录: 理论部分
实践部分
一、HDFS基本原理 HDFS(Hadoop Distribute File System)是一个分布式文件系统,是Hadoop的重要成员. 1、文件系统的问题 文件系统是操作系统提供的磁盘空间管理服务,只需要我们制定把文件放到哪儿,从哪个路径读取文件就可以了,不用关心文件在磁盘上是如何存放的. 当文件所需空间大于本机磁盘空间时,如何处理呢? 一是加磁盘,但是加到一定程度就有限制了;二是加机器,用远程共享目录的方式提供网络化的存储,这种方式可以理解为分布式文件系统的雏形,可以把不同文件放入不同的机器中,空间不足了可继续加机器,突破了存储空间的限制.但这个方式有多个问题:
2、HDFS的解决思路 HDFS是个抽象层,底层依赖很多独立的服务器,对外提供统一的文件管理功能,对于用户来讲,感觉就像在操作一台机器,感受不到HDFS下面的多台服务器. 例如用户访问HDFS中的/a/b/c.mpg这个文件,HDFS负责从底层相应服务器中读取,然后返回给用户,这样用户只需和HDFS打交道,不关心这个文件是怎么存储的. 例如用户需要保存一个文件/a/b/xxx.avi. HDFS首先会把这个文件进行分割,例如分为4块,然后分别放到不同服务器上. 这样做有个好处,不怕文件太大,并且读文件的压力不会全部集中在一台服务器上.但如果某台服务器坏了,文件就读不全了. HDFS为保证文件可靠性,会把每个文件块进行多个备份:
这样文件的可靠性就大大增强了,即使某个服务器坏了,也可以完整读取文件. 同时还带来一个很大的好处,就是增加了文件的并发访问能力,比如多个用户读取这个文件时,都要读块1,HDFS可以根据服务器的繁忙程度,选择从那台服务器读块1. 3、元数据的管理 HDFS中存了哪些文件? 文件被分成了哪些块? 每个块被放在哪台服务器上? …… 这些都叫做元数据,这些元数据被抽象为一个目录树,记录了这些复杂的对应关系.这些元数据由一个单独的模块进行管理,这个模块叫做NameNode.存放文件块的真实服务器叫做DataNode,所以用户访问HDFS的过程可以理解为:
4、HDFS优点
二、HDFS实践 经过上面介绍,可以对HDFS有个基本的了解,下面开始进行实际操作,在实践中更好的认识HDFS. 1、安装实践环境 您可以选择自己搭建环境,也可以使用打包好的Hadoop环境(版本2.7.3) 这个Hadoop环境实际上是一个虚机镜像,所以需要安装virtualbox虚拟机、vagrant镜像管理工具,和我的Hadoop镜像,然后用这个镜像启动虚机就可以了,下面是具体操作步骤: 1)安装virtualbox
2)安装vagrant 因为官网下载较慢,我上传到了云盘 Windows版
Mac版
安装完成后,在命令行终端下就可以使用vagrant命令. 3)下载Hadoop镜像
4)启动 加载Hadoop镜像
例如您想命名为Hadoop,镜像下载后的路径为d:\hadoop.box,加载命令就是这样:
创建工作目录,例如d:\hdfstest. 进入此目录,初始化
启动虚机
启动完成后,就可以使用SSH客户端登录虚机了
登录后使用命令ifconfig 查看本虚机的IP(如192.168.31.239),可以使用此IP和端口22登录了
Hadoop服务器环境搭建完成. 2、Shell命令行操作 登录Hadoop服务器后,先启动HDFS,执行命令:
显示目录信息 -ls 后面是要查看的目录路径 创建目录 创建目录/test
一次创建多级目录/aa/bb
形式
实例(先创建好一个测试文件mytest.txt,内容随意,然后上传到/test)
先创建2个测试文件(log.access,?log.error),使用-put上传到/test目录下
然后把2个log文件合并下载到一个文件中
查看本地log文件内容,应该包含log.access与log.error两个文件的内容.
从HDFS的一个路径拷贝HDFS的另一个路径
验证
验证
应列出mytest.txt.2.
使用-r参数可以一次删除多级目录. 验证
应为空
与Linux文件系统中的用法一样,修改文件所属权限
示例
3、Java API操作 (1)环境配置 因为需要在本机链接Hadoop虚机服务器,所以需要配置Hadoop,使其可以被外部访问. 先登录Hadoop虚机服务器,然后: 1)查看本机IP
例如IP为:192.168.31.239 2)修改文件:
3)重新启动HDFS
(2)搭建开发环境 )新建项目目录hdfstest 2)在项目目录下创建pom.xml 内容: 3)创建源码目录src/main/java 现在项目目录结构
(3)示例代码 查看文件列表ls 1)新建文件src/main/java/Ls.java 列出/下的文件列表,及递归获取所有文件 (编辑:ASP站长网) |