这段时间简单的学习了一下hadoop平台,初步有了一个认识,但是时间看的不多,觉得认识还很浅显,主要看了下MapReduce和HDFS。在这里总结一下。
一、概要认识
hadoop是有个用于开发并行计算和分布式存储系统的平台。可以用普通的pc机来组成集群,用来部署分布式应用。主要包括两部分,MapReduce和HDFS。
二、MapReduce
我的理解是,MapReduce是用来并行计算的,进行大规模的数据处理,通过MapReduce这个模型来处理分布着在各个节点上的数据,来达到并行处理的目的。
现实生活的待处理问题可以通过这个模型来处理。MapReduce主要分为两个阶段,一是Map阶段,二是Reduce阶段。
设计时主要是map和reduce函数,其中
map函数,顾名思义,是一个数据的映射,就是将一组key/value对映射到另一组key/value对,进行一个初步的处理,从而得到一个中间数据。当然这个处理是根据实际情况,程序的需求来做出合适的映射。例如hadoop权威指南中的例子就是将输入的一行行温度信息,映射出“年份/温度”这样一个键值对。
而reduce函数,reduce其实是化简的意思,是将有map阶段的输出做化简,将具有相同键key的values合并,做更进一步处理,比如书上找出了相同key的values的最大值,其实也可求出平均数,根据实际需要去处理。
这里提到的key-value其实是概念上的,具体到实际,要看你的设计。MapReduce编程模型当然需要一个文件系统来支持,hadoop中HSFS充当了这个角色。
三、HDFS
HDFS是一个分布式的文件系统,HDFS适合很大数据量的应用,数据读写比较高效。HDFS采用master/slave的结构。一般来说,master上运行一个
Namenode节点,而slave上运行一个datanode节点。在master上运行一个Namenode,在一个slave上运行一个Datanode。
Namenode很重要,可以控制文件的增删改查。
四、心得
有了一个非常基本的认识,了解了一个大概的原理,但具体的细节不太清楚,一些接口函数可能还不太熟,另外脑子中还没有一个比较清楚的实际模型。可能要通过实践来
进一步掌握。