hadoop
Hadoop是一个分布式计算和存储框架,为庞大的计算机集群提供可靠、可伸缩的应用层计算和存储支持。Hadoop允许使用简单的编程模型跨计算集群集分布式处理大型数据集,并且支持在单台计算机到就千台计算机之间进行扩展。
hadoop基于Java开发,可以在多种不同硬件平台的计算机上部署和使用,其核心部分包括分布式文件系统(HDFS)和MapReduce。
HDFS:负责分布式存储数据,MapReduce负责对数据进行映射、规约处理,并汇总处理结果。
Hadoop 框架最根本的原理就是利用大量的计算机同时运算来加快大量数据的处理速度。
HDFS
HDFS:分布式文件系统。
HDFS用于在集群中储存文件,高效且稳定。
HDFS是通过计算机集群独立处理请求而实现高效存储的。因为用户 (一半是后端程序) 在发出数据存储请求时,往往响应服务器正在处理其他请求,这是导致服务效率缓慢的主要原因。但如果响应服务器直接分配一个数据服务器给用户,然后用户直接与数据服务器交互,效率会快很多。
HDFS利用多存几份来实现数据存储的稳定性。HDFS的存储单位是块,一个文件可能被分为多个块存储在物理存储器中。因此HDFS往往会按要求将数据块复制n份并存储在不同的数据节点,当一个数据节点发生故障时数据也不会丢失。
HDFS的节点:HDFS 运行在许多不同的计算机上,有的计算机专门用于存储数据,有的计算机专门用于指挥其它计算机储存数据。这里所提到的"计算机"我们可以称之为集群中的节点。
命令节点(NameNode):命令节点是用于指挥其它节点存储的节点。任何一个"文件系统"(File System, FS) 都需要具备根据文件路径映射到文件的功能,命名节点就是用于储存这些映射信息并提供映射服务的计算机,在整个 HDFS 系统中扮演"管理员"的角色,因此一个 HDFS 集群中只有一个命名节点。
数据节点 (DataNode):数据节点 使用来储存数据块的节点。当一个文件被命名节点承认并分块之后将会被储存到被分配的数据节点中去。数据节点具有储存数据、读写数据的功能,其中存储的数据块比较类似于硬盘中的"扇区"概念,是 HDFS 存储的基本单位。
副命名节点 (Secondary NameNode):副命名节点 别名"次命名节点",是命名节点的"秘书"。它并不能代替命名节点的工作,无论命名节点是否有能力继续工作。它主要负责分摊命名节点的压力、备份命名节点的状态并执行一些管理工作,如果命名节点要求它这样做的话。如果命名节点坏掉了,它也可以提供备份数据以恢复命名节点。副命名节点可以有多个。
MapReduce
Map:映射 和 Reduce:规约。
大数据处理:由于大量的数据使用传统方法处理时会导致硬件资源 (主要是内存) 不足,大数据处理实施复杂。
MapReduce利用分而治之的策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理。
MapReduce体系结构:
MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task。
Client:用户编写的MapReduce程序通过Client提交到JobTracker端 用户可通过Client提供的一些接口查看作业运行状态
JobTracker:JobTracker负责资源监控和作业调度 JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点 JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源。
TaskTracker:会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等) TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。
Task:Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动
MapReduce工作流程:
注:不同的Map任务之间不会进行通信;不同的Reduce任务之间也不会发生任何信息交换;用户不能显式地从一台机器向另一台机器发送消息;所有的数据交换都是通过MapReduce框架自身去实现的。
Hadoop模式
Hadoop有三种模式:单机模式、伪集群模式和集群模式。
单机模式:Hadoop 仅作为库存在,可以在单计算机上执行 MapReduce 任务,仅用于开发者搭建学习和试验环境。
伪集群模式:此模式 Hadoop 将以守护进程的形式在单机运行,一般用于开发者搭建学习和试验环境。
集群模式:此模式是 Hadoop 的生产环境模式,也就是说这才是 Hadoop 真正使用的模式,用于提供生产级服务。