Hadoop是用来干什么的呢?
处理海量数据:量的大, 多, PB --ZB
|------>存储: 分布式, 集群的概念, 管理(主节点, 从节点),
| HDFS (hadoop distributed Filesystem)
|------>分析: 分布式, 并行,离线并行的计算框架,管理(主,从节点)对应mapreduce
Hadoop的特点以及思想
扩容能力--->成本低---->高效率------>可靠性
HDFS + Mapreduce 思想
|------>尽可能移动计算到数据端,而非移动数据到计算端
|------>硬件和组件的故障是一种常态
HDFS 思想
|------>文件单次写入,并多次读取,文件副本分片保存
|------>顺序写入,流式顺序读取,面向大文件存储
Hadoop的分类还是比较清晰的,总体来说有hadoop1.x系列和hadoop2.x系列的内核:
Hadoop1.0|-->hadoop common
|-->Hadoop Distributed File System
|-->Hadoop MapReduce
Hadoop2.0|-->Hadoop Common
|-->Hadoop Distributed File System
|-->Hadoop MapReduce
|-->Hadoop Yarn
Hadoop2.x项目的四大模块
1、Hadoop Common
为了支持其他模块的一些公共类,和框架。
2、HDFS(Hadoop Distributed File System)
Hdfs提供高吞吐量的访问能力 , 用来存储数据。具有高容错性,高伸缩性的优点,允许用户将hadoop部署在廉价的硬件上,构建分布式系统。如下图是HDFS的存储图,Hdfs具有横向扩展性,布置单节点的hadoop时候,最小模型是一台master主机和两台slaver节点。如果要扩展datenode节点,只需要在准备好的虚拟机上面拷贝一份hadoop文件,然后导入master的公钥,最后修改一下配置文件(slaver文件,里面加入节点名字。在/etc/hosts文件里加入主机名和要求节点的ip)。
hdfs中节点:namenode NN
datenode DN
secondarynamenode SN
3、Hadoop Yarn 云的操作系统
给部署在yarn上的应用,分配资源,管理资源。(任务调度)job / application 调度。Yarn的架构图如下:(mapreduce跑在yarn系统上)。下边有更为详细的解析,这里只简单说明。
Yarn 中的node:
ResourceManager RM
NodeManager NM
4、Hadoop Mapreduce
上图是基于yarn系统的并行的处理大数据的框架,Mapreduce担当并行的计算分析任务。允许用户在不了解分布式系统底层细节的情况下开发并行,分布式的应用程序。Map和reduce,map是映射,reduce是规约。我用自己的理解方式说,Map就是一种映射计算,让我们知道数据块的位置属性等,Reduce就是一种各种数据块分别求和的方式。以wordcount为例,在map阶段,map函数在每个单词后面加上一个1, 在reduce阶段,reduce函数将相同单词后面的1都加起来。其中hadoop框架实现过程中的排序。
其分配如上图,也而已自定义函数来控制。
参考博客:http://blog.csdn.net/cloud_510/article/details/51224632