MapReduce&HDFS简介
一、Hadoop简介:
结构化数据:表,关系型数据库//有严格的约束
半结构化数据:html,json,yaml,有元数据// 有约束,缺少严格的约束
非结构化数据:没有预定义的模型,元数据 //日志数据等
我还是要推荐下我自己创建的大数据资料分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习大数据资料和入门教程。
搜索引擎:搜索组件、索引组件
网络爬虫:爬到的内容多为半结构化或者非结构化数据
构建倒排索引[基于精确搜索或模糊搜索基于相关度匹配]存储到存储系统[非RDBMS]中。
2003年:The Google File System//google如何实现文件存储,不支持对数据进行随机和实时访问,仅适用于存储少量的体积巨大的文件。
假如爬到html页面发生了改变,需要修改。则goole fs无法满足该需求
2004年:MapReduce: simplified Data Precessing On Large Cluster//MapReduce编程模型,一个任务分布在各个节点上运行,后收集结果
2006年:BigTable: A Distributed Storage System for Structure Data //存储结构化数据的分布式存储
GFS->山寨后HDFS:
MapReduce->MapReduce:
BigTable->HBase:
HDFS + MapReduce = Hadoop //作者儿子的一个玩具
HBase:hadoop 的database
Nutch:一个网络爬虫程序,为Lucene爬取数据
Hadoop的一个缺陷:MapReduce是批处理程序,
HDFS采用的是有中心节点的存储格式
client
|
元数据节点
|
===========================
node1 node2 node3 node n
1 1‘ 2 2’
数据查询过程:client->元数据节点[数据分布在哪些节点上]-->[node 1,2,3,,n]-->client 用户查询[写代码]-->先调用MapReduce的开发框架-->交由该框架运行
Map:该代码需要分别运行在node1和node2上,各节点分别处理自己所用的那一部分
//node1拥有1,node2拥有2
Reduce:最后要把node1和node2上的运行结果进行合并
最终速度:取决于速度最慢的 node
MapReduce:
1.开发API
2.运行框架
3.提供运行时环境
NAS和SAN的缺点:存储系统只有1个,面对海量数据,需要进行数据存取,磁盘IO和网络IO将面临极大挑战
因此出现了分布式存储
二、HDFS和MapReduce
1.无中心节点
2.有中心节点HDFS //元数据节点是瓶颈和核心所在。//GFS,HDFS,
元数据节点:NN: name node //HA,内存数据持久化。他的数据都是存储在内存中的
//事务日志,写入到持久存储后,宕机后,重新加载,减少丢失的数据。
后端主机要保证:服务可用+数据可用 //DN:data node
在宕机后回可能需要文件系统检测,数据量过大时,需要浪费大量时间。
//简单的说:一旦NN崩溃,再次启动需要半个小时,因为hadoop 1.X NN不支持HA
SNN:second namenode后期提供,
NN需要在内存中不断更新数据,写入日志,日志和映像文件合并等
SNN:负责合并数据,假如NN崩溃SNN加载共享存储的文件,自己工作。