源自:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

HDFS has a master/slave architecture. An HDFS cluster consists of a single NameNode, a master server that manages the file system namespace and regulates access to files by clients. In addition, there are a number of DataNodes, usually one per node in the cluster, which manage storage attached to the nodes that they run on. HDFS exposes a file system namespace and allows user data to be stored in files. Internally, a file is split into one or more blocks and these blocks are stored in a set of DataNodes. The NameNode executes file system namespace operations like opening, closing, and renaming files and directories. It also determines the mapping of blocks to DataNodes. The DataNodes are responsible for serving read and write requests from the file system’s clients. The DataNodes also perform block creation, deletion, and replication upon instruction from the NameNode.

namenode:存储系统的元数据(用于描述数据的数据,内存),例如 文件命名空间/block到datanode的映射.负责管理datanode

datanode:用于存储数据块的节点.负责响应客户端对块的读写请求,向namenode汇报自己块信息.

block:数据块,是对文件拆分的最小单位,表示一个切分尺度默认值128MB,每个数据块的默认副本因子是3通过

dfs.replication进行配置,用户可以通过dfs.blocksize设置块大小

rack机架,使用机架对存储节点做物理编排,用于优化存储和计算.查看机架

[root@CentOS ~]# hdfs dfsadmin -printTopology
Rack: /default-rack
192.168.169.139:50010 (CentOS)

为什么说HDFS不擅长存储小文件?

    文件      	 namenode占用(内存) 	 datanode占用磁盘
128MB 单个文件 1个block元数据信息 128MB * 副本因子

128MB 10000个文件 10000个block元数据信息 128MB * 副本因子

因为Namenode是使用单机的内存存储元数据,因此导致namenode内存紧张.

NameNode和Secondary Namenode的关系?

辅助NameNode整理Edits和Fsimage文件,加速NameNode启动过程.

HDFS Shell

[root@CentOS ~]# hdfs dfs -help
Usage: hadoop fs [generic options]
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...] #
[-checksum <src> ...] #
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] #
[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>] #
[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] #
[-cp [-f] [-p | -p[topax]] <src> ... <dst>] #
[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] #
[-help [cmd ...]]
[-ls [-d] [-h] [-R] [<path> ...]] #
[-mkdir [-p] <path> ...] #新建文件夹
[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] <localsrc> ... <dst>] #
[-rm [-f] [-r|-R] [-skipTrash] <src> ...] #
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-tail [-f] <file>] #
[-text [-ignoreCrc] <src> ...]
[-touchz <path> ...] #
[-usage [cmd ...]]

hdfs dfs -ls / 这条执行会列出/目录下的文件和目录

hdfs dfs -ls -R /这条会列出/目录下的左右文件,由于有-R参数,会在文件夹和子文件夹下执行ls操作。

