| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> (3)Hadoop原理和应用背景介绍 -> 正文阅读 |
|
[大数据](3)Hadoop原理和应用背景介绍 |
(1)大数据和应用场景介绍(2)大数据技术综述总结(3)Hadoop原理和应用背景介绍1.HDFS简介
?? ?HDFS也是由Doug Cutting基于Google公司03年10月开源的论文GFS做的开源实现。目前为止,HDFS的运用非常广泛,基本上很多大数据平台大部分都会选用HDFS(或者类似HDFS)这样的分布式文件系统、来作为海量数据存储的一个解决方案。最初在设计HDFS时的背景是
当时设备的存储和读写性能都很差,并且单一设备运行稳定性低的情况
(现在硬件设备优化很好了,目前HDFS已经不是最优方案了),于是
HDFS在设计之初就是为了解决大规模、海量数据的存储以及读写,并且尽可能的保证设备的稳定性。
?? ?
【HDFS的优势】
?? ?1.
高容错性,HDFS提供了“副本冗余机制”,简单来说就是
一份数据在HDFS当中存放,包含它自身在内至少会有(默认)三个副本类似随机的存放在集群不同的服务器上,并且当其中一台服务器宕机、当前这台服务器上数据丢失,但
HDFS会自动再将缺失的副本再通过copy的方式、保证数据的副本不会低于默认三个(副本默认是3个)。
??? ?2.
可构建在廉价的商业服务器上,基于第一条高容错性的优势,HDFS可以搭建在低成本的廉价服务器上,而没有必要选择非常昂贵的服务器上,因为即使廉价服务器稳定性相对较差,
但是集群规模成百上千台宕机一台、两台对于整个HDFS集群来说,基本上没有任何的影响。?
?? ?3.
适合海量数据存储,分布式架构设计、HDFS可支持几万台服务器的集群规模,乘以每台服务器磁盘容量、整个HDFS文件系统容量非常之大,并且他所支持存放的单个数据文件GB、TB、PB级别都没有任何问题。
??? ?4.
适合批处理,通过
“移动计算而非移动数据”设计,简单来说就是数据在哪个节点,你就呆在哪计算就行了。
避免了数据跨网络、结点移动拷贝的工作,很大限度的提升计算速度。?
?? ?5.
流式数据访问,一次写入、多次读取。文件一旦写入完成、不能修改,
仅仅只支持追加。保证了数据的一致性。?
【HDFS的适用场景】
?? ?1.集群规模大:适合大文件存储、海量数据存储。 ?? ?2.集稳容量大:适合批量数据访问 HDFS适用于“大文件存储、海量数据存储”、“批量数据访问”这些场景
【HDFS的缺点】
但是HDFS本身设计上也存在问题:?
?? ?1.
低延时数据访问
:这里的
“低延时”指的是例如毫秒级别要将数据写入HDFS、或毫秒级别读取HDFS内数据
,无法支持。也就是说它某一时间大量读写不要紧,集群容量够稳定,但你要它毫秒级别完成那肯定不现实,至少任务调度、任务结果收集都要耗一点时间。
?? ?2.
并发写入、随机修改
:①HDFS当中
文件只能有一个写、不支持多个线程同时写入一个文件
。②并且
只支持追加写,不支持随机写。
?
?? ?3.
小文件存储
:小文件问题是大家在大数据领域需要格外注意的问题。首先撇开HDFS来说,假如10GB数据容量,10个1GB的数据集、1w个1M的数据集,占用存储空间相同,让你在这两种数据集中找到其中一个数据文件,明显第二种场景非常耗时,也
就是说小文件存储之后,在寻址的时间开销会非常之高、以至于会高于读取时间
。此外,回到HDFS当中来考虑,
HDFS当中每一个数据文件都会对应有一份元数据信息需要存放
,大家可以把元数据信息先简单理解为就是文件的一些基本信息(如文件名称、大小、权限等),一个文件对应一条元数据信息,当你存储的都是一些小文件、文件个数会急速增长,对应元数据也就需要更多的空间来存储,并且元数据是在内存介质中存储,这样一来会非常浪费内存资源、显然是不适用的。所以,在使用HDFS过程当中一定要注意“小文件”的这个问题。
2.HDFS(星期六再补充) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 12:46:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |