一、背景介绍
进入2012年,大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。它已经上过《纽约时报》《华尔街日报》的专栏封面,进入美国白宫官网的新闻,现身在国内一些互联网主题的讲座沙龙中,甚至被嗅觉灵敏的国金证券、国泰君安、银河证券等写进了投资推荐报告。
数据正在迅速膨胀并变大,它决定着企业的未来发展,虽然很多企业可能并没有意识到数据爆炸性增长带来问题的隐患,但是随着时间的推移,人们将越来越多的意识到数据对企业的重要性。
正如《纽约时报》2012年2月的一篇专栏中所称,“大数据”时代已经降临,在商业、经济及其他领域中,决策将日益基于数据和分析而作出,而并非基于经验和直觉。
哈佛大学社会学教授加里·金说:“这是一场革命,庞大的数据资源使得各个领域开始了量化进程,无论学术界、商界还是政府,所有领域都将开始这种进程。
现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结构化和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。在现今的社会,大数据的应用越来越彰显他的优势,它占领的领域也越来越大,电子商务、O2O、物流配送等,各种利用大数据进行发展的领域正在协助企业不断地发展新业务,创新运营模式。有了大数据这个概念,对于消费者行为的判断,产品销售量的预测,精确的营销范围以及存货的补给已经得到全面的改善与优化。“大数据”在互联网行业指的是这样一种现象:互联网公司在日常运营中生成、累积的用户网络行为数据。这些数据的规模是如此庞大,以至于不能用G或T来衡量。
大数据到底有多大?一组名为“互联网上一天”的数据告诉我们,一天之中,互联网产生的全部内容可以刻满1.68亿张DVD;发出的邮件有2940亿封之多(相当于美国两年的纸质信件数量);发出的社区帖子达200万个(相当于《时代》杂志770年的文字量);卖出的手机为37.8万台,高于全球每天出生的婴儿数量37.1万……
截止到2012年,数据量已经从TB(1024GB=1TB)级别跃升到PB(1024TB=1PB)、EB(1024PB=1EB)乃至ZB(1024EB=1ZB)级别。国际数据公司(IDC)的研究结果表明,2008年全球产生的数据量为0.49ZB,2009年的数据量为0.8ZB,2010年增长为1.2ZB,2011年的数量更是高达1.82ZB,相当于全球每人产生200GB以上的数据。而到2012年为止,人类生产的所有印刷材料的数据量是200PB,全人类历史上说过的所有话的数据量大约是5EB。IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的。而到了2020年,全世界所产生的数据规模将达到今天的44倍。每一天,全世界会上传超过5亿张图片,每分钟就有20小时时长的视频被分享。然而,即使是人们每天创造的全部信息——包括语音通话、电子邮件和信息在内的各种通信,以及上传的全部图片、视频与音乐,其信息量也无法匹及每一天所创造出的关于人们自身的数字信息量。
这样的趋势会持续下去。我们现在还处于所谓“物联网”的最初级阶段,而随着技术成熟,我们的设备、交通工具和迅速发展的“可穿戴”科技将能互相连接与沟通。科技的进步已经使创造、捕捉和管理信息的成本降至2005年的六分之一,而从2005年起,用在硬件、软件、人才及服务之上的商业投资也增长了整整50%,达到了4000亿美元。
二、Hadoop是什么?
Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.
Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海量数据的存储,MapReduce提供了对数据的计算.
HDFS:Hadoop Distributed File System,Hadoop的分布式文件系统.大文件被分成默认64M一块的数据块分布存储在集群机器中.
MapReduce:Hadoop为每一个input split创建一个task调用Map计算,在此task中依次处理此split中的一个个记录(record),map会将结果以key--value的形式输出,hadoop负责按key值将map的输出整理后作为Reduce的输入,Reduce Task的输出为整个job的输出,保存在HDFS上.
Hadoop的集群主要由 NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker组成.
NameNode中记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点.
NameNode同时保存了文件系统运行的状态信息.
DataNode中存储的是被拆分的blocks.
Secondary NameNode帮助NameNode收集文件系统运行的状态信息.
JobTracker当有任务提交到Hadoop集群的时候负责Job的运行,负责调度多个TaskTracker.
TaskTracker负责某一个map或者reduce任务.
1.hdfs分布式文件系统
hdfs的优点
- 高容错性