随着大数据的来临,hadoop应用而生,
hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节 的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
hadoop的历史
始于2002年的apache项目Nutch
2003年Google发表了关于GFS的论文
2004年Nutch的开发者开发了NDFS
2004年Google发表了关于MapReduce的论文
2005年MapR被引入了NDFS
2006年改名为Hadoop,NDFS的创始人加入Yahoo,Yahoo成立了一个专门的小组发展
Hadoop
hadoop解决的问题
海量数据的存储 -- HDFS
海量数据的分析 -- MapReduce
Hadoop = The Hadoop projects
Common, Avro, MapReduce, HDFS, Pig, Hive, Hbase, ZooKeeper, Sqoop, Oozie
hadoop设计目
very large files 大文件 单个文件大小可以到几百G , 文件总的大小到T以及P级别
Streaming data access
write-once, read-many-times
一次写多次读取,无法对写入的文件进行修改,目
前可以添加。
Commodity hardware 普通的硬件。
hadoop不适合场景
Low-latency data access 低延迟
Lots of small files 小文件
Multiple writers, arbitrary file modifications 不支持多次写
HDFS架构
在Hadoop中,一个文件被划分成大小固定的多个文件块,分布的存储在集群中的节点中
同一个文件块在不同的节点中有多个副本。
一个集中的地方保存文件信息。
/home/hdfs/a.txt.part1,3,(dn1,dn2,dn3)
/home/hdfs/a.txt.part2,3,(dn2,dn3,dn6)
/home/hdfs/a.txt.part3,3,(dn7,dn8,dn11)
HDFS架构图
Hadoop
Block:一个文件分块,默认64M
NameNode:保存整个文件系统的目录信息,文件信息以及文件相应的分块信息。
DataNode:用于存储Blocks HDFS的HA策略:NameNode一旦宕机,整个文件系统将无法工作。如果NameNode中的数据丢失,整个文件系统也就丢失了。
2.x开始,HDFS支持NameNode的active-standy模式
MapReduce原理
问题:
求出以下数组当中最大的数
1,3,23,3,4,18,2,8,10,16,7,5
int Max(int a[], n)
{
int m=0;
for(int i=0; i<n; i++)
if(m<a[i]) m=a[i];
return m;
}
MapReduce是一种编程模型,用于大规模数据集的并行计算,用它来计算式非常快的。
通过这种方式就可以很快的遍历。