hadoop体系架构
1.1 Hadoop
概念:hadoop是⼀个由Apache基⾦会所开发的分布式系统基础架构。是根据google发表的GFS(Google File System)论⽂产⽣过来的。
优点:
1. 它是⼀个能够对⼤量数据进⾏分布式处理的软件框架。以⼀种可靠、⾼效、可伸缩的⽅式进⾏数据处理。
2. ⾼可靠性,因为它假设计算元素和存储会失败,因此它维护多个⼯作数据副本,确保能够针对失败的节点重新分布处理。
3. ⾼效性,因为它以并⾏的⽅式⼯作,通过并⾏处理加快处理速度。
4. 可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务,因此它的成本⽐较低,任何⼈都可以使⽤。
Hadoop是⼀个能够让⽤户轻松架构和使⽤的分布式计算平台。⽤户可以轻松地在Hadoop上开发和运⾏处理海量数据的应⽤程序。它主要有以下⼏个优点:
1.⾼可靠性。Hadoop按位存储和处理数据的能⼒值得⼈们信赖。
2.⾼扩展性。Hadoop是在可⽤的计算机集簇间分配数据并完成计算任务的,这些集簇可以⽅便地扩展到数以千计的节点中。
3.⾼效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度⾮常快。
4.⾼容错性。Hadoop能够⾃动保存数据的多个副本,并且能够⾃动将失败的任务重新分配。
5.低成本。与⼀体机、商⽤数据仓库以及QlikView、Yonghong Z-Suite等数据集市相⽐,hadoop是开源的,项⽬的软件成本因此会⼤⼤降低。
Hadoop组成:主要由两部分组成,⼀个是HDFS,⼀个是MapReduce。
1)什么是HDFS(分布式⽂件系统)?
HDFS 即 Hadoop Distributed File System。⾸先他是⼀个开源系统,同时他是⼀个能够⾯向⼤规模数据使⽤的,可进⾏扩展的⽂件存储与传递系统。是⼀种允许⽂件通过⽹络在多台主机上分享的⽂件系统,可让多机器上的多⽤户分享⽂件和存储空间。让实际上是通过⽹络来访问⽂件的动作,由程序与⽤户看来,就像是访问本地的磁盘⼀般。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作⽽不会有数据损失。
它分为两个部分:Name Node和Date Node,Name Node相当于⼀个领导,它管理集内的Data Node,当客户发送请求过来后,Name Node会根据情况指定存储到哪些 Data Node上,⽽其本⾝⾃⼰并不存储真实的数据。那Name Node怎么知道集内Data Node的信息
呢?Data Node发送⼼跳信息给Name Node。(⼀会详见原理图)
2) HDFS 设计基础与⽬标
HDFS是基于流数据模式访问和处理超⼤⽂件的需求⽽开发的,可以运⾏与廉价的商业服务器上。
特点:
1. 通过流式数据访问;
2. 程序采⽤“数据就近”原则分配节点执⾏;
3. 对⽂件采⽤⼀次性写多次读的逻辑设计--⽂件⼀经写⼊、关闭,就再也不能修改;
4. 数据以快形式分布式存储在集中不同的物理机中。
1.2HDFS体系结构
1)存储块
块(Block):操作系统中的⽂件块。⽂件是以块的形式存储在磁盘中,块的⼤⼩代表系统读、写可操作的最⼩⽂件⼤⼩。也就是说,⽂件系统每次只能操作磁盘块⼤⼩的整数倍数据。通常来说,⼀个⽂件系统块⼤⼩为⼏千字节,⽽磁盘块⼤⼩为512 字节。
HDFS中的块是⼀个抽象的概念,⽐操作系统中的块要⼤得多。在配置hadoop系统时会看到,它的默认⼤⼩是128MB。HDFS使⽤抽象的块的好处:可以存储任意⼤的⽂件⽽⼜不会受到⽹络中任⼀单个节点磁盘⼤⼩的限制;
使⽤抽象块作为操作的单元可以简化存储⼦系统。
2) 模块任务
1. Name node功能:
1) 承担master 管理集中的执⾏调度;
2) 管理⽂件系统的命名空间,维护整个⽂件系统⽬录树以及这些⽂件的索引⽬录;
3) 不永久保存⽂件快信息,在系统启动时重加块信息;
4) 命名空间镜像(namespace)和编辑⽇志(Edit log)
2. Data node 功能:承担worker具体任务的执⾏节点
3)集管理
HDFS采⽤Master/Slave架构对⽂件系统进⾏管理。⼀个HDFS集是由⼀个Name Node和⼀定数⽬的Data Node组成的。Name Node是⼀个中⼼服务器,负责管理⽂件系统的命名空间(Namespace)以及客户端对⽂件的访问。集的Date Node⼀般是由⼀个节点运⾏⼀
个Data Node进程,负责管理它所在节点上的存储。
从内部看,⼀个⽂件其实被分成了⼀个或多个数据块,这些块存储在⼀组Data Node上。Name Node执⾏⽂件系统的名字空间操作,⽐如打开,关闭,重命名⽂件或⽬录。它负责确定数据块到具体Data Node节点的映射。Data Node 负责处理⽂件系统客户端的读/写请求。
在Name Node的统⼀调度下进⾏数据块的创建,删除和复制。
4)读取策略
1)副本存放和读取策略
副本的存放是HDFS可靠性和性能的关键,优化的副本存放策略也正是HDFS区分于其他⼤部分分布式⽂件系统的重要特征。HDFS采⽤⼀种称为机架感知(rack-aware)的策略来改进数据的可靠性,可⽤性
和⽹络带宽的利⽤率上。在读取数据时,为了减少整体带宽消耗和降低整体的带宽延时,HDFS会尽量让读取程序读取离客户端最近的副本。
2)安全模式
Name Node启动后会进⼊⼀个称为安全模式的状态。处于安全模式的Name Node不会进⾏数据块的复制。Name Node从所有的Data Node 接收⼼跳信号和块状态报告。
3)⽂件安全
Hadoop采⽤了两种⽅法来确保⽂件安全。第⼀种⽅法:将Name Node中的元数据转储到远程的NFS⽂件系统上;第⼆种⽅法:系统中同步运⾏⼀个Secondary Name Node。
这个节点的主要作⽤是周期性的合并⽇志中的命名空间镜像,以避免编辑⽇志过⼤。
HDFS安全模式有三种:
1. hdfs dfsadmin -safemode enter--进⼊安全模式
2. hdfs dfsadmin -safemode leave --离开安全模式
3. start-balancer.sh--负载均衡模式
注意:hdfs版本不同,命名有区别
5)基础架构
6)⼯作原理
7)实例架构
8)HDFS读操作
1. 客户端(client)⽤File System的open()函数打开⽂件。
2. Distributed File System(DFS)⽤RPC调⽤元数据节点,得到⽂件的数据块信息。对于每⼀个数据
块,元数据节点返回保存数据块的数据节点的地址。
3. Distributed File System返回DFS Data Input Stream给客户端,⽤来读取数据。
4. 客户端调⽤stream的read()函数开始读取数据。DFS Input Stream连接保存此⽂件第⼀个数据块的最近的数据节点。
5. Data从数据节点读到客户端(client)。当此数据块读取完毕时,DFS Input Stream关闭和此数据节点的连接,然后连接此⽂件下⼀个数据块的最近的数据节点。
6. 当客户端读取完毕数据的时候,调⽤FS Data Input Stream的 close函数。在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下⼀个数据节点。失败的数据节点将被记录,以后不再连接。
1)HDFS写操作
1. 客户端调⽤create()来创建⽂件。
hadoop分布式集搭建2. Distributed File System⽤RPC调⽤元数据节点,在⽂件系统的命名空间中创建⼀个新的⽂件。元数据节点⾸先确定⽂件原来不存在,并且客户端有创建⽂件的权限,然后创建新⽂件。
3. Distributed File System返回DFS Output Stream,客户端⽤于写数据。
4. 客户端开始写⼊数据,DFS Output Stream将数据分成块,写⼊data queue。
Data queue由Data Streamer读取,并通知元数据节点分配数据节点,⽤来存储数据块(每块默认复制3块)。分配的数据节点放在⼀个pipeline⾥。Data Streamer将数据块写⼊pipeline中的第⼀个数据节点。第⼀个数据节点将据块发送给第⼆个数据节点。第⼆个数据节点将数据发送给第三个数据节点。
5. DFS Output Stream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写⼊成功。
⼗、 HDFS SHELL命令
/docs/r2.7.2/hadoop-project-dist/hadoopcommon/FileSystemShell.html
/docs/r2.6.2/hadoop-project-dist/hadoopcommon/FileSystemShell.html
1.1.1Map Reduce(分布式计算模型)
1)什么事MapReduce?
Map Reduce理解为,把⼀堆杂乱⽆章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Ma
p⾯对的是杂乱⽆章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过Map Reduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进⼀步的处理以便得到结果
MAP(映射)-->Reduce(简化)
代码分区:mapper区、Reduce区、Driver区
2)MapReduce特点
1) 为海量数据提供计算;
2) 屏蔽了分布式计算框架细节,抽象成map和reduce;
3) map-对数据集上的独⽴元素进⾏制定操作,⽣成键值对应形式的中间结果;
4) reduce-对中间结果中的相同“键”的所有“值”进⾏规约,以得到最终结果.
3)MapReduce主要功数据
MapReduce主要功数据划分和计算任务调度:
系统⾃动将⼀个作业(Job)待处理的⼤数据划分为很多个数据块,每个数据块对应于⼀个计算任务(Task),并⾃动调度计算节点来
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论