[root@CentOS sysconfig]# hdfs dfs -mkdir -p /tt/test     #新建文件夹
[root@CentOS ~]# touch 123.txt
[root@CentOS ~]# vi 123.txt
[root@CentOS ~]# hdfs dfs -copyFromLocal ~/123.txt /tt #复制文件到hdfs
[root@CentOS ~]# hdfs dfs -cat /tt/test/123.txt #查看文件
雲想衣山花形容 [root@CentOS 123123]# hdfs dfs -copyToLocal /tt/test/123.txt /usr/local/222.txt #可以把hdfs中的文件copy到本地
[root@CentOS 123123]# cd ..
[root@CentOS local]# ls
123123 222.txt bin etc games include lib lib64 libexec sbin share src
[root@CentOS local]# hdfs dfs -put 123123 /tt #将本地文件或目录(eg:123123)上传到HDFS中的路径( /tt) [root@CentOS local]# hdfs dfs -ls /tt/ #查看文件夹下的目录
Found 2 items
-rw-r--r-- 1 root supergroup 22 2019-01-03 04:18 /tt/123.txt
-rw-r--r-- 1 root supergroup 0 2019-01-03 04:28 /tt/777.txt [root@CentOS local]# hdfs dfs -rm -f /tt/123.txt #删除文件
19/01/03 03:54:55 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tt/123.txt
[root@CentOS local]# hdfs dfs -rm -r /tt/test #删除文件夹
19/01/03 03:55:58 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /tt/test [root@CentOS ~]# hdfs dfs -checksum /tt #查看文件大小
checksum: `/tt': Is a directory
[root@CentOS ~]# hdfs dfs -checksum /tt/123.txt
/tt/123.txt MD5-of-0MD5-of-512CRC32C 000002000000000000000000790c2cd6e313015e7896c41d37dce4d5 [root@CentOS local]# hdfs dfs -cp /tt/123.txt / #拷贝一个文件到另一个文件 [root@CentOS local]# hdfs dfs -touchz /tt/777.txt #创建文件 [root@CentOS local]# hdfs dfs -tail /tt/123.txt #显示文件最后的1KB内容到标准输出。
雲想衣山花形容 [root@CentOS local]# hdfs dfs -get /tt/777.txt /usr/local #.将文件或目录从HDFS中的路径(/tt/777.txt)拷贝到本地文件路径(/usr/local)
[root@CentOS local]# ls
123123 222.txt 777.txt
[root@CentOS local]# hdfs dfs -ls -R /tt/ #递归地显示子目录下的内容。
-rw-r--r-- 1 root supergroup 22 2019-01-03 04:18 /tt/123.txt
-rw-r--r-- 1 root supergroup 0 2019-01-03 04:28 /tt/777.txt
drwxr-xr-x - root supergroup 0 2019-01-03 04:40 /tt/test
-rw-r--r-- 1 root supergroup 22 2019-01-03 04:40 /tt/test/222.txt
[root@CentOS local]# hdfs dfs -chmod -R 755 /tt/123.txt
[root@CentOS local]# hdfs dfs -ls -R /tt/
-rwxr-xr-x 1 root supergroup 22 2019-01-03 04:18 /tt/123.txt

更多参考:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html#appendToFile

二、HDFS 架构的更多相关文章

  1. 大数据技术hadoop入门理论系列之二—HDFS架构简介

    HDFS简单介绍 HDFS全称是Hadoop Distribute File System,是一个能运行在普通商用硬件上的分布式文件系统. 与其他分布式文件系统显著不同的特点是: HDFS是一个高容错 ...

  2. HDFS 架构简述

    HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...

  3. HDFS概述(1)————HDFS架构

    概述 Hadoop分布式文件系统(HDFS)是一种分布式文件系统,用于在普通商用硬件上运行.它与现有的分布式文件系统有许多相似之处.然而,与其他分布式文件系统的区别很大.HDFS具有高度的容错能力,旨 ...

  4. 06_Hadoop分布式文件系统HDFS架构讲解

    mr  计算框架 假如有三台机器 统领者master 01  02  03  每台机器都有过滤的应用程序 移动数据 01机== 300M  >mr 移动计算  java程序传递给各个机器(mr) ...

  5. 深入理解Hadoop之HDFS架构

    Hadoop分布式文件系统(HDFS)是一种分布式文件系统.它与现有的分布式文件系统有许多相似之处.但是,与其他分布式文件系统的差异是值得我们注意的: HDFS具有高度容错能力,旨在部署在低成本硬件上 ...

  6. hadoop之hdfs架构详解

    本文主要从两个方面对hdfs进行阐述,第一就是hdfs的整个架构以及组成,第二就是hdfs文件的读写流程. 一.HDFS概述 标题中提到hdfs(Hadoop Distribute File Syst ...

  7. 小记---------Hadoop读、写文件步骤,HDFS架构理解

    Hadoop 是一个开源框架,可编写和运行分布式应用处理大规模数据 Hadoop框架的核心是HDFS 和 MapReduce HDFS是分布式文件系统(存储) MapReduce是分布式数据处理模型和 ...

  8. HDFS 架构解析

    本文以 Hadoop 提供的分布式文件系统(HDFS)为例来进一步展开解析分布式存储服务架构设计的要点. 架构目标 任何一种软件框架或服务都是为了解决特定问题而产生的.还记得我们在 <分布式存储 ...

  9. Hadoop HDFS 架构设计

    HDFS 简介 Hadoop Distributed File System,简称HDFS,是一个分布式文件系统. HDFS是高容错性的,可以部署在低成本的硬件之上,HDFS提供高吞吐量地对应用程序数 ...

  10. Hadoop学习笔记一(HDFS架构)

    介绍 Hadoop分布式文件系统(HDFS)设计的运行环境是商用的硬件系统.他和现存的其他分布式文件系统存在很多相似点.不过HDFS和其他分布式文件系统的区别才是他的最大亮点,HDFS具有高容错的特性 ...

随机推荐

  1. 点击空白处--某个div 消失

    背景:1.需要在 easyui grid 的编辑框 获取焦点的时候,在正下方展示费用类型的网格 2.在点击费用类型网格以外的地方,该网格消失 思路: 一.用easyui 的panel 作为费用类型网格 ...

  2. 字符数字转换 atoi 与 strtol

    原文:http://www.cnblogs.com/JefferyZhou/archive/2010/07/01/1769555.html 在很多时候我们都很清楚 atoX 系列函数: atoi , ...

  3. 【Python】多重赋值之值互换

    右边的值先确定,然后再开始向左赋值 s = 1 t = 2 s,t = t,s print s print t >>> 2 >>> 1 区分 s = t t = s ...

  4. J2EE项目工具集(转)

    1.支持重构,TDD, Debug J2EE应用和Flying Error提示的IDE a.重构:即使团队用的最多的只是Rename,Move,Extract Method等有限几个最基本的功能,但J ...

  5. Linux ->> UBuntu 14.04 LTE下主机名称和IP地址解析

    UBuntu 14.04 LTE下主机名称和IP地址解析一些相关的配置文件: /etc/hosts: 主机文件.手工配置IP地址和主机名称间的映射.格式为每行一条映射条项: <machine_n ...

  6. dctcp-ns2-patch

    diff -crbB ns-allinone-2.35/ns-2.35/queue/red.cc ns-2.35/queue/red.cc *** ns-allinone--- :: --- ns-- ...

  7. Python中GBK, UTF-8和Unicode的编码问题

    编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t d ...

  8. wget 模拟 get post请求

    wget命令 默认采用GET请求, 如果使用POST请求, wget --post-data '' url              // 这样 POST 请求没有请求体.

  9. HTTP(一)

    HTTP(一) http php http请求 HTTP请求:请求行.消息报头.请求正文.格式如下: Method Request-URI HTTP-Veraion CRLF 参数说明 Method ...

  10. Hyperledger Fabric 1.0 学习搭建 (二)--- 源码及镜像文件处理

    2.1下载Fabric源码下载Fabric源码是因为要用到源码中提到的列子和工具, 工具编译需要用到go语言环境, 因此需要把源码目录放到$GOPATH下. 通过1.3中go的安装配置, $GOPAT ...