是适合大数据的分布式存储与计算平台,用java编写的开源系统,能够安排在大规模的计算机平台上,从而长进计算效率;由 HDFS、MapReduce、HBase、Hive 和 ZooKeeper等成员组成。其中,HDFS 和 MapReduce 是两个最基础最重要的成员。
受到Google三片论文的启发
-- MapReduce GFS Bigtable
google 和 hadoop对比:
Mapreduce Mapreduce(主要用来做数据分析,最大化利用CPU)
GFS HDFS(分布式文件系统,最大化利用磁盘)
Bigtable Hbase(Nosql数据库,Key-Value存储,最大化利用内存)
Hadoop核心项目:
HDFS: Hadoop Distributed File SystemHadoop分布式文件系统
MapReduce:并行计算框架
主节点只有一个:namenode从几点有多个: datanodes
1,接收用户操作请求;2,维护文件系统的目录结构;3,管理文件与block之间关系,block与datanode之间关系;
1,存储文件;2,文件备份成block存储在磁盘上;3,为保证数据安全,文件会有多个副本;
主节点只有一个 JobTracker从节点有多个 TaskTrackers
1,接收客户提交的计算机任务;2,把计算任务分给TaskTrackers执行;3,监控TaskTracker的执行情况;
执行JobTracker分配的计算任务;
1,扩容能力:存储和处理大数据;2,成本低:普通机器组成服务器集群;3,高效率:在节点并行处理数据;4,可靠性:自动维护副本,任务失败可以自动重新部署;
1,数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
2,是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。3,通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般。4,容错。即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失。5,分布式文件管理系统很多,hdfs只是其中一种。适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适。
如何看待这张图?
我们学过的servlet、filter、listener等。这是javaweb的基础,重要性不言而喻。但是,实际工作中很少写这些东西,都是使用上层框架,如struts2做开发。
上图中的4、5就类似于servlet等,周边的框架类似于struts2。工作中更多的使用框架,但是hadoop也必须清楚。
Google三篇论文中文版下载地址:http://www.kuaipan.cn/file/id_98175943000078006.htm?source=1