Hadoop之HDFS
摘要:HDFS是Hadoop的核心模块之一,围绕HDFS是什么、HDFS的设计思想和HDFS的体系结构三方面来介绍。
关键词:Hadoop HDFS 分布式存储系统
HDFS是Hadoop的核心模块之一,HDFS是什么?它是Hadoop分布式文件系统(Hadoop Distributed File System),摘录Apache 组织关于HDFS的介绍“The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware. It has many similarities with existing distributed file systems. However, the differences from other distributed file systems are significant. HDFS is highly fault-tolerant and is designed to be deployed on low-cost hardware. HDFS provides high throughput access to application data and is suitable for applications that have large data sets. HDFS relaxes a few POSIX requirements to enable streaming access to file system data. HDFS was originally built as infrastructure for the Apache Nutch web search engine project. ”
Hadoop的设计思想受到Google公司的GFS设计思想的启示,基于一种开源的理念实现的分布式分布式文件系统。HDFS的设计基础与目标如下。
1)硬件错误(Hardware Failure)是常态,因而需要数据冗余技术。
2)流失数据访问(Streaming Data Access),即数据批量读取而非随机读写,Hadoop擅长做数据分析而不是事务处理。
3)大规模数据集(Large Data Sets)。
4)简单一致性模型(Simple Coherency Model),即为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,也就是文件一经写入,关闭,就再不要修改。
5)“Moving Computation is Cheaper than Moving Data”,通俗理解,程序采用“数据就近”原则分配节点执行。
6)Portability Across Heterogeneous Hardware and Software Platforms,即有着很强的可扩展性。
图1 HDFS体系结构
HDFS体系结构如图1所示,它采用主从结构,Namenode属于主段,Datanode属于从端。
Namenode
1)管理文件系统的命名空间。
2)记录 每个文件数据快在各个Datanode上的位置和副本信息。
3)协调客户端对文件的访问。
4)记录命名空间内的改动或者空间本省属性的改动。
5)Namenode 使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等。
从社会学来看,Namenode是HDFS里面的管理者,发挥者管理、协调、操控的作用。
Datanode
1)负责所在物理节点的存储管理。
2)一次写入,多次读取(不修改)。
3)文件由数据库组成,一般情况下,数据块的大小为64MB。
4)数据尽量散步到各个节点。
从社会学的角度来看,Datanode是HDFS的工作者,发挥按着Namenode的命令干活,并且把干活的进展和问题反馈到Namenode的作用。
客户端如何访问HDFS中一个文件呢?具体流程如下。
1)首先从Namenode获得组成这个文件的数据块位置列表。
2)接下来根据位置列表知道存储数据块的Datanode。
3)最后访问Datanode获取数据。
注意:Namenode并不参与数据实际传输。
数据存储系统,数据存储的可靠性至关重要。HDFS是如何保证其可靠性呢?它主要采用如下机理。
1)冗余副本策略,即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置相应的复制因子。
2)机架策略,即HDFS的“机架感知”,一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率。
3)心跳机制,即Namenode周期性从Datanode接受心跳信号和快报告,没有按时发送心跳的Datanode会被标记为宕机,不会再给任何I/O请求,若是Datanode失效造成副本数量下降,并且低于预先设置的阈值,Namenode会检测出这些数据块,并在合适的时机进行重新复制。
4)安全模式,Namenode启动时会先经过一个“安全模式”阶段。
5)校验和,客户端获取数据通过检查校验和,发现数据块是否损坏,从而确定是否要读取副本。
6)回收站,删除文件,会先到回收站/trash,其里面文件可以快速回复。
7)元数据保护,映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本。
8)快照,支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态。
附录:HDFS 文件操作
对HDFS文件操作有两种方式,一是命令行方式,二是HDFS API方式。
HDFS常用命令归总
1)列出HDFS下的文件
hadoop fs -ls
2)上传本地文件到HDFS
hadoop fs -put dir1 dir2
说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录
3)下载HDFS文件到本地
hadoop fs -get dir1 dir2
说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录
4)创建HDFS文件
hadoop fs -mkdir dir
5)删除HDFS下的文档
hadoop fs -rmr dir
6)查看HDFS下某个文件的内容
hadoop fs -cat 文件路径
7)查阅帮助
获取所用Hadoop版本关于HDFS完整的命令列表,可执行
hadoop fs
或者
使用help来显示某个命令的用法与简短描述。
例如 要了解ls,可执行
hadoop fs -help ls
Source:
1 http://www.wangluqing.com/2014/02/hadoop-hdfs/
2 http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
3 炼数成金《Hadoop数据分析平台》第三课分布式文件系统HDFS
Hadoop之HDFS的更多相关文章
- Hadoop之HDFS文件操作常有两种方式(转载)
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HD ...
- 搭建maven开发环境测试Hadoop组件HDFS文件系统的一些命令
1.PC已经安装Eclipse Software,测试平台windows10及Centos6.8虚拟机 2.新建maven project 3.打开pom.xml,maven工程项目的pom文件加载以 ...
- Hadoop入门--HDFS(单节点)配置和部署 (一)
一 配置SSH 下载ssh服务端和客户端 sudo apt-get install openssh-server openssh-client 验证是否安装成功 ssh username@192.16 ...
- Hadoop操作hdfs的命令【转载】
本文系转载,原文地址被黑了,故无法贴出原始链接. Hadoop操作HDFS命令如下所示: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 ...
- hadoop执行hdfs文件到hbase表插入操作(xjl456852原创)
本例中需要将hdfs上的文本文件,解析后插入到hbase的表中. 本例用到的hadoop版本2.7.2 hbase版本1.2.2 hbase的表如下: create 'ns2:user', 'info ...
- Hadoop学习-HDFS篇
HDFS设计基础与目标 硬件错误是常态.因此需要冗余 流式数据访问.即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理(随机性的读写数据等). 大规模数据集 简单一致性模型.为了 ...
- Hadoop之HDFS原理及文件上传下载源码分析(下)
上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文 ...
- Hadoop之HDFS及NameNode单点故障解决方案
Hadoop之HDFS 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 H ...
- Hadoop基础-HDFS集群中大数据开发常用的命令总结
Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...
- Hadoop基础-HDFS的API常见操作
Hadoop基础-HDFS的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习HDFS时的一些琐碎的学习笔记, 方便自己以后查看.在调用API ...
随机推荐
- English trip -- VC(情景课) 8 B job duties 工作职责
Vocabulary focus 核心词汇 She is a receptionist. She answers the phone. She is a cashier She counts mon ...
- c面试题总结
1. char *pname=new char[10];pname="asdzxc"; cout<<pname: delete pname: 该程序运行时会崩溃,原因时 ...
- 用DFS 解决全排列问题的思想详解
首先考虑一道奥数题目: □□□ + □□□ = □□□,要将数字1~9分别填入9个□中,使得等式成立.例如173+286 = 459.请输出所有合理的组合的个数. 我们或许可以枚举每一位上所有的数,然 ...
- vij 1097 贪心
合并果子 描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之 ...
- POJ-3083 Children of the Candy Corn (BFS+DFS)
Description The cornfield maze is a popular Halloween treat. Visitors are shown the entrance and mus ...
- UVALive 2318 水题
给出c 个竞争者.v 个投票人.每个投票人的投票顺序.问你谁会胜出.在第几轮.完全是个水题.比赛的时候debug接近两个点没过.因此差点放弃了整场比赛.猜测是错在找最大和第二大的序号哪里错的.因为我换 ...
- property 的详细使用方法
property(fget=None, fset=None, fdel=None, doc=None) 俗话说条条大路通罗马,同样是完成一件事,Python 其实提供了好几个方式供你选择. prop ...
- C++中的数据存储方式自动存储、静态存储和动态存储
C++中变量存储方式有三种,自动存储,静态存储,动态存储 自动存储简单意义上就是在函数内不用任何关键字直接定义的变量,它在函数被调用时被创建,在函数退出时自动消失, 静态存储顾名思义就是在程序的整个运 ...
- windows内存体系结构 内存查询,读,写(附录源码)
“进程内存管理器”这个程序实现的最基本功能也就是对内存的读写,之前的两篇文章也就是做的一个铺垫,介绍了内核模式切换和IoDeviceControl函数进行的应用程序与驱动程序通信的问题.接下来就进入正 ...
- DevExpress v17.2新版亮点—WPF篇(六)
用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...