一:hadoop框架
1.核心:hdfs(提供存储)和mapreduce(提供计算)
2.hadoop框架:包括Hadoop内核,mapreduct,hdfs,hadoop YARN等。
3.Hadoop是一个生态系统,里面有很多组件,hdfs,mapreduct,NoSQL(非关系型数据库)数据库HBase,
数据仓库Hive。Pig工作流语言。机器学习算法库Mahout。Zookeeper(分布式协作服务),内存计算框架spark,数据采集Flume,Kafka
二:HDFS(分布式文件系统)
1.采用块复制的概念,让数据在集群的节点间进行复制,有一个默认的复制因子,默认是3。
2.采用机架位感知的方法,将数据拷贝到不同的机架服务器上。还采用有erasure code(一种编码存储技术,这种方法本类用于通信容错领域)
3.HDFS是一个主从结构,HDFS集群,有一个名字节点,多个数据节点组成,通常配置在不同的机器上。
4.HDFS将一个文件分割成一个或多个块,每个块被存储在一组数据节点中,名字节点用来操作文件命名空间的文件或者目录操作。能确定块与数据节点的映射。
5.数据节点,负责来自文件系统客户的读写请求,执行块的创建删除和来自名字节点的块复制指令。
6.名字节点和数据节点都是运行在单独的普通机器上。一般都用Linux系统。
7.集群中还会配置secondary namenode ,这个secondary namenode 下载namenode的image文件和editlogs,并对他们做本地归并。最后将归并玩的image文件发回给namenode。两者不是备份关系,namenode出故障了他将不能工作。
三:Mapreduce
是一种编程模型。
1.将批量处理的任务分成两个阶段,map和reduce
map:把数据生成“键-值对”,按键排序。
中间的一步骤(shuffle):把同样的可以运输到同一个reducer,在reducer上,因为都是同一个key,可以直接聚合(求和),最后将结果输出到hdfs上。对于开发者,就是编写Map和reduce函数。中间的排序,shuffle网络传输,容错处理,框架已经完成。