Hadoop解决的二个问题:
1.海量数据的存储,HDFS
2.海量数据的分析,MapReduce
HDFS设计目标:
--适应场景
1.Very Large File(单个文件很大,或者文件总大小非常大)
2.Streaming data access
(write-once, read-many-times)
3.Commodity hardware(普通硬件上)
--不适应场景:
1.Low-latency data access(低延迟的数据)
2.Lots of small files
3.Multiple writers, arbitrary file modifications
HDFS架构:
a.txt(900GB)
在hadoop中,一个文件被划分成大小固定的多个文件块(默认64M),分布的存储在集群中节点中;
同一个文件块在不同的节点中有多个副本(防止节点失效)
一个集中的地方保存文件的分块信息(保存在namenode(单点)上)
Block:一个文件分块,默认64M
Namenode:保存整个文件系统的目录信息,文件信息以及文件相应的分块信息。
-namenode支持数据节点多时, 它是整个系统瓶颈;避免此问题,hadoop将namenode数据
保存在内存当中,还有将namenode数据持久化到磁盘当中;
Datanode:用于存储Blocks
HDFS的HA策略:Namenode一旦宕机,整个文件系统将无法工作,
如果Namenode中的数据丢失,整个文件系统也就丢失了,。
2.X开始,HDFS支持NameNode的active-standy模式,运行的过程中,
standy的数据时时刻刻与active的数据同步.
MapReduce原理:
问题:求出数组中最大的数(3, 34, 54 ,24, 432,432,322, 64,1)
传统解决办法:for循环迭代数组,找出最大的。
?:如果数组中有一百亿个一千亿个值,A.这样耗时很长,B.一台机器上能存储吗
MapReduce解决办法:
:把此此大数组分布存储到多台机器上,
A.首先做一个Map操作(计算出当前节点中最大的值)得以一个最大值;
B.每一节点都得出其节点上的最大值,
C.Reduce操作,把Map的结果再找出最大值
MapReduce就是把一个大问题分解成小问题,把每一个问题的结果计算出来再进行计算。
MapReduce是一种编程模型,用于大规模数据集的并行计算。
Hadop介绍
最新推荐文章于 2024-03-05 13:21:04 发布