计划搭建一套自己的数据集群平台,顺便整理下hadoop的知识,做个总结,全当是笔记
一、hadoop简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构, 是存储系统及计算框架的软件框架, 主要解决海量数据存储与计算的问题,用于大数据技术中。
二、hadoop作用
1、海量数据存储
- HDFS有高容错性的特点,并且可以用来部署在低廉的(low-cost)硬件上;
- 提供高吞吐量(High throughput)来访问数据,适合那些有着超大数据集应用
由n台运行着DataNode的机器组成和1台运行NameNode进程一起构成。每个DataNode 管理一部分数据,然后NameNode负责管理整个HDFS 集群的信息(存储元数据)。
2、资源管理,调度和分配
- YARN是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,
- 为上层应用提供统 一的资源管理和调度,极大提高了集群在利用率、资源统一管理和数据共享等方面益处。
三、hadoop结构
1、HDFS存储
- HDFS是Hadoop核心项目的子项目,是分布式计算中数据存储管理的基础,具有高容错性、可扩展性,适合大数据量处理和流式批处理,可运行于廉价的服务器上。
- HDFS架构采用master/slave架构,一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。
hdfs结构图,查询多篇结构图,比较中意的一张,感谢躁动的青年博主
NameNode:
一个中心服务器,是这个集群的管理者,负责管理HDFS的命名空间(NameSpace)、
配置副本策略和数据块(Block)映射信息,同时也会处理客户端读写请求。
DataNode:
执行NameNode下达命令,DataNode执行实际的操作。
集群中的DataNode负责管理所在节点上的存储,实际的数据块和执行数据块的读/写操作。
Client:
命令来管理及访问HDFS,与NameNode交互,获取文件的位置信息,
与DataNode交互,读取或者写入数据,将文件切分成一个一个的Block,然后进行存储。
Secondary NameNode:
并非NameNode的热备。当NameNode挂掉的时候,
它并不能马上替换NameNode并提供服务只是辅助NameNode,分担其工作量。
定期合并fsimage和fsedits,并推送给NameNode。在紧急情况下,可辅助恢复NameNode
*HDFS中的数据块Block是逻辑概念,默认块为64MB,block是HDFS分布式文件系统中的文件存储的逻辑单元
2、MapReduce计算
- Hadoop MapReduce是google MapReduce 克隆版。
- MapReduce是一种计算模型,用以进行大数据量的计算。
- Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。
- Reduce对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。
MapReduce框架
由每个集群节点的一个单一主控JobTracker和一个从属TaskTracker构成。
主控JobTracker
负责资源管理,跟踪资源消耗/可用性,调度从属TaskTracker上的作业组件任务,监控这些任务,并重新运行失败任务。
从属TaskTracker
按照主控JobTracker的指示执行任务,并定期向主控JobTracker提供任务状态信息。
3、YARN管理
YARN 主要包含三大模块:
- Resource Manager(RM):负责所有资源的监控、分配和管理
- Node Manager(NM): 负责每一个节点的维护
- Application Master(AM):负责每一个具体应用程序的调度和协调;
RM 拥有绝对的控制权和对资源的分配权。 AM 则会和 RM 协商资源,同时和 NM通信来执行和监控 task。
四、hadoop安装
tar.gz是已经编译好的了,解压改改配置文件就能用;而src.tar.gz是源码,要编译才能用