hadoop入门(2)——HDFS2.0应用场景、原理、基本架构及使用方法
一、HDFS概述
优点:高容错性、适合批处理、适合大数据处理、流式文件访问:一次写入,多次读取。
缺点:不适合低延迟数据访问、不适合小文件存取(受限于NameNode)、不适合并发写入。
二、HDFS基本架构和原理
考虑一个问题:如何实现一个分布式文件系统?
业务场景:目前有几个T级别的大文件,有数个大容量存储主机。
初期思路:将每个文件创建几个副本,通过冗余机制,分别存放到不同的机器上。另外,通过一台专门的主机master,记录这些文件及其副本都存储到了哪些机器上。
初期思路的缺点:①存储负载不均衡。②读取文件时无法并行读取,受限于单台机器的IO性能。③master存在单点故障风险。④当文件大于存储机器的磁盘容量时,就无法进行存储了。
HDFS的思路:基本原理是将大文件分块,每个文件块大小相同(64M),用一个节点master记录文件块的存放位置。每个文件块建立多个副本。采用NameNode和DataNode的方式,两者通过心跳进行检测。同时为了避免单点故障,提供一个standby的NameNode。client负责切分文件,并与NameNode交互,获取文件位置信息。
HDFS数据块(block):
HDFS写流程:通过client类,首先询问当前文件是否存在。然后client通过流水线的方式写入。每次会把block拆分成更加小的packet。写完一个之后继续下一个,然后datanode传输之前写入的packet。以此类推,直至写完。
HDFS读流程:client通过询问NameNode获取该文件所在的datanode位置,然后将文件读取出来。
HDFS的物理拓扑:集群内有多个机架,每个机架上有多个节点。所以分配block时需要考虑跨机架的效率问题。
HDFS副本放置策略:副本1写在和client相同 的节点上。副本2写在不同机架的节点上。副本3写在与副本2同机架的另一个节点上。
HDFS可靠性策略:
3种常见错误:文件损坏、网络或者机器失效、NameNode挂掉。
文件完整性校验:通过CRC32校验,用其他副本去掉损坏文件。
Heartbeat:检测datanode机器是否失效。
元数据信息:FSImage\多份存储、主备切换。
HDFS不适合存储小文件:①NameNode的内存是有限的。②大量小文件寻址时间长。③NameNode存储block数目是有限的。
三、HDFS程序设计
HDFS访问方式:HDFS shell 、Java api、rest api、fuse协议、lib hdfs、其他语言编程API。
HDFS Shell命令一览表:通过hadoop提供的命令行工具完成。也提供了很多的管理脚本。(详见后续介绍)
Java API: Configuration类、FileSystem类、FSDataInputStream、FSDataOutputStream。
其他语言:略。
四、HDFS2.0新特性
1、NameNode HA:
2、NameNode Federation:集群中提供多个NameNode,每个NameNode负责管理一部分DataNode。
3、HDFS 快照:帮助用户保存某个时刻的数据。防止用户误删数据。使用命令开启该功能。
4、HDFS 缓存:
5、HDFS ACL:启用时需要修改配置文件。原来的方式受限于单一user和单一group机制。
6、异构层级存储结构:原本是将所有的存储介质抽象成性能相同的DISK。
每个节点是由多种异构存储介质组成的。
当前功能尚在完善中。
hadoop入门(2)——HDFS2.0应用场景、原理、基本架构及使用方法的更多相关文章
- [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...
- hadoop入门(3)——hadoop2.0理论基础:安装部署方法
一.hadoop2.0安装部署流程 1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费) 2.使用RPM包安装部署:Apache ...
- 大数据技术hadoop入门理论系列之二—HDFS架构简介
HDFS简单介绍 HDFS全称是Hadoop Distribute File System,是一个能运行在普通商用硬件上的分布式文件系统. 与其他分布式文件系统显著不同的特点是: HDFS是一个高容错 ...
- 《区块链DAPP开发入门、代码实现、场景应用》笔记5——区块链福利彩票的设计
笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决.彩票行业就是个例子. 在讲解代码之前,首先讲解一下业务设计,如图6.15所示. 图6.15 ...
- 大数据学习笔记之Hadoop(一):Hadoop入门
文章目录 大数据概论 一.大数据概念 二.大数据的特点 三.大数据能干啥? 四.大数据发展前景 五.企业数据部的业务流程分析 六.企业数据部的一般组织结构 Hadoop(入门) 一 从Hadoop框架 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- 初识Hadoop入门介绍
初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- 大数据:Hadoop入门
大数据:Hadoop入门 一:什么是大数据 什么是大数据: (1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如 ...
随机推荐
- bzoj1189
1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2321 Solved: 724[Submi ...
- 【USACO 2.3】The Longest Prefix
题意: 给你一个少于200000的字符串,求最长的可以划分为给定词典里的单词的前缀. 题解: dp[i]表示第i位结尾的前缀是否可行,然后枚举每一位如果dp[i-1]==1,枚举所有单词,匹配成功的单 ...
- for循环嵌套执行效率
今天做项目时遇到一个for循环的嵌套问题,一个循环次数多,一个次数少,怎样设计效率较高. 想起以前笔试时遇到过这个问题,当时由于时间仓促,没有细想,今天在实际代码中遇到这么问题,于是动笔算了下. 设两 ...
- 【bzoj2281】 Sdoi2011—黑白棋
http://www.lydsy.com/JudgeOnline/problem.php?id=2281 (题目链接) 题意 一个1*n的棋盘,棋盘上一个隔一个的放着个黑棋和白棋,最左端是白棋,最右端 ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- TypeScript Type Compatibility(类型兼容)
TypeScript中的类型兼容是基于结构归类的.在普通分类的相比之下,结构归类是一种纯粹用于将其成员的类型进行关联的方法.思考下面的代码: interface Named { name: strin ...
- jQuery下拉菜单插件Tendina.
插件效果: 下载地址和文档: https://github.com/iprignano/tendina
- C#之字符串篇
大杂烩 一.类型转换 字符串转整形: int a = int.Parse(""); //不能转换null int b = Convert.ToInt32("&quo ...
- ExtJs 实现表单联动
最近做的项目使用Extjs.遇到表单联动的业务.下面来说说主要实现思想: 说明:表单联动一般存在从属关系,有大范围的对象和大范围中的小对象.比如地理位置的选定(例:浙江省-杭州市-某某县).在这里,我 ...
- 界面通信之block传值
block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...