赞
踩
1.如何存储?2.如何计算?
解决方案
1970年 | 传统方案 |
2003年 | Google的解决方案 |
2005年 | Hadoop框架下的解决方案 |
传统方法中,企业用一台性能较好的计算机或服务器来存储及处理“大”数据。
2003年,GFS(Google File System)是分布式文件系统,
2004年,MapReduce是分布式计算框架,
2006年,BigTable是基于Google File System的数据存储系统,
这三大组件组成了Google的分布式计算模型。
2.1 GFS
GFS架构
a. Master节点管理所有的文件系统元数据,有名字空间、能访问控制信息、文件和块的映射信息 以及当前块的位置信息
b. GFS 存储的文件都被分割成固定大小的块,每个块都会复制到多个块服务器上(可靠性)。
默认使用3份。
c. Master还管理着系统范围内的活动,比如块服务器之间的数据迁移等。
d. Master 与每个块服务器通讯(发送心跳包),发送指令,获取状态。
2.2 MapReduce
将大任务分割成n个小任务,得到每个小任务的计算结果后汇总,得到最终结果。
2.3 BigTable(大表)
一个结构化数据的分布式存储系统
HBase是一个分布式的、面向列的开源数据库,HBase在Hadoop之上提供了类似于Bigtable的能力。
思想: 把所有的数据存入一张表
通过牺牲空间,来换取时间
违背关系型数据库范式的要求
问题: 引起数据的冗余
优点: 提高性能 面向列
Hadoop根据是Google三篇论文实现
HDFS → GFS
MapReduce →MapReduce
HBase → BigTable
2.MapReduce
和Google一样
3.Hbase
Hbase是一个分布式的、面向列的开源数据库。在Hadoop之上提供了类似于Bigtable的能力。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且以一种可靠、高效、可伸缩的方式进行处理的。具有以下几个特征:
适用场所:大数据分析、离线分析
不适合场所:少量数据、在线分析
解析:
- 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。
- 存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大),一台机器慢慢跑也许需要好几天甚至好几周。对于很多公司来说,单机处理是不可忍受的,比如微博要更新24小时热博,它必须在24小时之内跑完这些处理。那么我如果要用很多台机器处理,我就面临了如何分配工作,如果一台机器挂了如何重新启动相应的任务,机器之间如何互相通信交换数据以完成复杂的计算等等。这就是MapReduce / Tez / Spark的功能。MapReduce是第一代计算引擎,Tez和Spark是第二代。MapReduce的设计,采用了很简化的计算模型,只有Map和Reduce两个计算过程(中间用Shuffle串联),用这个模型,已经可以处理大数据领域很大一部分问题了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。