




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云计算与大数据第2版分布式文件系统及并行计算框架9.1分布式文件系统HDFS9.2并行计算框架MapReduce实验HDFS的文件操作命令及API编程实验Eclipse下的MapReduce编程重点:HDFS结构及文件访问MapReduce原理实验难点:实验本章重点及难点9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问1、体系结构9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问NameNode管理者文件系统的Namespace。它通过Namespace镜像文件(NamespaceImage)和操作日志文件(EditLog)管理文件系统树(FileSystemtree)以及文件树中所有的文件和文件夹的元数据(Metadata)。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是它并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问DataNode是文件系统的工作节点,它们根据客户端或者是NameNode的调度来存储和检索数据,并且定期向Namenode发送它们所存储的块(block)的列表。集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问HDFS的基本文件访问过程是:1)首先,用户的应用程序通过HDFS的客户端程序将文件名发送至NameNode。2)NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,再根据数据块信息找到保存数据块的DataNode地址,将这些地址回送给客户端。3)客户端接收到这些DataNode地址之后,与这些DataNode并行地进行数据传输操作,同时将操作结果的相关日志(比如是否成功,修改后的数据块信息等)提交到NameNode。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问HDFS的基本文件访问过程是:1)首先,用户的应用程序通过HDFS的客户端程序将文件名发送至NameNode。2)NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,再根据数据块信息找到保存数据块的DataNode地址,将这些地址回送给客户端。3)客户端接收到这些DataNode地址之后,与这些DataNode并行地进行数据传输操作,同时将操作结果的相关日志(比如是否成功,修改后的数据块信息等)提交到NameNode。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问2、相关概念1)数据块Block为了提高硬盘的效率,文件系统中最小的数据读写单位不是字节,而是一个更大的概念——数据块。HDFS数据块的默认大小是64MB,而且在不少实际部署中,HDFS的数据块甚至会被设置成128MB甚至更多。将数据块设置成这么大的原因是减少寻址开销的时间。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问2、相关概念2)命名空间HDFS中的文件命名遵循了传统的“目录/子目录/文件”格式。通过命令行或者是API可以创建目录,并且将文件保存在目录中;也可以对文件进行创建、删除、重命名操作。命名空间由NameNode管理,所有对命名空间的改动(包括创建、删除、重命名,或是改变属性等,但是不包括打开、读取、写入数据)都会被HDFS记录下来。HDFS允许用户配置文件在HDFS上保存的副本数量,保存的副本数称作“副本因子”(ReplicationFactor),这个信息也保存在NameNode中。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问2、相关概念3)通信协议作为一个分布式文件系统,HDFS中大部分的数据都是通过网络进行传输的。为了保证传输的可靠性,HDFS采用TCP协议作为底层的支撑协议。应用可以向NameNode主动发起TCP连接。应用和NameNode交互的协议称为Client协议,NameNode和DataNode交互的协议称为DataNode协议。而用户和DataNode的交互是通过发起远程过程调用(RemoteProcedureCall,RPC)、并由NameNode响应来完成的。另外,NameNode不会主动发起远程过程调用请求。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问2、相关概念3)通信协议作为一个分布式文件系统,HDFS中大部分的数据都是通过网络进行传输的。为了保证传输的可靠性,HDFS采用TCP协议作为底层的支撑协议。应用可以向NameNode主动发起TCP连接。应用和NameNode交互的协议称为Client协议,NameNode和DataNode交互的协议称为DataNode协议。而用户和DataNode的交互是通过发起远程过程调用(RemoteProcedureCall,RPC)、并由NameNode响应来完成的。另外,NameNode不会主动发起远程过程调用请求。9.1分布式文件系统HDFS9.1.1HDFS的结构及文件访问2、相关概念4)客户端严格来讲,客户端并不能算是HDFS的一部分,但是客户端是用户和HDFS通信最常见也是最方便的渠道,而且部署的HDFS都会提供客户端。客户端为用户提供了一种可以通过与Linux中的Shell类似的方式访问HDFS的数据。客户端支持最常见的操作如(打开、读取、写入等);而且命令的格式也和Shell十分相似,大大方便了程序员和管理员的操作。9.1分布式文件系统HDFS9.1.2HDFS的数据管理HDFS通过三个重要角色:NameNode、DataNode、Client来进行文件系统的管理。1)文件写入①Client向NameNode发起文件写入的请求。
②NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
③Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。
9.1分布式文件系统HDFS9.1.2HDFS的数据管理2)文件读取①Client向NameNode发起文件读取的请求。②NameNode返回文件存储的DataNode的信息。
③Client读取文件信息。
3)文件块(Block)复制①NameNode发现部分文件的block不符合最小复制数的要求或者部分DataNode失效。
②通知DataNode相互复制Block。
③DataNode开始直接相互复制。
9.1分布式文件系统HDFS9.1.2HDFS的数据管理写过程:9.1分布式文件系统HDFS9.1.2HDFS的数据管理读过程:9.1分布式文件系统HDFS9.1.2HDFS的数据管理读过程:9.1分布式文件系统HDFS9.1.2HDFS的数据管理①Block的放置:一个Block会有三份备份。②心跳检测:用心跳检测DataNode的健康状况,如果发现问题就采取数据备份的方式来保证数据的安全性。
③
数据复制:使用HDFS的balancer命令配置一个Threshold来平衡每一个DataNode磁盘利用率。④
数据校验。采用CRC32作数据交验。⑤
单个NameNode。如果单个NameNode失败,任务处理信息将会记录在本地文件系统和远端的文件系统中。
9.1分布式文件系统HDFS9.1.2HDFS的数据管理⑥
数据管道性的写入。当客户端要写入文件到DataNode上,首先会读取一个Block然后写到第一个DataNode上,然后由第一个DataNode传递到备份的DataNode上,一直到所有需要写入这个Block的DataNode都成功写入,客户端才会开始写下一个Block。⑦
安全模式。分布式文件系统启动时会首先进入安全模式,当分布式文件系统处于安全模式时,文件系统中的内容不允许修改和删除,直到安全模式结束。安全模式主要是为了在系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或者删除部分数据块。9.1分布式文件系统HDFS9.1.2HDFS的数据管理⑥
数据管道性的写入。当客户端要写入文件到DataNode上,首先会读取一个Block然后写到第一个DataNode上,然后由第一个DataNode传递到备份的DataNode上,一直到所有需要写入这个Block的DataNode都成功写入,客户端才会开始写下一个Block。⑦
安全模式。分布式文件系统启动时会首先进入安全模式,当分布式文件系统处于安全模式时,文件系统中的内容不允许修改和删除,直到安全模式结束。安全模式主要是为了在系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或者删除部分数据块。9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口1、HDFS的启动与关闭启动输入:sbin/start-dfs.sh9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口1、HDFS的启动与关闭关闭输入:sbin/stop-dfs.sh9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作命令基本格式:hadoopfs-cmd<args>9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-ls//列出hdfs文件系统根目录下的目录和文件hadoopfs-ls-R//列出hdfs文件系统所有的目录和文件9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-put<localfile><hdfsfile>//hdfsfile的父目录一定要存在,否则命令不会执行hadoopfs-put<localfileordir>...<hdfsdir>//hdfsdir一定要存在,否则命令不会执行hadoopfs-put-<hdsffile>//从键盘读取输入到hdfsfile中,按Ctrl+D结束输入,hdfsfile不能存在,否则命令不会执行9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-moveFromLocal<localsrc>...<hdfsdst>//与put相类似,命令执行后源文件localsrc被删除,也可以从从键盘读取输入到hdfsfile中hadoopfs-copyFromLocal<localsrc>...<hdfsdst>//与put相类似,也可以从从键盘读取输入到hdfsfile中9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-get<hdfsfile><localfileordir>//localfile不能和hdfsfile名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地hadoopfs-get<hdfsfileordir>...<localdir>//拷贝多个文件或目录到本地时,本地要为文件夹路径
注意:如果用户不是root,local路径要为用户文件夹下的路径,否则会出现权限问题,9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-copyToLocal<localsrc>...<hdfsdst>//与get相类似hadoopfs-rm<hdfsfile>...hadoopfs-rm-r<hdfsdir>...//每次可以删除多个文件或目录9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs
-mkdir
<hdfspath>//只能一级一级的建目录,父目录不存在的话使用这个命令会报错hadoopfs
-mkdir
-p<hdfspath>//所创建的目录如果父目录不存在就创建该父目录9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-getmerge<hdfsdir><local
file>//将hdfs指定目录下所有文件排序后合并到local指定的文件中,文件不存在时会自动创建,文件存在时会覆盖里面的内容hadoopfs-getmerge-nl<hdfsdir><local
file>//加上nl后,合并到localfile中的hdfs文件之间会空出一行9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-cp<hdfsfile><hdfsfile>//目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在
hadoopfs-cp<hdfsfileordir>...<hdfsdir>//目标文件夹要存在,否则命令不能执行9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-mv<hdfsfile><hdfsfile>//目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件不存在hadoopfs-mv<hdfsfileordir>...<hdfsdir>//源路径有多个时,目标路径必须为目录,且必须存在。
注意:跨文件系统的移动(local到hdfs或者反过来)都是不允许的9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs
-count<hdfspath
>//统计hdfs对应路径下的目录个数,文件个数,文件总计大小
//显示为目录个数,文件个数,文件总计大小,输入路径9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadoopfs-text
<hdsffile>//将文本文件或某些格式的非文本文件通过文本格式输出hadoopfs
-setrep-R3
<hdfspath
>//改变一个文件在hdfs中的副本个数//上述命令中数字3为所设置的副本个数//-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hdoopfs
-stat[format]<hdfspath
>//返回对应路径的状态信息
[format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)hadoopfs-tail<hdfsfile>//在标准输出中显示文件末尾的1KB数据
9.2分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hdoopfs
-stat[format]<hdfspath
>//返回对应路径的状态信息
[format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)hadoopfs-tail<hdfsfile>//在标准输出中显示文件末尾的1KB数据
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hadooparchive-archiveNamename.har-p<hdfsparentdir><src>*<hdfsdst>//命令中参数name:压缩文件名,自己任意取;//<hdfsparentdir>:压缩文件所在的父目录;//<src>:要压缩的文件名;//<hdfsdst>:压缩文件存放路径
*示例:hadooparchive-archiveNamehadoop.har-p/user1.txt2.txt/des
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hdfs
balancer//如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程distcp用来在两个HDFS之间拷贝数据
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口2、文件操作hdfsdfsadmin-help//管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看hdfsdfsadmin-report//显示文件系统的基本数据hdfsdfsadmin-safemode<enter|leave|get|wait>//enter:进入安全模式;//leave:离开安全模式;//get:获知是否开启安全模式;//wait:等待离开安全模式
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口3、编程接口在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs软件包中,包括常见的open、read、write、close等操作。Hadoop文件的API起点是FileSystem类,这是一个与文件系统交互的抽象类,我们通过调用factory的方法FileSystem.get(Configurationconf)来取得所需的FileSystem实例。
9.1分布式文件系统HDFS9.1.3HDFS操作命令与编程接口3、编程接口在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs软件包中,包括常见的open、read、write、close等操作。Hadoop文件的API起点是FileSystem类,这是一个与文件系统交互的抽象类,我们通过调用factory的方法FileSystem.get(Configurationconf)来取得所需的FileSystem实例。
9.2并行计算框架MapReduce9.2.1MapReduce原理MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是"任务的分解与结果的汇总"。在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 8663:2025 EN Information technology - Brain-computer interfaces - Vocabulary
- 国家能源内江市2025秋招面试专业追问及参考综合管理岗位
- 中国移动铜陵市2025秋招笔试行测经典题及答案
- 中国广电荆州市2025秋招笔试行测题库及答案通信技术类
- 国家能源六盘水市2025秋招面试专业追问及参考综合管理岗位
- 中国广电昌吉回族自治州2025秋招供应链采购类专业追问清单及参考回答
- 防城港市中石油2025秋招面试半结构化模拟题及答案安全环保与HSE岗
- 鞍山市中石油2025秋招面试半结构化模拟题及答案炼油工艺技术岗
- 西安市中石油2025秋招面试半结构化模拟题及答案油品分析质检岗
- 郴州市中储粮2025秋招笔试粮食政策与企业文化50题速记
- 2025广西崇左凭祥市委宣传部招聘编外工作人员1人考试参考题库及答案解析
- 2025江西赣州南康赣商村镇银行招聘4人考试参考题库及答案解析
- 社保协议书模板6篇
- 企业安全生产责任书范本大全
- 工艺设备变更风险评估报告模板
- 红星照耀中国考试真题及答案
- 国开(河北)2024年秋《现代产权法律制度专题》形考作业1-4答案
- 医院科研经费管理办法
- 2023年广州海洋地质调查局招聘社会在职人员高频考点题库(共500题含答案解析)模拟练习试卷
- 运用PDCA循环降低住院患者雾化吸入的不规范率品管圈成果汇报
- 感触最深的一件事七年级作文大全600字
评论
0/150
提交评论