hadoop 大数据方案 基于hadoop的大数据_数据

 2 Hadoop的组成部分

hadoop 大数据方案 基于hadoop的大数据_big data_02

 2.1 Hadoop 的生态系统

hadoop 大数据方案 基于hadoop的大数据_大数据_03

Hadoop 整体设计

Hadoop 框架是用于计算机集群大数据处理的框架,所以它必须是一个可以部署在多台计算机上的软件。部署了 Hadoop 软件的主机之间通过套接字 (网络) 进行通讯。

Hadoop 主要包含 HDFS 和 MapReduce 两大组件,HDFS 负责分布储存数据,MapReduce 负责对数据进行映射、规约处理,并汇总处理结果。

Hadoop 框架最根本的原理就是利用大量的计算机同时运算来加快大量数据的处理速度。例如,一个搜索引擎公司要从上万亿条没有进行规约的数据中筛选和归纳热门词汇就需要组织大量的计算机组成集群来处理这些信息。如果使用传统数据库来处理这些信息的话,那将会花费很长的时间和很大的处理空间来处理数据,这个量级对于任何单计算机来说都变得难以实现,主要难度在于组织大量的硬件并高速地集成为一个计算机,即使成功实现也会产生昂贵的维护成本。

Hadoop 可以在多达几千台廉价的量产计算机上运行,并把它们组织为一个计算机集群。

一个 Hadoop 集群可以高效地储存数据、分配处理任务,这样会有很多好处。首先可以降低计算机的建造和维护成本,其次,一旦任何一个计算机出现了硬件故障,不会对整个计算机系统造成致命的影响,因为面向应用层开发的集群框架本身就必须假定计算机会出故障。

HDFS

Hadoop Distributed File System,Hadoop 分布式文件系统,简称 HDFS。

HDFS 用于在集群中储存文件,它所使用的核心思想是 Google 的 GFS 思想,可以存储很大的文件。

在服务器集群中,文件存储往往被要求高效而稳定,HDFS同时实现了这两个优点。

HDFS 高效的存储是通过计算机集群独立处理请求实现的。因为用户 (一半是后端程序) 在发出数据存储请求时,往往响应服务器正在处理其他请求,这是导致服务效率缓慢的主要原因。但如果响应服务器直接分配一个数据服务器给用户,然后用户直接与数据服务器交互,效率会快很多。

数据存储的稳定性往往通过"多存几份"的方式实现,HDFS 也使用了这种方式。HDFS 的存储单位是块 (Block) ,一个文件可能会被分为多个块储存在物理存储器中。因此 HDFS 往往会按照设定者的要求把数据块复制 n 份并存储在不同的数据节点 (储存数据的服务器) 上,如果一个数据节点发生故障数据也不会丢失。

HDFS 的节点

HDFS 运行在许多不同的计算机上,有的计算机专门用于存储数据,有的计算机专门用于指挥其它计算机储存数据。这里所提到的"计算机"我们可以称之为集群中的节点。

命名节点 (NameNode)

命名节点 (NameNode) 是用于指挥其它节点存储的节点。任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,命名节点就是用于储存这些映射信息并提供映射服务的计算机,在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点。

数据节点 (DataNode)

数据节点 (DataNode) 使用来储存数据块的节点。当一个文件被命名节点承认并分块之后将会被储存到被分配的数据节点中去。数据节点具有储存数据、读写数据的功能,其中存储的数据块比较类似于硬盘中的"扇区"概念,是 HDFS 存储的基本单位。

副命名节点 (Secondary NameNode)

副命名节点 (Secondary NameNode) 别名"次命名节点",是命名节点的"秘书"。这个形容很贴切,因为它并不能代替命名节点的工作,无论命名节点是否有能力继续工作。它主要负责分摊命名节点的压力、备份命名节点的状态并执行一些管理工作,如果命名节点要求它这样做的话。如果命名节点坏掉了,它也可以提供备份数据以恢复命名节点。副命名节点可以有多个。

hadoop 大数据方案 基于hadoop的大数据_linq_04

MapReduce

MapReduce 的含义就像它的名字一样浅显:Map 和 Reduce (映射和规约) 。

大数据处理

大量数据的处理是一个典型的"道理简单,实施复杂"的事情。之所以"实施复杂",主要是大量的数据使用传统方法处理时会导致硬件资源 (主要是内存) 不足。

现在有一段文字 (真实环境下这个字符串可能长达 1 PB 甚至更多) ,我们执行一个简单的"数字符"统计,即统计出这段文字中所有出现过的字符出现的数量:

hadoop 大数据方案 基于hadoop的大数据_大数据_05

 

hadoop 大数据方案 基于hadoop的大数据_big data_06

 

hadoop 大数据方案 基于hadoop的大数据_hadoop 大数据方案_07

 

hadoop 大数据方案 基于hadoop的大数据_hadoop 大数据方案_08

hadoop 大数据方案 基于hadoop的大数据_大数据_09

hadoop 大数据方案 基于hadoop的大数据_大数据_10

hadoop 大数据方案 基于hadoop的大数据_big data_11

 

hadoop 大数据方案 基于hadoop的大数据_数据_12

Client访问数据时:根据nameNode的返回的对应的数据块在那个对应的DataNode上,从而client和对应的dataNode直接进行通信。

 6.1 为了防止NameNode中内存中的数据的丢失用了两种方式存储数据

fsimage是内存数据的持久化文件(周期保存),edit存放的是对文件写操作记录下来

 6.2 nameNode负责管理客户端对数据(文件)的访问

6.3 DataNode 才是负责存放数据的节点,DataNode会按时向NameNode发送自己的信息(也是心跳机制)

       对文件的访问可以当做普通文件访问,不用去关心文件数据的BLOk存放的位置

hadoop 大数据方案 基于hadoop的大数据_linq_13

 6.3 开机启动HDFS的过程

 6.3.1 非第一次启动集群

statup progress

  1. Loading fsimages加载进内存(最近的images文件)
  2. 加载fsimages对应的edit log文件
  3. saveing checkpoint 满足检测点后,images和对应的eidt进行合并
  4. safe mode  保证DataNode健康正常

  

hadoop 大数据方案 基于hadoop的大数据_big data_14

6.4 SecondaryNameNode 的工作机制

辅助NameNode进行fsimage和editlog的合并工作,减少editlog文件的大小,以便缩短下次Namenode的重启的时间,尽快退出安全模式。

两个文件的合并周期,称为检查点机制,可以通过hdfs-default.xml文件配置。

hadoop 大数据方案 基于hadoop的大数据_大数据_15

hadoop 大数据方案 基于hadoop的大数据_big data_16

 7. yarn的概述

hadoop 大数据方案 基于hadoop的大数据_linq_17

 

hadoop 大数据方案 基于hadoop的大数据_大数据_18

 

hadoop 大数据方案 基于hadoop的大数据_数据_19

  yarn的工作原理

hadoop 大数据方案 基于hadoop的大数据_大数据_20

 

hadoop 大数据方案 基于hadoop的大数据_big data_21