数据太大?你该了解Hadoop分布式文件系统
大数据时代来了。当所有人都争吵着这件事情的时候,当所有企业都看好 大数据 的发展前景的时候,却都很少关注这些数据从哪儿来,我们有没有足够优秀的技术能力处理这些数据。
联网设备增加 数据量随之上升
网络的发展无疑为我们迎接大数据时代、智能计算时代铺好了路。根据研究公司的预测,全球联网设备正在增加,在部分国家,人均联网设备早已超过2台;如此大量的联网设备和不断提高的网络速度都在让社会的数据量快速增长,智慧城市、平安城市的实现也是以视频监控等视频数据为基础,成为大数据时代的重要组成部分。
机器人、AI、机器学习的研究让数据成为未来辅助我们生活的必要因素,无人车、机器人快递等形式的出现, 一方面体现了数据价值,另一方面也是在不断收集数据,反哺 数据分析 和应用。
数据体量太大 谁来处理?
数据产生后,意味着数据的采集工作已经完成,那么数据的输入与有效输出问题怎么破解?
自大数据时代到来之后,分布式存储、大文件的读写都成为热点话题,如何应对越来越多的大文件存储、分析与检索,成为企业需要攻克的难题。
而Hadoop的原型要从2002年开始说起。Hadoop的雏形始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。而后根据谷歌发表的学术沦为谷歌文件系统(GFS),实现了分布式文件存储系统名为NDFS。而后又根据Google发表的一篇技术学术论文MapReduce,在Nutch搜索引擎实现了用于大规模数据集(大于1TB)的并行分析运算。最后,雅虎雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)就此形成。
应该说Hadoop是针对大数据而存在的,HDFS能够提供高吞吐量的数据访问,适合有着超大规模数据集的应用程序。我们可以在Hadoop的设计中看到三大特点:适用于存储超大文件、适合运行在普通廉价的服务器上,同时,最搞笑的访问模式是一次写入、多次读取。
当然,HDFS也存在一些弊端,比如说不适用于有低延迟要求的应用场景。因为Hadoop是针对大数据传输的存在,是为高数据吞吐量应用而设计,这导致其必然要以高延迟作为代价。同时HDFS分布式存储不适用于小文件传输,在大量小文件传输过程中,namenode的内存就吃不消了。
Hadoop概念科普
在了解了Hadoop的身世和现在适合的应用场景之后,笔者要跟大家科普一下Hadoop的基础架构和主要概念。
NameNode:namenode负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系。这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了,需要启动备用主机运行NameNode。
DataNode:负责存储,当然大部分容错机制都是在datanode上实现的。分布在廉价的计算机上,用于存储Block块文件。
MapReduce:通俗说MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。
Block:也叫作数据块,默认大小为64MB。每一个block会在多个datanode上存储多份副本,默认是3份。
Rack:机柜,一个block的三个副本通常会保存到两个或者两个以上的机柜中。
作者丨鲁畅
责任编辑:陈卓阳