源自: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. servlet中cookie和session操作

    1.1 软件中的会话 一次会话: 打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器 登录场景: 打开浏览器 -> 浏览到登陆页面 -> 输入用户名和密码 -> 访问 ...

  2. Python基础-map/reduce/filter

    一.map Python内置函数,用法及说明如下: class map(object): """ map(func, *iterables) --> map obj ...

  3. python小练习2

    结果 代码 鞋子价格=0 男孩价格=0 爆米花价格=0 计算完毕=0 for 鞋子动态价格 in range(0,20): if (计算完毕==1): break; #print("鞋子动态 ...

  4. 用opencv做的静态图片人脸识别

    这次给大家分享一个图像识别方面的小项目,主要功能是识别图像中的人脸并根据人脸在图片库找出同一个与它最相似的图片,也就是辨别不同的人. 环境:VS2013+opencv2.4.13 主要是算法:open ...

  5. You must not call setTag() on a view Glide is targeting when use Glide

    以下代码是一个显示图片的RecyclerView 的Adapter用到的,当点击图片,跳到另一个Activity显示大图.RecyclerView 与ListView不同 然而没有setOnClick ...

  6. 自学git心得-1

    Github作为目前世界上最先进的分布式版本控制系统,是软工工作者管理工程代码的不二选择,笔者也是因时所需,自学了基本的git操作,在此回顾一下也作为分享. 推荐学习资源:https://www.li ...

  7. 如何修改settings.xml的镜像

    今天在下载一个maven依赖包时候,下载后一直显示的是upload的jar包,然后检查了下自己的settings.xml配置,发现依赖的还是以前的内网nexus得配置.所以下载不下来,现在改为ali的 ...

  8. 【PHP系列】框架的抉择

    缘起 在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.框架的问题是需要很多的投入,选择框架时,我们更看重这个框架的未来,存在多年的大型框架必须要有好的 ...

  9. git rebase vs git merge详解

    https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa#.std3ddz0g 请参考另外一篇文 ...

  10. mobile webiste 中的css的font-size em及line-height等换算

    在mobile web设计 中,我们常常需要使用em这个字体大小的单位.em到底是多少呢? em到底应该设置为多少个em呢?通常换算成方法是1em=target fontsize we want/fo ...