大数据框架按照功能划分
海量数据存储
HDFS、Hive(本质还是HDFS)、HBASE(底层依旧是HDFS)
海量数据分析
MapReduce、Spark 、Hive(SQL)
Hadoop起源
Google的3篇论文
GFS -> HDFS 文件系统,用来存储数据的
2003年,Google发布Google File System论文,这是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,提供容错功能。从根本上说:文件被分割成很多块,使用冗余的方式储存于商用机器集群上。
Mapreduce -> Mapreduce ,用于分析数据
紧随其后的就是2004年公布的 MapReduce论文,论文描述了大数据的分布式计算方式,主要思想是将任务分解然后在多台处理能力较弱的计算节点中同时处理,然后将结果合并从而完成大数据处理。
传说中,Google使用它计算他们的搜索索引。而Mikio L. Braun认为其工作模式应该是:Google把所有抓取的页面都放置于他们的集群上,然后每天使用MapReduce来重算。
bigTable ->Hbase 表,数据库,用来存储数据的
Bigtable发布于2006年,启发了无数的NoSQL数据库,比如:Cassandra、HBase等等。Cassandra架构中有一半是模仿Bigtable,包括了数据模型、SSTables以及提前写日志(另一半是模仿Amazon的Dynamo数据库,使用点对点集群模式)
Hadoop最原始的功能
数据存储:HDFS
数据分析:mapReduce
hadoop介绍 ----是Apache的顶级项目
hadoop包含的模块
Hadoop Common: The common utilities that support the other Hadoop modules.
公共的工具,为其他模块提供支撑的
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
HDFS是一个分布式文件系统,提供高吞吐量数据存储
Hadoop YARN: A framework for job scheduling and cluster resource management.
是一框架,任务调度和集群资源管理
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
大数据集合的并行计算
HDFS:存储数据
将数据划分为很多个块,默认一个块block(128MB),一个500M文件4块,每一个块存储3份
存储3份的好处,为了安全(空间换安全性)。
主节点:namenode
1:决定数据存储在那个DataNode
2:管理元数据(那个机器存储了什么数据,索引)
3:管理所有从节点
从节点:datanode
存储数据,管理数据(管理当前机器)
MapReduce:并行计算的框架
分而治之的思想:
将海量的数据划分为 多个部分,每部分单独进行处理,最后将所有处理的结果进行合并
Map:MapTask
单独处理每一部分的数据
按照OOP(面向对象)思想,就是一个方法(map),在里面处理实际业务逻辑能力
Reduce:ReduceTask
合并MapTask输出的结果数据
按照OOP思想,就是一个方法(reduce),在里面处理实际业务逻辑能力
YARN:分布式集群资源管理和任务调度框架
管理各个机器的资源(cpu和内存),并且合理调度分配资源给各个程序使用(MapReduce程序的运行)
主节点:resourcemanager
1:管理子节点功能
2:相应客户端请求
3:任务调度:
从节点:nodemanager
管理当前机器的资源
分布式
以下是百度百科关于分布式计算的介绍:
分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式网络存储技术是将数据分散地存储于多台独立的机器设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务器的瓶颈问题,还提高了系统的可靠性、可用性和扩展性。
百度百科的介绍会把想要了解分布式思想的人吓到,其实可以这样简单的理解
就是把一个大的复杂的任务,分成不同的小的模块,分任务的那个人,就是一个公司的老大,专业术语称为主节点
大任务分成的很多小的模块,需要很多人去完成,这些人就是小弟,被老大分配去完成工作,专业术语称为从节点
这样就可以简单的理解分布式这个概念
谈到分布式,还会有个概念需要理解,集群
一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。
就是很多人共同去完成一个任务。
集群和分布式的区别:
分布式一定是集群
集群不一定是分布式。