学习Hadoop笔记(一)
从事软件开发将近四年,一直热衷于各种技术语言,但是感觉自己始终都不知道自己到底喜欢从事哪个方面的开发,毕业的前两年一直在大连做对日软件外包,做了两年后觉得真的没有什么意思,软件的设计都不是自己做的,只是需要按照需求进行程序的书写,所以和几个同事一直离职后来了北京,其实来到北京想的和现实还是不一样,最后我还是干了类似外包的项目,写这篇日记我心里一直很不确定自己喜欢什么样的技术喜欢什么样的语言,所以我这回准备开始写blog来记录自己的学习的点点滴滴,我心里优先喜欢的就是手机开发,好在现在的工作给我很多空闲的时间,让我有很大的空间学习,所以再这里给自己一个鼓励争取一周至少一篇关于自己学习的blog。我学习的方向现在分两个方向,最后来确定自己到底喜欢哪个,再为之努力奋斗。一个就是手机方向,一个就是Hadoop方向。我觉得未来中国的软件市场是非常大的,手机互联网这不用说现在还是很热,将来可能会慢慢趋于稳定,但总之这10几年应该还是很稳定的,我对未来的看法就是未来数据是王道,谁掌握了越多的数据谁就能掌握主动权,但掌握数据多没有用,得要合理分析所有的数据,才能把数据转化为相应的价值。所以另一个方向就是研究大数据,大数据的处理。今天这篇blog就来说说Hadoop的大数据处理心得笔记。我现在看的这本就是《Hadoop权威指南第二版中文版》。通过学习来一步一步成长,也算是自己的学习记录吧。
开始记录笔记:
Hadoop是apache里的一个开源的项目。核心是谷歌公司的对于大数据处理的框架,基于MapReduce软件设计模型。是大数据分布式系统的一个开源软件项目,对于处理大数据分析现在是比较主流的软件框架。
hadoop处理方式:数据输入->MapReduce的程序和配置->输出。
Map任务:数据的key,value生成。输出到本地磁盘,因为是中间结果,如果放在HDFS(分布式文件系统)未免小题大做。
Reduce任务:数据的解析,输出自己预期的结果。输出到HDFS,以实现可靠数据。
我的理解Reduce相当一个统领全局的人,它需要某种规则的数据就需要map来给它提供,map里可以通过分区提供给不同的Reduce去处理。当没有Reduce时,map就直接发送到HDFS上。
map和Reduce中可以有个合并函数进行过度,合并函数在map里运用可以减少对于map输出的数据量。有效减少map和Reduce之间的数据传输量。但对于合并函数还是视情况运用。比如求平均值等一些需要全数据的时候就不能使用。