源自: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. css之表格,表单

    一.表格 1.定义 表格由<table>标签来定义.每个表格均有若干行(由tr标签定义),每行被分割为若个单元格(由td标签定义).字母td指表格数据(table data),即数据单元格 ...

  2. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)解决方案

    前提:已经配置好静态IP以防万一,先安装好iptables服务(不管你装没装,先执行,免得后面添乱)[root@localhost ~]# yum install iptables-services[ ...

  3. 最长公共子序列(LCS)思维导图

  4. 实验三:klee的执行重现机制(示例分析)

    结论性内容: (1)如果是在程序中使用klee_make_symbolic,则可以使用下列脚本进行重现. export LD_LIBRARY_PATH=/home/klee/xiaojiework/k ...

  5. java实现哈弗曼树和哈夫曼树压缩

    本篇博文将介绍什么是哈夫曼树,并且如何在java语言中构建一棵哈夫曼树,怎么利用哈夫曼树实现对文件的压缩和解压.首先,先来了解下什么哈夫曼树. 一.哈夫曼树 哈夫曼树属于二叉树,即树的结点最多拥有2个 ...

  6. tcp三次握手和四次挥手(2)

      背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进 ...

  7. java代码修改了之后运行仍然是原程序

    有的时候java代码改了之后但是运行的程序却没有发生改动,这是什么情况呢?可能懂得的人都觉得十分简单,但对于我这样的小白来说确实很费力.java代码更改后需要编译生成.class文件,说的直白点,这个 ...

  8. 高逼格UILabel的闪烁动画效果

    高逼格UILabel的闪烁动画效果 最终效果图如下: 源码: YXLabel.h 与  YXLabel.m // // YXLabel.h // // Created by YouXianMing o ...

  9. linux shell每天一阅 -- 安装nginx以及apache

    当然这个博客原代码是转载大神的... 自动安装Nginx脚本,采用case方式,选择方式,也可以根据实际需求改成自己想要的脚本mynginx.sh #!/bin/sh ###nginx install ...

  10. php集群和分布式理解

    首先架构层次来说: php的集群是指很多台服务器处理同样的工作,指的是硬件上的一般,比如slb负载均衡主要作用是有多台服务器处理同样的工作, php分布式是指多台服务器处理不同的工作,指的是业务上的一 ...