谈谈Hadoop框架的底层存储组件HDFS
2017-04-10 11:58
281 查看
对于大数据来说,数据量是巨大的,多样性的,而且后期是要进行本地计算的,这样的话数据的存储要求是可靠的来保证数据的不丢失,HDFS就实现了这样的一个功能。
在处理大数据的过程中,一个数据文件会相应存储在hdfs上不同节点的不同文件中,把这些文件组织起来放到不同的文件夹中,这种组织方式叫做命名空间。
HDFS的结构也是遵循主从模式的,主节点主要负责维护命名空间,即维护一个文件在硬盘存储的对应位置,从节点负责存储真实的数据。由于需要存储的文件的格式、大小等不一定相同,所以HDFS提供了一个虚拟的独立存储单位,定义为block(块),方便统一对文件的存储和操作。
主节点:可以有两个。namenode、secondnamenode。
从节点:可以有多个。datanode。
在这需要注意一点,namenode和datanode的version必须保持一致,否则会初始化失败。
文件块:文件块的区分是从文件0偏移量开始,按照固定大小,顺序对文件进行划分并编号,划分好的每一个小文件成为一个block。默认block的大小是128M,如果一个文件的大小没有128M,此时只是逻辑上占有128M,而在实际存储时占用实际文件大小的空间。
HDFS存储数据的可靠性主要表现在其的副本机制,默认是3个,而且有其自己的一套存储策略。一个分布式的集群包含有很多的机架,每个机架又包含很多节点,机架内的节点之间的传输效率高于跨机架的节点之间的传输效率,并且机架之间机器的网络通讯通常要收到上层交换机的间网络带宽的限制。所以为了数据的安全和高效,Hadoop默认的存储策略是:
1、第一个副本存储在client所在的node中。(如果client不在集群中,则随机存储一个node)
2、第二个副本存储在与第一个副本不同机架的其他任意机架的任意node中。
3、第三个副本存储在与第一个副本同一个机架但是不同的node中。
4、如果还有其他副本设置,则随机选择存储。
这样的存储策略可以保证如果第一个节点失效时,能够优先在本机架找到另一个副本,另外如果整个机架发生了故障,能够保证在其他的机架中同样能够找到副本。这样既保证了数据的可靠,又兼容了高效。
当然Hadoop对机架的感知并非是自适应的,不能自动分辨哪个节点是属于哪个机架的,而是需要集群管理者告知其哪个节点属于哪个机架,这样Hadoop的namenode在启动初始化时,能够将机器和节点的对应信息加载到内存中,作为读写block时选择DataNode的策略。我们可以通过namenode所在节点的Hadoop-site.xml文件进行配置,此处不再详述。
在处理大数据的过程中,一个数据文件会相应存储在hdfs上不同节点的不同文件中,把这些文件组织起来放到不同的文件夹中,这种组织方式叫做命名空间。
HDFS的结构也是遵循主从模式的,主节点主要负责维护命名空间,即维护一个文件在硬盘存储的对应位置,从节点负责存储真实的数据。由于需要存储的文件的格式、大小等不一定相同,所以HDFS提供了一个虚拟的独立存储单位,定义为block(块),方便统一对文件的存储和操作。
主节点:可以有两个。namenode、secondnamenode。
从节点:可以有多个。datanode。
在这需要注意一点,namenode和datanode的version必须保持一致,否则会初始化失败。
文件块:文件块的区分是从文件0偏移量开始,按照固定大小,顺序对文件进行划分并编号,划分好的每一个小文件成为一个block。默认block的大小是128M,如果一个文件的大小没有128M,此时只是逻辑上占有128M,而在实际存储时占用实际文件大小的空间。
HDFS存储数据的可靠性主要表现在其的副本机制,默认是3个,而且有其自己的一套存储策略。一个分布式的集群包含有很多的机架,每个机架又包含很多节点,机架内的节点之间的传输效率高于跨机架的节点之间的传输效率,并且机架之间机器的网络通讯通常要收到上层交换机的间网络带宽的限制。所以为了数据的安全和高效,Hadoop默认的存储策略是:
1、第一个副本存储在client所在的node中。(如果client不在集群中,则随机存储一个node)
2、第二个副本存储在与第一个副本不同机架的其他任意机架的任意node中。
3、第三个副本存储在与第一个副本同一个机架但是不同的node中。
4、如果还有其他副本设置,则随机选择存储。
这样的存储策略可以保证如果第一个节点失效时,能够优先在本机架找到另一个副本,另外如果整个机架发生了故障,能够保证在其他的机架中同样能够找到副本。这样既保证了数据的可靠,又兼容了高效。
当然Hadoop对机架的感知并非是自适应的,不能自动分辨哪个节点是属于哪个机架的,而是需要集群管理者告知其哪个节点属于哪个机架,这样Hadoop的namenode在启动初始化时,能够将机器和节点的对应信息加载到内存中,作为读写block时选择DataNode的策略。我们可以通过namenode所在节点的Hadoop-site.xml文件进行配置,此处不再详述。
相关文章推荐
- 揭秘FaceBook Puma演变及发展——FaceBook公司的实时数据分析平台是建立在Hadoop 和Hive的基础之上,这个根能立稳吗?hive又是sql的Map reduce任务拆分,底层还是依赖hbase和hdfs存储
- Hadoop 组件HDFS详解
- 使用python来访问Hadoop HDFS存储实现文件的操作
- HadoopConsumer——消费kafka中若干topic的消息,追加存储至hdfs的不同文件内
- Hadoop中MapReduce计算框架以及HDFS可以干点啥
- hadoop的HDFS文件存储
- 在VMWare Workstation上使用RedHat Linux安装和配置Hadoop群集环境05_HDFS文件系统和Mapreduce框架的启动和运行
- Android-数据存储2(SQLite)及Android底层框架简介
- Hadoop之谈谈HDFS
- Hadoop分布式文件存储系统HDFS高可用HA搭建(何志雄)
- Hadoop MapReduce执行框架作业调度方法 组件和执行流程
- Hadoop2.x:HDFS存储小文件问题及其解决方法
- HDFS进化,Hadoop即将拥抱对象存储?
- Hadoop框架之HDFS的shell操作
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
- Hadoop学习——HDFS数据存储和删除
- 基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口
- Hadoop学习第二次:HDFS的应用场景 部署 原理与基本框架
- 大数据框架hadoop的文件系统(HDFS)命令大全
- Hadoop 组件HDFS详解