HDFS的特性、分布式文件系统的基本命令使用、高级使用命令、基准测试
hdfs:hadoopdistributedfilesystem作为最底层的分布式文件存储系统而存在,可以存储海量的数据分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统为存储和处理超大规模数据提供所需的扩展能力。11.HDFS的特性首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,
hdfs:hadoop distributed file system 作为最底层的分布式文件存储系统而存在,可以存储海量的数据
分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统为存储和处理超大规模数据提供所需的扩展能力。

1.HDFS的特性
首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
**1.1master/slave架构:**主从架构
namenode:主节点,主要用于存储元数据,处理用户请求
datanode:从节点,主要用于存储数据(出磁盘)
**1.2分块存储:**把一个大的文件,化成一个个的小的blick快,在hadoop2.x当中一个block块默认是128M的大小
如:100台机器,每台机器的磁盘容量是1T 有一个文件 2T 可以把大文件切成很多小的block块,每个block块是128M
**1.3统一的命名空间:**对外提供统一的文件访问地址hdfs://node01:8020
1.4namenode元数据管理:namenode将所有的元数据信息保存起来,方便统一的查找
元数据信息:描述数据的数据 如:文件名称,文件位置,文件大小,创建时间等
1.5datanode数据存储:出磁盘,用于存储我们的文件数据
1.6副本机制:1280M的文件需要拆成10个Block块 副本机制,每个block块都有三个副本,blk_00001 node01 blk_00001 node02 blk_00001 node03
1.7一次写入多次读取:hdfs文件系统,适用于频繁读取的情况,不适用于频繁写入的情况,因为改变文件,涉及到元数据的改变
2.hdfs分布式文件系统的基本命令使用
2.1hdfs dfs -ls [-R]
Example:hdfs dfs -ls /user/hadoop/file1
2.2Usage: hdfs dfs -lsr
注意:This command is deprecated. Instead use hdfs dfs -ls -R
2.3hdfs dfs -mkdir [-p]
如:hdfs dfs -mkdir -p /hello/world
还可以创建多个路径:
hdfs dfs -mkdir -p /hello2 /hello3
2.4moveFromLocal
hdfs dfs -moveFromLocal localDir hdfsDir
将我们本地磁盘的一个文件上传到hdfs上面去(想当一个剪切的操作)
2.5moveToLocal
hdfs dfs -moveToLocal hdfslDir localDir
但是这个命令还没有被实现,所以不能使用
2.6mv
hdfs dfs -mv URI
重命名: hdfs dfs -mv /user/hadoop/file1 /user/hadoop/file2
移动: hdfs dfs -mv /user/hadoop/file1 /user
2.7put
将我们本地磁盘的一个文件复制到hdfs上面去(复制的操作)
hdfs dfs -put abc.txt /hello
2.8appendToFile
hdfs dfs -appendToFile …
追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入.(多个文件内容都会保存到一个文件当中)

