Hadoop核心组件之HDFS
HDFS:分布式文件系统
一句话总结
一个文件先被拆分为多个Block块(会有Block-ID:方便读取数据),以及每个Block是有几个副本的形式存储
1个文件会被拆分成多个Block
blocksize:128M(Hadoop2.0以后默认的块大小,可以自定义配置)
130M ==> 2个Block: 128M 和 2M
HDFS设计目标
- 巨大的分布式文件系统
- 满足大数据场景基本数据存储的要求
- 廉价的机器上
- 当你的存储空间不够,你可以水平横向扩展机器方式提高
HDFS架构
NameNode + N个DataNode
典型的主从架构,即:
1 Master(NameNode/NN) 带 N个Slaves(DataNode/DN)
建议:NN和DN是部署在不同的节点上
PS:
常见的主从架构还有:HDFS/YARN/HBase
主从架构一个难题就是:如何保证HA的问题,很多时候会使用Zookeeper来配置使用
NameNode/NN:主节点Master
1)负责客户端请求的响应
2)负责元数据(文件的名称、副本系数、Block存放的DN)的管理
DataNode/DN:从节点Slaves
1)存储用户的文件对应的数据块(Block)
2)要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况
HDFS副本机制
replication factor:副本系数、副本因子
一个大的文件会被拆分为许多块,最终以多副本的方式存储在多个节点上
一个文件,除了最后一个,其余所有块的大小都是一致的
问题:那么如何为每个Block选择存储在哪些节点上呢?
Rack代表的是机架:一般三份副本分别是这样存储的
第一份副本:存储在当前提交存储的机架中当前节点上
第二份副本:存储在非当前机架上的某一节点上
第三份副本:和第二副本统一机架的不同节点之上
建议:生产只能够,起码划分两个及其以上的机架
HDFS Shell
Usage: hdfs dfs [COMMAND [COMMAND_OPTIONS]]
hadoop fs -ls / 等价 hdfs dfs -ls /
[root@hadoop000 data]# ls
hadoop-tmp hello.txt
上传:
[root@hadoop000 data]# hadoop fs -put hello.txt /
下载:
[root@hadoop000 data]# hadoop fs -get /test/a/b/h.txt
查看内容:
[root@hadoop000 data]# hadoop fs -text /hello.txt
[root@hadoop000 data]# hadoop fs -cat /hello.txt
建立目录;
[root@hadoop000 data]# hadoop fs -mkdir /test
创建递归的目录
[root@hadoop000 data]# hadoop fs -mkdir -p /test/a/b
递归展示目录文件:
[root@hadoop000 data]# hadoop fs -ls -R /
本地拷贝到hdfs:
[root@hadoop000 data]# hadoop fs -copyFromLocal hello.txt /test/a/b/h.txt
删除文件:
[root@hadoop000 data]# hadoop fs -rm /hello.txt
递归删除文件夹:
[root@hadoop000 data]# hadoop fs -rm -R /test
HSFS的读写流程,工作原理(面试)
漫画图解
https://blog.csdn.net/eric_sunah/article/details/41546863
Client:客户端,通过HDFS Shell或Java API发起读写请求
1个NameNode:全局把控
N 个DataNode: 数据存储
写数据流程:
1.客户端把文件拆分为多个Block
2.NameNode:提供刚才拆分出来的Block块的具体datanode存储位置
3.DataNode:存储Block块的数据,把3个副本数据写完
读数据流程:
1.用户提供文件名就可以给客户端
2.客户端发起请求给NameNode
3.NameNode就会告诉客户端具体的存储位置和块
4.发起最近距离节点请求给DataNode下载数据
HDFS的优缺点
优点:
数据冗余,硬件容错
一次写入,多次读取数据
适合存储大文件
构建在廉价机器上
缺点:
延时性高
不适合小文件存储
Hadoop核心组件之HDFS的更多相关文章
- hadoop核心组件概述及hadoop集群的搭建
什么是hadoop? Hadoop 是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分 ...
- 对Hadoop分布式文件系统HDFS的操作实践
原文地址:https://dblab.xmu.edu.cn/blog/290-2/ Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核 ...
- Hadoop学习笔记—HDFS
目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...
- Hadoop官方文档翻译——HDFS Architecture 2.7.3
HDFS Architecture HDFS Architecture(HDFS 架构) Introduction(简介) Assumptions and Goals(假设和目标) Hardware ...
- hadoop 2.5 hdfs namenode –format 出错Usage: java NameNode [-backup] |
在 cd /home/hadoop/hadoop-2.5.2/bin 下 执行的./hdfs namenode -format 报错[hadoop@node1 bin]$ ./hdfs nameno ...
- Hadoop 分布式文件系统 - HDFS
当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...
- Hadoop 2.x HDFS新特性
Hadoop 2.x HDFS新特性 1.HDFS联邦 2. HDFS HA(要用到zookeeper等,留在后面再讲) 3.HDFS快照 回顾: HDFS两层模型 Namespa ...
- 何时使用hadoop fs、hadoop dfs与hdfs dfs命令(转)
hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...
- 何时使用hadoop fs、hadoop dfs与hdfs dfs命令
hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后 ...
随机推荐
- 9043Markdown常用用法
1.标题 1.1 方法一:==和--标记 =和-标记语法格式如下: 我是标题一 == 我是标题二 -- 组成: 1标题文字:我是标题一 2回车换行 3标记:== (为一级标题)--(为二级标题) 效果 ...
- 使用okHttp登录、Md5密码加密
1.使用okHttp3登录 2.Md5密码加密 3.完整代码 4.项目案例 使用okHttp3登录: 使用okHttp3之前要在build.gradle引入okHttp3的依赖(顺便引入解析数据的gs ...
- seq2seq通俗理解----编码器和解码器(TensorFlow实现)
1. 什么是seq2seq 在⾃然语⾔处理的很多应⽤中,输⼊和输出都可以是不定⻓序列.以机器翻译为例,输⼊可以是⼀段不定⻓的英语⽂本序列,输出可以是⼀段不定⻓的法语⽂本序列,例如: 英语输⼊:&quo ...
- 设计模式(C#)——05适配器模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 自然界有一条规则--适者生存.意思是生物要使用自然界的变化:在程序界中则需要新环境调用现存对象.那么,如何在新环境中 ...
- Linux 防火墙开放、查询、关闭端口
1. 开放指定端口 firewall-cmd --zone=public --add-port=5121/tcp --permanent # --permanent 永久生效,如果不加此条,重启后该命 ...
- Python之流程控制——while循环
Python之流程控制--while循环 一.语法 while 条件: 执行代码 while就是当的意思,它指当其后面的条件成立,就执行while下面的代码. 例:写一个从0打印到10的程序 coun ...
- 【Offer】[15] 【二进制中1的个数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路分析 让整数和1相与,可以判断整数二进制表示中最右边一位是否为1, ...
- 2018阿里-研发工程师JAVA Software Engineer, Java
岗位描述Job Description如果你想了解JAVA开发在阿里巴巴互联网生态系统中无与伦比的应用广度与深度: 如果你对基础技术感兴趣,你可以参与基础软件的设计.开发和维护,如分布式文件系统.缓存 ...
- 基础知识:Mysql基本操作命令
启动mysql : mysql -hlocalhost -uroot -p 创建数据库:create database 数据库名字; 指定要操作的数据库:use 数据库名字; 查看数据表建表语句:s ...
- 云原生生态周报 Vol. 19 | Helm 推荐用户转向 V3
作者| 禅鸣.忠源.天元.进超.元毅 业界要闻 Helm 官方推荐用户迁移到 V3 版本 Helm 官方发布博客,指导用户从 v2 迁移到 v3,这标志着官方开始正式推进 helm 从 v2 转向 v ...