文章标题
2016-04-21 16:07
239 查看
对HDFS的理解 HDFS的主要用途是提供分布式的存储机制,在单机的时候我们通常把数据存储在硬盘的文件系统里面成为一个文件,在传统模式底下,当我们存储的东西越来越多的时候,一个硬盘可能不够了,我们就会把好几个硬盘组合成一个阵列,再把数据存放到阵列里面,如果阵列不断扩展的话,有时候阵列里面的硬盘可能达到几千块或者上万块。 HDFS的思想跟传统的硬盘到阵列是有点不一样的,它是利用分散在各个节点中的硬盘来提供一个总的存储空间,如果你是用很多个硬盘来组成阵列的话在逻辑上完全可以把它想象成为一个大硬盘然后连接在一个单台的计算机上面。HDFS它不需要这么强悍的设备,他只要一个普通的PC来组成一个集群就可以了,那HDFS的数据是存储在各个分散的节点上面,hadoop又提供了一种机制,就是在任何一个节点上面只要发布操作命令它就对整个集群构成的HDFS系统进行统一的操作,那比如说我们有ABCD四个节点此时你在A节点操作,这时你操作,操作的数据并不限于A节点上的数据,你其实是可以操作整个有ABCD节点组成的集群,可以把这个集群想象成为一个很大的文件系统,任何一个节点都可以都它进行操作,这样的集群有什么好处咧,首先它的成本很低,不需要专门的设备只需要普通的PC就可以了,可以工业化到生产,并不需要定制生产。当发现容量不够是,只需要扩展节点,成本跟存储量是成线性增长的。 另外HDFS作为一个成熟的文件系统。提供了自动数据冗余(通过复制因子来指定复制多少份),故不需要配置阵列,只需要把一堆硬盘链接到节点上即可。 存储这些数据的目的并不是设置一个仓库把这些数据存放在里面,我们的目的归根到底是的这些数据进行分析和计算,让他产生商业价值。也就是说对这些数据进行分析得到结果,这些结果来指导商业行为,产生利润和价值。HDFS它会很紧密的配合mapreduce并行计算的体系,那比如说我们要计算一个文件里面到底有多少单词,我假设这个文件分布在各个节点里面,那mapreduce可以怎么算咧,我可以把计算任务分配到数据本地,比如我有ABCD四个节点,我在A节点上面数一下有多少个单词,由于A节点是本地硬盘它并没有跨网络传送,所以你在本地数是很快的,然后BCD也做类似的操作,把每个节点的结果汇总到一起,这就是Reduce过程,从而的到最终的结果。MapReduce在HDFS的帮助下它可以避免数据大量在网络上传输,这个过程叫做本地化数据计算。减少数据传输的时间提高计算效率
相关文章推荐
- Centos6.7源码安装 redis
- Matlab函数备忘2
- <meta name="viewport" >
- Android开发之解决APP启动白屏或者黑屏闪现的问题
- 【笔记本】第二阶段工作完成
- eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete This client is too old to work with the working copy at
- 数据结构与算法分析java——线性表3 (LinkedList)
- opencv安装和使用过程中遇到的问题
- 算法导论 第22章 22.2-8
- Linux 命令大全
- Mybatis之XML配置文件解析
- [改善Java代码] 避免instanceof非预期结果
- am335x backlight
- 实例讲解Android中ContentProvider组件的使用方法
- CSS <hr>标签在float布局中Firefox和Chrome的差异
- CSS <hr>标签在float布局中Firefox和Chrome的差异
- hadoop-common源码分析之-Configuration
- 小米闪屏页闪过一道白色页面的问题解决办法
- Linux命令大全—all adb dif cmp 等
- 鸟哥私房菜linux基础学习笔记 5