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(追加),不支持文件的随机修改

架构

image.png

这种架构主要由三个部分组成,分别为 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简介和常用命令介绍的更多相关文章

  1. Hadoop生态圈-zookeeper本地搭建以及常用命令介绍

    Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...

  2. Hadoop生态圈-phoenix完全分布式部署以及常用命令介绍

    Hadoop生态圈-phoenix完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. phoenix只是一个插件,我们可以用hive给hbase套上一个JDBC壳,但是你 ...

  3. maven常用命令介绍

    mvn 3.0.4 创建maven项目命令  mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles ...

  4. 转:maven常用命令介绍

    mvn 3.0.4 创建maven项目命令  mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles ...

  5. Docker 安装与常用命令介绍

    docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...

  6. Linux操作系统安全-OpenSSL工具常用命令介绍

    Linux操作系统安全-OpenSSL工具常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OpenSSL开源项目有三个组件 openssl: 多用途的命令行工具,包 ...

  7. cmd常用命令介绍

    一.cdm命令介绍:CMD命令是一种命令提示符,CMD是command的缩写,即命令提示符(CMD),位于C:\Windows\System32的目录下,是在OS/2,Win为基础的操作系统(包括Wi ...

  8. Git的原理简介和常用命令

    Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...

  9. 数字证书管理工具keytool常用命令介绍

    需要给一个apk加签名,用到了keytool这个工具,下面转载一篇介绍keytool的文章 http://blog.chinaunix.net/uid-17102734-id-2830223.html ...

随机推荐

  1. json 的基础入门

    JSON是什么: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.在初始的项目开发中人们更倾向于使用xml来进行数据的传输,但当JSON出现后,开发者更倾 ...

  2. tomcat启动时间5分钟左右org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds.

    org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance ...

  3. springboot基础-redis集群

    一.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  4. Selenium系列(一) - 8种元素定位方式的详细解读

    安装Selenium和下载Driver 安装selenium pip3 install  selenium -i http://pypi.douban.com/simple --trusted-hos ...

  5. MacOS下的渗透测试工具

    信息收集工具 工具名称 安装命令 CeWL brew install sidaf/pentest/cewl dirb brew install sidaf/pentest/dirb dnsrecon ...

  6. python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法

    今天使用pip安装第三库时,有时会报错: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='file ...

  7. hdu3336 Counting the string kmp的next数组的应用

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3336/ 题意就是要求一个字符串的所有前缀在字符串中出现的次数之和,我们容易想到kmp中的next数组,next[ ...

  8. CF1326A Bad Ugly Numbers 题解

    原题链接 简要题意: 构造一个长为 \(n\) 的数,使得每位均不为 \(0\),且 \(n\) 不被它的各位数字整除. 比方说, \(n = 239\) 是合法的.因为: \(2 \not | 23 ...

  9. 谷歌出品EfficientNet:比现有卷积网络小84倍,比GPipe快6.1倍

    [导读]谷歌AI研究部门华人科学家再发论文<EfficientNet:重新思考CNN模型缩放>,模型缩放的传统做法是任意增加CNN的深度和宽度,或使用更大的输入图像分辨率进行训练,而使用E ...

  10. coding++:thymelef 模板报错 the entity name must immediately follow the '&' in the entity reference

    thymelef模板里面是不能实用&符号的 要用&转义符代替,官网也有文档说明可以用官方的通配符代替, 官方文档 http://www.thymeleaf.org/doc/tutori ...