这篇文章简单介绍了Hadoop相关的技术生态圈,同时共享一份前一阵编写的实践教程,需要者自取。
在云计算和大数据大行其道的今天,Hadoop及其相关技术起到了非常重要的作用,是这个时代不容忽视的一个技术平台。事实上,由于其开源、低成本和和前所未有的扩展性,Hadoop正成为新一代的数据处理平台。
Hadoop是基于Java语言构建的一套分布式数据处理框架,从其历史发展角度我们就可以看出,Hadoop一诞生,就具备高贵的血统,发展顺风顺水:
2004年,Google发表论文,向全世界介绍了MapReduce
2005年初,为了支持Nutch搜索引擎项目,Nutch的开发者基于Google发布的MapReduce报告,在Nutch上开发了一个可工作的MapReduce应用
2005年中,所有主要的Nutch算法被移植到MapReduce和NDFS(Nutch Distributed File System )环境来运行
2006年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展
2007年,百度开始使用Hadoop做离线处理,目前差不多80%的Hadoop集群用作日志处理
2008年,淘宝开始投入研究基于Hadoop的系统--云梯,并将其用于处理电子商务相关数据。云梯1的总容量大概为9.3PB,包含了1100台机器,每天处理约18000道作业,扫描500TB数据
2008年1月,Hadoop成为Apache顶级项目
2008年7月,Hadoop打破1TB数据排序基准测试记录。Yahoo的一个Hadoop集群用209秒完成1TB数据的排序,比上一年的纪录保持者保持的297秒快了将近90秒
......
很多人开始接触Hadoop时,都以为这是一个项目,其实Hadoop除了核心的MapReduce和HDFS之外,还包含了众多的子项目,换句话说,Hadoop已经形成了一个丰富的技术生态圈:
为什么会有这样的技术诞生呢?
简而言之,随着互联网的飞速发展,大量数据的存储和分析遇到瓶颈,磁盘容量的增长远远大于磁盘读取速度,1TB的磁盘,数据传输速度100MB/s,读一遍2.5H,写数据就别提了,心拔凉拔凉的(当然SSD在生产环境的实际应用,大大缓解了这一窘境)。数据量的增长在互联网应用中体现的非常明显,好的互联网应用动辄就有上千万的用户,无论是数据的容量、压力都与日俱增。另外在企业应用层面,很多大中型企业,信息化进行了十几年,企业内部积累了大量的非结构化数据,各种类型的文件需要存储、备份、分析、展示,苦于没有很好的办法进行数据处理。
那么如何解决这样的问题,技术牛娃自然有办法,比如磁盘数据的并行读写,数据分块,分布式文件系统,冗余数据,MapReduce算法等等,最后Hadoop等类似的技术应运而生。于是我等草民有福了。
不是有那么一句话么,大数据胜于好算法,如果数据足够多,可能产生出意想之外的应用,看看现在Facebook、Twitter、微博相关的衍生应用就知道了。另外,无论算法好坏,更多的数据总能带了来更好的推荐效果,这也是显而易见。
所以,无论云计算和大数据口号喊的多么虚头八脑,但Hadoop都是一门非常务实的技术,无论你身在互联网企业还是传统软件公司,都应该学习和了解这门技术。
下面是我前一阵内部技术交流写的一份Hadoop简介和实践的教程类KeyNote,希望能有点帮助。
多说一句,Hadoop的部署提供三种模式,本地模式、伪分布模式和全分布模式,建议大家采用第三种进行实践,这样对系统用法的理解更深入一些。这就需要你至少要两台机器进行集群,比较好的方式是使用虚拟机。Hadoop原生支持Unix/Linux,你要是想在Windows上玩,还需要装模拟环境cygwin。这时候就体现出Mac用户的优势了,我是采用Mac做Master,起两台虚拟Linux做Slave,SSD+8G内存,毫无压力。这样做的好处其实在Unix编程思想这部书中也提到过,就是用最小工作环境达到最大的工作范围。
推荐阅读:《Hadoop The Definitive Guide 2nd Edition》