2.9.cat
hdfs dfs -cat URI [URI …] 查看内容
hdfs dfs -cat /hello/abc
2.10 cp
复制hdfs上文件(夹),可以覆盖,可以保留原有权限信息
hdfs dfs -cp [-f] [-p | -p[topax]] URI [URI …]
拷贝文件:
hdfs dfs -cp /hello/abc /hello/cba
-f:如果目的地已经存在,-f选项将覆盖它。
-p:p选项将保留文件属性[topx](时间戳、所有权、权限、ACL、XAttr)。如果没有指定-p参数,则保留时间戳、所有权和权限。如果指定了-pa,那么保留权限也是因为ACL是权限的超级集。确定是否保留原始命名空间扩展属性与-p标志无关。
2.11 rm
hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI…]
删除文件
hdfs dfs -rm /hello/abc
删除文件夹
hdfs dfs -rm -r /hello
rm -r 可以替代rmr
2.12chmod和chown
修改权限
hdfs dfs -chmod -R 777 /xxx
hdfs dfs -chown -R hadoop:hadoop /xxx
2.13expunge
清空垃圾桶
hdfs dfs -expunge
2.hdfs高级使用命令
hdfs文件的限额配置允许我们以文件大小或者文件个数来限制我们在某个目录下上传的文件数量或者文件内容总量,以便达到我们类似百度网盘等限制每个用户允许上传的最大的文件的量
2.1文件数量的限额
hdfs dfs -mkdir -p /user/root/lisi #创建hdfs文件夹
hdfs dfsadmin -setQuota 2 lisi # 给该文件夹下面设置最多上传两个文件,上传文件,发现只能上传一个文件(因为文件夹算一个)
hdfs dfsadmin -clrQuota
/user/root/lisi # 清除文件数量限制
2.2空间大小的限额:限制我们一个文件夹下面可以上传多少M的文件大小
hdfs dfsadmin -setSpaceQuota 4k /user/root/lisi # 限制空间大小4KB
hdfs dfs -put /export/softwares/zookeeper-3.4.5-cdh5.14.0.tar.gz /user/root/lisi
2.3查看hdfs文件限额数量
hdfs dfs -count -q -h /user/root/lisi
3.hdfs的安全模式
在我们集群刚刚启动的时候,集群是处于安全模式的,对外不提供任何服务,专门干一件事情——集群的自检。在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。如果集群自检没有什么问题,那么过三十秒钟,自动脱离安全模式,可以对外提供服务
hdfs dfsadmin -saftmode
4.hdfs基准测试
实际生产环境当中,hadoop的环境搭建完成之后,第一件事情就是进行压力测试,测试我们的集群的读取和写入速度,测试我们的网络带宽是否足够等一些基准测试
4.1测试写入速度
向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到
/benchmarks/TestDFSIO中
hadoop jar /export/servers/hadoop2.6.0cdh5.14.0/share/hadoop/mapreduce/Hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB
完成之后查看写入速度结果
hdfs dfs -text /benchmarks/TestDFSIO/io_write/part-00000
我们测试的写入速度比较慢,因为我们使用的是笔记本电脑,硬盘的转速比较慢,5400r/min 7200r/min 对于一些服务器的磁盘转速,轻松过万
磁头不转,磁盘转,磁盘转的越快,写入速度越快,读取的速度也越快
真实的服务器性能,写入速度大概在20-30M每秒的样子
4.2测试读取速度
在HDFS文件系统中读入10个文件,每个文件10M
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -read -nrFiles 10 -fileSize 10MB
查看读取结果
hdfs dfs -text /benchmarks/TestDFSIO/io_read/part-00000
真实服务读取速度测试:50-100M左右的样子
实际线上环境该如何压测:
写入10G 100G文件 500G文件 1T文件
4.3清除测试数据
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -clean
课程总结:
1、hadoop发展历史的简介 了解
2、hadoop的历史版本的介绍
3、hadoop的三大发行公司 apache CDH
4、hadoop的基本架构:2.x开始背下来
hadoop1.x:
hdfs:
namenode:主节点,存储元数据信息,处理用户的请求
secondaryNamenode:主要是辅助namenode管理元数据信息的
datanode:从节点,存储数据,出磁盘
mapReduce:
jobTracker:主节点,接收用户的请求,分配任务
taskTracker:从节点,主要用于接收jobTracker分配的任务,并执行任务
元数据:描述数据的数据
背下来
hadoop2.x当中的架构:
hdfs:分布式文件存储系统
namenode:主节点,主要用于存储元数据信息,处理用户的请求
secondaryNamenode:主要是辅助namenode管理元数据信息的
datanode:从节点,主要用于存储数据,说白了就是出磁盘的
如果namenode是高可用,那么就没有secondaryNamenode了,多了journalnode,并且journalnode最好是奇数个
journalNode:同步元数据信息,保证两个namenode里面的元数据是一模一样的,不然就会出现脑裂
zkfc:zkFailoverController 守护进程,与我们的namenode启动在同一台机器,监听namenode的健康状况
yarn资源调度系统:
resourceManager:主节点,主要用于接收用户请求,分配资源
nodeManager:从节点,执行任务
apache版本的hadoop三种运行环境的搭建 尽量搞定 不强求
standAlone环境:单机版的hadoop运行环境
伪分布式环境:主节点都在一台机器上面,从节点分开到其他机器上面
完全分布式环境:主节点全部都分散到不同的机器
hadoop的编译:编译需要知道如何编译 不需要动手去编译
cdh版本的zk的环境搭建 不强求
cdh版本的hadoop伪分布式环境搭建 强求 一定要搞定
hadoop的hdfs分布式文件系统的介绍 尽量理解
master/slave架构 :主从架构
namenode:主节点,主要用于存储元数据,处理用户的请求
datanode:从节点,主要用于存储数据,说白了就是出磁盘的
分块存储:把一个大的文件,化成一个个的小的block块,在hadoop2当中一个block块默认是128M的大小
100台机器,每台机器的磁盘容量是1T 有一个文件 2T 可以把大文件切成很多小的block块,每个block块是128M
统一的命名空间:对外提供统一的文件访问的地址 hdfs://node01:8020
namenode元数据管理:namenode将所有的元数据信息保存起来,方便统一的查找
元数据信息:描述数据的数据 文件的名称,文件的位置,文件的大小,创建时间,修改时间,权限控制
datanode数据存储:出磁盘,用于存储我们的文件数据
副本机制:1280M的文件需要拆成10个Block块 副本机制,每个block块都有三个副本,blk_00001 node01 blk_00001
node02 blk_00001 node03
一次写入,多次读取:hdfs文件系统,适用于频繁读取的情况,不适用与频繁写入的情况 改变文件,涉及到元数据的改变
hadoop文件系统的操作命令 使用命令要搞定
hdfs dfs -ls /
高级使用命令
基准测试 了解即可
更多推荐


所有评论(0)