hadoop(十一)HDFS简介和常用命令介绍
HDFS背景
随着数据量的增大,在一个操作系统中内存不了了,就需要分配到操作系统的的管理磁盘中,但是不方便管理者维护,迫切需要一种系统来管理多态机器上的文件,这就是分布式文件管理系统。
HDFS的概念
HDFS英文hadoop distributed file system ,是一个分布式文件系统,用于存储文件,通过目录树记录定位文件,其次他是分布式的,由很多服务器联合起来实现其功能,集群中的服务器各有角色。
HDFS的设计适合一次吸入,多次读取的场景,且不支持文件的修改。适合做数据分析。
HDFS优缺点
优点
1)高容错性
(1)数据自动保存多个副本。它通过增加副本的形式,提高容错性;
(2)某一个副本丢失以后,它可以自动恢复。
2)适合大数据处理
(1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
(2)文件规模:能够处理百万規模以上的文件数量,数量相当之大。
3)流式数据访问,它能保证数据的一致性
4)可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点
1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
2)无法高效的对大量小文件进行存储。
(1)存储大量小文件的话,它会占用 Namenode大量的内存来存储文件、目录和块信息。这样是不可取的,因为 Namenode的内存总是有限的;
(2)小文件存储的寻址时间会超过读取时同,它违反了HDFS的设计目标
3)不支持并发写入、文件随机修改。
(1)一个文件只能有一个写,不允许多个线程同时写;
(2)仅支持数据 append(追加),不支持文件的随机修改
架构
这种架构主要由三个部分组成,分别为 Namenode、 Datanode和 SecondaryNamenode。
Namenode:
相当于 Master,它是一个主管、管理者。
(1)管理HDFS的名称空问;
(2)管理数据块( Block)映射信息;
(3)配置副本策略;
(4)处理客户端读写请求。
Datanode:
就是 Slave,Namenode下达命令, Datanode执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。
Secondary Namenode:
并非 Namenode的热备。当 Namenode挂掉的时候,它并不能马上替换 Namenode并提供服务
(1)辅助 Namenode,分担其工作量
(2)定期合并 Fsimage和 Edits,并推送给 Namenode
(3)在紧急情况下,可辅助恢复 Namenode
HDFS文件块大小
HDFS中的文件在物理上是分块存储( block),块的大小可以通过配置参数( dfs blocksize)来规定,默认大小在 hadoop2x版本中是128M,老版本中是64M
思考:为什么块的大小不能设置的太小,也不能设置的太大?
HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间取决于磁盘传输速如果寻址时间约为10ms,而传输速率为100MBs,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB。默认的块大小128MB。块的大小:10ms+100*100Ms=100M,如图3-2所示
Hadoop的命令操作
[shaozhiqi@hadoop102 ~]$ cd /opt/module/
[shaozhiqi@hadoop102 module]$ cd hadoop-3.1.2/
[shaozhiqi@hadoop102 hadoop-3.1.2]$ ls
bin include lib LICENSE.txt output sbin wcinput
etc input libexec NOTICE.txt README.txt share wcoutput
查看help
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop –help
Client Commands:
checknative check native Hadoop and compression libraries availability
classpath prints the class path needed to get the Hadoop jar and the required libraries
conftest validate configuration XML files
credential interact with credential providers
dtutil operations related to delegation tokens
envvars display computed Hadoop environment variables
fs run a generic filesystem user client
jar <jar> run a jar file. NOTE: please use "yarn jar" to launch YARN applications, not this command.
jnipath prints the java.library.path
kdiag Diagnose Kerberos Problems
kerbname show auth_to_local principal conversion
key manage keys via the KeyProvider
trace view and modify Hadoop tracing settings
version print the version
查看fs都有哪些命令
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs
Usage: hadoop fs [generic options]
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>]
[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...]
[-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] [-v] [-x] <path> ...]
[-expunge]
[-find <path> ... <expression> ...]
[-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
[-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
[-head <file>]
[-help [cmd ...]]
[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal <localsrc> ... <dst>
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setfattr {-n name [-v value] | -x name} <path>]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] <file>]
[-test -[defsz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touch [-a] [-m] [-t TIMESTAMP ] [-c] <path> ...]
[-touchz <path> ...]
[-truncate [-w] <length> <path> ...]
[-usage [cmd ...]]
Generic options supported are:
-conf <configuration file> specify an application configuration file
-D <property=value> define a value for a given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port> specify a ResourceManager
-files <file1,...> specify a comma-separated list of files to be copied to the map reduce cluster
-libjars <jar1,...> specify a comma-separated list of jar files to be included in the classpath
-archives <archive1,...> specify a comma-separated list of archives to be unarchived on the compute machines
The general command line syntax is:
command [genericOptions] [commandOptions]
查看我们的HDFS目录信息-ls,发现失败,启动我们的hadoop集群
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -ls
ls: Call From hadoop102/192.168.1.102 to hadoop102: failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
[shaozhiqi@hadoop102 hadoop-3.1.]$
再次查看目录-ls
我们是新起的集群没有上传文件和创建目录
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -ls
ls: `.': No such file or directory
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -ls /
[shaozhiqi@hadoop102 hadoop-3.1.]$
创建文件夹-mkdir
-p标示递归创建,多层时用
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -mkdir -p /shaozhiqi/temp
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -ls /
Found items
drwxr-xr-x - shaozhiqi supergroup -- : /shaozhiqi
[shaozhiqi@hadoop102 hadoop-3.1.]$
将本地的文件剪贴到hdfs -moveFromLocal
[shaozhiqi@hadoop102 hadoop-3.1.]$ vim test.txt
[shaozhiqi@hadoop102 hadoop-3.1.]$
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -moveFromLocal test.txt /shaozhiqi/temp
[shaozhiqi@hadoop102 hadoop-3.1.]$
查看是否上传成功
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -ls -r /shaozhiqi/temp
Found items
-rw-r--r-- shaozhiqi supergroup -- : /shaozhiqi/temp/test.txt
[shaozhiqi@hadoop102 hadoop-3.1.]$
在test.txt的文件末尾追加内容-appendToFile
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs –appendToFIle test2.txt /shapzhiqi/temp/test.txt
查看文件内容 –cat
[shaozhiqi@hadoop102 hadoop-3.1.]$ hadoop fs -cat /shaozhiqi/temp/test.txt
tetete
sdfd ddd
[shaozhiqi@hadoop102 hadoop-3.1.]$
其他常用命令后续再补充吧
-tail:显示一个文件的末尾
-chgrp、-chmod、-chown:和linux一样修改文件的所属权
-copyFromLocal:从本地copy文件到HDFS上去
-copyToLocal:从hdfs copy到本地
-cp:从HDFS的一个路劲copy到HDFS的另一个路劲
-mv:在HDFS中移动文件
-get:等同-copyToLocal
-getmerge:合并下载多个文件
hadoop(十一)HDFS简介和常用命令介绍的更多相关文章
- Hadoop生态圈-zookeeper本地搭建以及常用命令介绍
Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...
- Hadoop生态圈-phoenix完全分布式部署以及常用命令介绍
Hadoop生态圈-phoenix完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. phoenix只是一个插件,我们可以用hive给hbase套上一个JDBC壳,但是你 ...
- maven常用命令介绍
mvn 3.0.4 创建maven项目命令 mvn archetype:generate -DgroupId=damocles-autocredit -DartifactId=damocles ...
- 转:maven常用命令介绍
mvn 3.0.4 创建maven项目命令 mvn archetype:generate -DgroupId=damocles-autocredit -DartifactId=damocles ...
- Docker 安装与常用命令介绍
docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...
- Linux操作系统安全-OpenSSL工具常用命令介绍
Linux操作系统安全-OpenSSL工具常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OpenSSL开源项目有三个组件 openssl: 多用途的命令行工具,包 ...
- cmd常用命令介绍
一.cdm命令介绍:CMD命令是一种命令提示符,CMD是command的缩写,即命令提示符(CMD),位于C:\Windows\System32的目录下,是在OS/2,Win为基础的操作系统(包括Wi ...
- Git的原理简介和常用命令
Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...
- 数字证书管理工具keytool常用命令介绍
需要给一个apk加签名,用到了keytool这个工具,下面转载一篇介绍keytool的文章 http://blog.chinaunix.net/uid-17102734-id-2830223.html ...
随机推荐
- 深入解析Underscore.js源码架构
Underscore.js是很有名的一个工具库,我也经常用他来处理对象,数组等,本文会深入解析Underscore源码架构,跟大家一起学习下他源码的亮点,然后模仿他写一个简单的架子来加深理解.他的源码 ...
- yield 语法备忘录
yield 语法备忘录 yield 语法备忘录 语法 .net yield 读作:“一有得” 英式发音 皮一下~ yield 关键字向编译器指示它所在的方法是迭代器块. 编译器生成一个类来实现 ...
- void指针和数组指针之间的转换
由于void* 可以被任何指针赋值,所以以void*作为函数参数可以使得接口更容易接受不同类型的参数,不过需要注意的时,实际操作时还需要利用强制类型转换,将指针转换为原类型,否则在内存上会有问题. 一 ...
- mysql索引查找原理及优化
常见查找方法 1.顺序查找(linear search ) 1. 最基本的查询算法当然是顺序查找(linear search),也就是对比每个元素的方法,不过这种算法在数据量很大时效率是极低的. 2. ...
- Spring框架——基于XML/注解开发
IoC的实现方式有两种:XML配置文件.基于注解. MVC开发模式: Controller层 Service层 Repository层 Controller层调用Service,Service调用Re ...
- 使用TensorFlow进行训练识别视频图像中物体
本教程针对Windows10实现谷歌公布的TensorFlow Object Detection API视频物体识别系统,其他平台也可借鉴. 本教程将网络上相关资料筛选整合(文末附上参考资料链接),旨 ...
- IOS(苹果手机)使用video播放HLS流,实现在内部播放及全屏播放(即非全屏和全屏播放)。
需求: 实现PC及移动端播放HLS流,并且可以自动播放,在页面内部播放及全屏播放功能. 初步:PC及安卓机使用hls.js实现hls流自动播放及全屏非全屏播放 首先使用了hls.js插件,可以实现在P ...
- Python第五章-内置数据结构05-集合
Python内置数据结构 五.集合(set) python 还提供了另外一种数据类型:set. set用于包含一组无序的不重复对象.所以set中的元素有点像dict的key.这是set与 list的最 ...
- 8 个出没在 Linux 终端的诡异家伙
这篇文章,我们一起来到 Linux 的诡异的一面-- 你知道吗?在我们日常使用的 Unix(和 Linux )及其各种各样的分支系统中,存在着一些诡异的命令或进程,它们让人毛骨悚然,有些确实是有害,但 ...
- spring bean的装载过程简略赏析
spring一个bean的容器,它从这个最基本的功能进而扩展出AOP,transaction,cache,schedule,data等等,将业务与框架代码解耦,让我们可以将大部分精力投入到业务代码中, ...