1.Hadoop简介
- hadoop主流版本:
- Apache基金会所开发的分布式系统基础架构(hadoop);
- Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),企业化版本;
- Hortonworks版本(Hortonworks Data Platform,简称“HDP”),常用版本。
-
hadoop的框架最核心的设计是:
底层的分布式存储(HDFS)和分布式计算(MapReduce)
- HDFS为海量的数据提供了存储。
- MapReduce为海量的数据提供了计算。
-
Hadoop框架包括以下四个模块:
- Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
- Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。
- Hadoop Distributed File System (HDFS): 分布式文件系统,最底层的基础设施,提供对应用程序数据的高吞吐量访问。
- Hadoop MapReduce:用来做离线的,这是基于YARN的用于并行处理大数据集的系统。
-
hadoop应用场景: 在线旅游、移动数据、电子商务、能源开采与节能、基础架构管理、图像处理、诈骗检测、IT安全、医疗保健。
2.hdfs(分布式存储)
工作机制:
- 客户端创建任务,资源管理器把请求发往nn节点(namenode)
- nn进行任务分配(分配多少个block、复制几份),并将分配节点的地址回传给客户端
- 客户端(数据包的形式)从第一个block往数据节点上开始发送和存储,同时也会把这个数据列表发往datanode节点
- datanode节点把数据列表传递给其它的datanode
- hadoop能够自动感知哪些datanode位于同一机架中,这为数据最终的存储提供了一定的依据。(
三台:同一dn不同机身,同一机身不同dn
)
- HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。
- NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作
- DataNode管理存储的数据。
- HDFS存储机制保存了多个副本,使系统能够提供容错机制,某一副本丢失或宕机可自动恢复,保证系统高可用性。
- HDFS默认会将文件分割成block
- HDFS采用的是一次写入多次读取的文件访问模型。
- HDFS容错机制:
- 节点失败监测机制:DN每隔3秒向NN发送心跳信号,10分钟收不到,认为DN宕机。
- 通信故障监测机制:只要发送了数据,接收方就会返回确认码。
- 数据错误监测机制:在传输数据时,同时会发送总和校验码。
3.mapreduce
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
- "Map(映射)"和"Reduce(归约)"两个函数,即可实现分布式计算。
- 软件实现:指定一个Map(映射)函数,用来
把一组键值对映射成一组新的键值对
,指定并发的Reduce(归约)函数
,用来保证所有映射的键值对中的每一个共享相同的键组
MapReduce的执行过程
上述图示过程描述如下:
Map任务处理
-
读取HDFS中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数。
-
覆盖map(),把每一组键值对<k,v>映射成一组新的键值对<k,v>。
-
对上步输出的<k,v>进行分区(默认分为一个区),对不同分区中的数据进行排序(按照k)、分组(相同key的value放到一个集合中)
-
(可选)对分组后的数据进行归约(指定并发的Reduce(归约)函数)。
Reduce任务处理
- 多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点上。(shuffle)
- 对多个map的输出进行合并、排序。reduce函数,实现自己的业务逻辑,产生新的<k,v>输出(用来保证所有映射的键值对中的每一个共享相同的键组)。
- 对reduce输出的<k,v>写到HDFS中。