《(1.9)--3.HDFS与MapReduce1_Hadoop分布式文件系统H.pdf》由会员分享,可在线阅读,更多相关《(1.9)--3.HDFS与MapReduce1_Hadoop分布式文件系统H.pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大数据技术原理与应用大数据技术原理与应用第第3 3讲讲 HDFSHDFS与与MapReduceMapReduce(1 1)学习目标学习目标 了解分布式文件系统基本架构、了解分布式文件系统基本架构、HDFS用途、特性用途、特性 理解理解HDFS的架构和存储原理的架构和存储原理 掌握掌握常用常用 HDFS Shell命令命令 了解了解HDFS Java API 了解分布式数据库了解分布式数据库HBase 掌握掌握HBase数据模型、数据访问方法数据模型、数据访问方法 理解分布式计算框架理解分布式计算框架Hadoop MapReduce设计思想、体系结构设计思想、体系结构 掌握掌握MapReduce
2、编程模型编程模型教学内容教学内容 3.1Hadoop分布式文件系统分布式文件系统HDFS 3.2分布式数据库分布式数据库HBase 3.3分布式计算框架分布式计算框架MapReduce概述概述 3.4MapReduce编程编程3.1.1 分布式文件系统分布式文件系统 文件系统将文件组织成树结构的形式进行管理,通过抽象化自身管理的存储文件系统将文件组织成树结构的形式进行管理,通过抽象化自身管理的存储资源对外提供统一的访问接口,并对用户屏蔽具体的实现细节。文件系统按资源对外提供统一的访问接口,并对用户屏蔽具体的实现细节。文件系统按照底层数据存储结构和管理范围的不同的划分为本地文件系统(照底层数据存
3、储结构和管理范围的不同的划分为本地文件系统(Local File System)和分布式文件系统()和分布式文件系统(Distributed File System)。)。分布式文件系统指文件系统管理的物理存储资源通过计算机网络互分布式文件系统指文件系统管理的物理存储资源通过计算机网络互连连的服务的服务器集群,而不一定直接连接在本地节点上,服务器之间可以相互通信与协调器集群,而不一定直接连接在本地节点上,服务器之间可以相互通信与协调,从而构成一个可以共享存储空间的大规模系统。,从而构成一个可以共享存储空间的大规模系统。3.1 Hadoop分布式文件系统分布式文件系统HDFS3.1.1分布式文件
4、系统分布式文件系统 分布式文件系统一般都会采用M/S架构。分布式文件系统一般由控制服务器、存储服务器和客户端3个部分构成。存储服务器控制服务器同步信息同步信息调度管理信息调度管理信息数据传输与响应数据传输与响应任务请求与响应任务请求与响应控制服务器从节点 Hadoop分布式文件系统(分布式文件系统(Hadoop Distributed File System,HDFS)是)是Hadoop核心核心组件之一分布式文件系统。支持以流式数据访问模式来存取超大文件,活动在组件之一分布式文件系统。支持以流式数据访问模式来存取超大文件,活动在集群之上。集群之上。HDFS是是Apache软件基金会根据软件基金
5、会根据GFS的论文概念模型设计实现的开源分布式文件的论文概念模型设计实现的开源分布式文件系统,用于作为系统,用于作为Hadoop的存储系统。的存储系统。HDFS作为作为GFS的一个最重要的实现,与的一个最重要的实现,与GFS的设计目标高度一致。的设计目标高度一致。3.1.2 HDFSHDFS简介简介HDFS文件系统的特点:文件系统的特点:存储数据较大:运行在存储数据较大:运行在HDFS的应用程序有较大的数据处理要求,或存储从的应用程序有较大的数据处理要求,或存储从GB到到TB级的超大文件。级的超大文件。支持流式数据访问:支持流式数据访问:HDFS放宽了可移植操作系统接口(放宽了可移植操作系统接
6、口(POSIX)的要求,可以以流的形式访问文件)的要求,可以以流的形式访问文件系统中的数据。系统中的数据。支持多硬件平台:支持多硬件平台:Hadoop可以运行在廉价、异构的商用硬件集群上,并且在可以运行在廉价、异构的商用硬件集群上,并且在HDFS设计时充分考虑了设计时充分考虑了数据的可靠性、安全性及高可用性,以应对高发的节点故障问题。数据的可靠性、安全性及高可用性,以应对高发的节点故障问题。数据一致性高:应用程序采用“一次写入,多次读取”的数据访问策略,支持追加,不支持多次修数据一致性高:应用程序采用“一次写入,多次读取”的数据访问策略,支持追加,不支持多次修改,降低了造成数据不一致性的可能性
7、。改,降低了造成数据不一致性的可能性。有效预防硬件失效:通常,硬件异常比软件异常更加常见,对于具有上百台服务器的数据中心而言有效预防硬件失效:通常,硬件异常比软件异常更加常见,对于具有上百台服务器的数据中心而言,硬件异常是常态,硬件异常是常态,HDFS的设计要有效预防硬件异常,并具有自动恢复数据的能力。的设计要有效预防硬件异常,并具有自动恢复数据的能力。支持移动计算:计算与存储采取就近的原则,从而降低网络负载,减少网络拥塞。支持移动计算:计算与存储采取就近的原则,从而降低网络负载,减少网络拥塞。3.1.2 HDFSHDFS简介简介总体而言,总体而言,HDFS要实现以下目标:要实现以下目标:兼容
8、廉价的硬件设备;兼容廉价的硬件设备;流数据读写;流数据读写;大数据集;大数据集;简单的文件模型;简单的文件模型;强大的跨平台兼容性。强大的跨平台兼容性。HDFS特殊的设计,在实现上述优良特性的同时,也使得自身具有一些特殊的设计,在实现上述优良特性的同时,也使得自身具有一些应用局限性,主要包括以下几个方面:应用局限性,主要包括以下几个方面:不适合低延迟数据访问;不适合低延迟数据访问;无法高效存储大量小文件;无法高效存储大量小文件;不支持多用户写入及任意修改文件。不支持多用户写入及任意修改文件。3.1.2 HDFS3.1.2 HDFS简介简介3.1.3HDFS主从式架构主从式架构 HDFS采用了主
9、从(采用了主从(Master/Slave)结构模型,一个)结构模型,一个HDFS集群包括一个名称节点(集群包括一个名称节点(NameNode)和若干个)和若干个数据节点(数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上
10、是求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地保存在本地Linux文件系统中的。文件系统中的。HDFS分布式文件系统的存储设计是把海量数据部署在价格低廉的节点分布式文件系统的存储设计是把海量数据部署在价格低廉的节点上,通过这种方式可以解决高容错性(上,通过这种方式可以解决高容错性(fault-tolerant)。并且)。并且HDFS具有具有高吞吐量(高吞吐量(high throughput)来访问应用程序的数据。)来访问应用程序的数据。作为一个分布式文件系统,为了保证系统的容错性和可用性,作为一个分布式文件系统,为了保证系统的容错性和可用性
11、,HDFS采采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上分布到不同的数据节点上。3.1.4HDFS存储原理存储原理数据块数据块1被分别存放到数据节点被分别存放到数据节点A和和C上,数据块上,数据块2被存放在数据节点被存放在数据节点A和和B上。这种多上。这种多副本方式具有以下几个优点:副本方式具有以下几个优点:(1)加快数据传输速度)加快数据传输速度;(2)容易检查数据错误)容易检查数据错误;(3)保证数据可靠性)保证数据可靠性。3.1.4HDFS存储原理存储原理HDFS提供了两种类型的访问接
12、口:命令行接口Shell和程序访问接口java API。1.HDFS ShellHDFS提供了Shell命令来操作HDFS,这些Shell命令和对应的Linux Shell命令相似,这样设计有利于使用者快速学会操作HDFS。注意:在使用Shell命令操作HDFS之前,需要先启动Hadoop。3.1.5 HDFS 接口接口HDFS Shell命令的一般格式为:hdfs fs cmd 参数参数或者或者hadoop fs cmd 参数参数注:注:Hadoop中有三种Shell命令方式:hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统。hadoop dfs只能适用于HDF
13、S文件系统。hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统。3.1.5 HDFS 接口接口-ls 查看查看HDFS某一级目录下的所有内容的列表信息某一级目录下的所有内容的列表信息。cumaster#hadoop fs-ls/#查看查看HDFS分布式文件系统分布式文件系统根目录下的所有文件或文件夹列表信息根目录下的所有文件或文件夹列表信息或者或者cumaster#hadoop fs-ls hdfs:/master:9000/#查看查看HDFS分布式文件系统根目录下的所有文件或文件夹列表信息分布式文件系统根目录下的所有文件或文件夹列表信息3.1.5 HDFS 接
14、口接口-lsr查看查看HDFS目录的递归目录的递归。cumaster#hadoop fs-lsr/#以递归方式查看以递归方式查看HDFS分布式分布式文件系统根目录下的所有文件或文件夹列表信息文件系统根目录下的所有文件或文件夹列表信息或者或者cumaster#hadoop fs-lsr hdfs:/master:9000/#以递归方式查看以递归方式查看HDFS分布式文件系统根目录下的所有文件分布式文件系统根目录下的所有文件或文件夹列表信息或文件夹列表信息3.1.5 HDFS 接口接口-mkdir 创建目录创建目录cumaster#hadoop fs-mkdir/test#在在HDFS系统根目录下
15、创系统根目录下创建文件夹建文件夹test或者或者cumaster#hadoop fs-mkdir hdfs:/master:9000/test#在在HDFS系统根目录下创建文件夹系统根目录下创建文件夹test3.1.5 HDFS 接口接口-copyFromLocal 表示从本地上传文件到表示从本地上传文件到HDFS。cumaster#hadoop fs-copyFromLocal/home/cu/upload/upload#本地上传本地上传文件文件/home/cu/upload/upload中的内容到中的内容到HDFS根目录下的根目录下的upload目录下目录下或者或者cumaster#had
16、oop fs-copyFromLocal/home/cu/upload hdfs:/master:9000/upload#本地上传文件本地上传文件/home/cu/upload/upload中的内容到中的内容到HDFS根目录下的根目录下的upload目录下目录下3.1.5 HDFS 接口接口-get 表示从表示从HDFS下载文件到本地下载文件到本地。cumaster#hadoop fs-get/download/home/cu/download#从从HDFS根目录下的根目录下的download目录下载文件到本地目录下载文件到本地/home/cu/download中中或者或者cumaster#h
17、adoop fs-get hdfs:/master:9000/download/home/cu/download#从从HDFS根目录下的根目录下的download目录下载文目录下载文件到本地件到本地/home/cu/download中中3.1.5 HDFS 接口接口-copyToLocal copyToLocal 表示从表示从HDFSHDFS下载文件到本地下载文件到本地。cumaster#hadoop fs cumaster#hadoop fs-copyToLocal/download copyToLocal/download/home/cu/download/home/cu/download
18、#从从HDFSHDFS根目录下的根目录下的downloaddownload目录下载文件到目录下载文件到本地本地/home/cu/download/home/cu/download中中或者或者cumaster#hadoop fs cumaster#hadoop fs-copyToLocal copyToLocal hdfs:/master:9000/download/home/cu/download hdfs:/master:9000/download/home/cu/download#从从HDFSHDFS根目录下的根目录下的downloaddownload目录下载文件到本地目录下载文件到本地/
19、home/cu/download/home/cu/download中中3.1.5 HDFS 接口接口-cat 表示查看表示查看HDFS中文件内容中文件内容cumaster#hadoop fs-cat/download#查看查看HDFS根目录下根目录下的的download目录下文件内容目录下文件内容或者或者cumaster#hadoop fs-cat hdfs:/master:9000/download#查查看看HDFS根目录下的根目录下的download目录下文件内容目录下文件内容3.1.5 HDFS 接口接口-rm 表示删除表示删除HDFS中文件中文件cumaster#hadoop fs-r
20、m/download/test.txt#删除删除HDFS根根目录下的目录下的download目录下文件目录下文件test.txt或者或者cumaster#hadoop fs-rm hdfs:/master:9000/download/test.txt#删除删除HDFS根目录下的根目录下的download目录下文件目录下文件test.txt3.1.5 HDFS 接口接口-rmr 表示删除表示删除HDFS中文件中文件j夹及其中内容夹及其中内容。cumaster#hadoop fs-rmr/download#删除删除HDFS根目录下根目录下的的download目录及其中内容目录及其中内容或者或者cu
21、master#hadoop fs rmr hdfs:/master:9000/download#删删除除HDFS根目录下的根目录下的download目录及其中内容目录及其中内容3.1.5 HDFS 接口接口2.HDFS Java API Hadoop除了可以使用HDFS Shell命令操作HDFS外,还可以通过Java 程序操作HDFS。在实际工作中,大多数情况下是通过程序来操作HDFS的。Java程序通过Hadoop提供的文件操作类可以进行读写HDFS文件、上传HDFS文件等操作。这些文件操作类都在org.apache.hadoop.fs包中。API(Application Programm
22、ing Interface,应用程序编程接口)是指一些预先定义的函数。API使应用程序与开发人员获得了一种重要能力:在无须访问源码或理解内部工作机制细节的情况下,访问一组例程。3.1.5 HDFS 接口接口使用 Java API 操作 HDFS(1)配置环境Jkd安装和配置 jdk-8u271-linux-x64.tar.gzEclipse安装和配置下载:http:/www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR2/eclipse-jee-indigo-SR2-lin
23、ux-gtk-x86_64.tar.gz上传到/home/cu解压缩 tar zxvf eclipse-jee-indigo-SR2-linux-gtk-x86_64.tar.gz转到目录 cd/home/cu/eclipse启动./eclipse3.1.5 HDFS 接口接口(2)Java API读取数据读取数据FileSystem,FSDataInputStream)写入数据写入数据(FileSystem,FSDataOutputStream)创建目录创建目录(FileSystem的的mkdirs方法方法)查询文件系统查询文件系统(FileStatus)删除数据删除数据(FileSystem的的delete方法方法)3.1.5 HDFS 接口接口总结总结本次课程主要讲解了分布式文件系统、Hadoop分布式文件系统HDFS特性、HDFS主从式体系结构、HDFS的存储原理、HDFS提供的两种类型的访问接口:命令行接口Shell和程序访问接口java API。1.HDFS如何进行数据存储?如何进行数据存储?2.HDFS如何实现创建目录、上传与下载文件?如何实现创建目录、上传与下载文件?问题思考谢谢观看!