标签:hadoop学习笔记
hadoop是一种分布式系统的平台,通过它可以很轻松的搭建一个高效、高质量的分布系统,而且它还有许多其它的相关子项目,也就是对它的功能的极大扩充,包括Zookeeper,Hive,Hbase等。
MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。
首先是hdfs,也就是hadoop的存储系统,首先hdfs是挂载在集群多个节点上,由各个集群分摊而来的,如果想要访问hdfs,可以直接使用client提供的命令,如果需要和本地文件一样则需要首先挂载到hdfs上,hadoop的client提供这个功能,执行脚本safe_mount_vfs.sh即可在client上挂载vfs。当挂载完毕之后,可以像操作本地文件一样操作hdfs上的文件了。当然,还存在网速和机房的问题。
然后看看hadoop的任务的核心,mapreduce,其实就是两个阶段,map和reduce阶段。map阶段会由hadoop平台切分输入数据,具体的切分规则可以自行制定或者编程实现,切分之后输入将会是key-value的格式,这样的格式会由标准输入读入到map程序中,各个map程序处理完之后会先将结果shuffle,也就是一个排序,排序之后按照reduce的分桶规则分配到各个reduce阶段上归并。对于一个单机而已,过程就像一个管道,如同map|sort|reduce,而对于总体而言,map之后的输入由系统自动sort,减少了外排或者归并排序的烦恼,直接得到分桶好的key和value进行操作,比单机省事多了。
标签:hadoop学习笔记
原文地址:http://qinheng.blog.51cto.com/8764944/1541155