申明:
仅用于学习记录,参考资料在文末,若侵权,请联系我。
接下来我将从以下几个方面对Hadoop进行学习记录:
- 是什么?
- 如何使用?
- 与其他的区别?
- 是什么?
Hadoop就是存储海量数据和分析海量数据的工具。
Hadoop具有以下特点:
- Hadoop由java语言编写
- Hadoop通过在分布式集群上存储海量数据,并运行分布式应用的开源框架
- Hadoop主要由HDFS和MapReduce作为核心组件组成。其中HDFS用于存储数据,MapReduce用户计算数据
注意:
HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。其中:
NameNode通过心跳机制来检测DataNode是否还存在;
MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
- 解决了什么问题?
大数据存储:分布式存储
日志处理:擅长日志分析
机器学习: 比如Apache Mahout项目
搜索引擎:Hadoop + lucene实现
数据挖掘:目前比较流行的广告推荐,个性化广告推荐
简而言之,涉及到大数据的存储与分析可以考虑使用Hadoop。
---------------------------------------------------------------------------------------------------------------------------------
- 了解核心组件
- HDFS
- 是什么?
- NameNode[2]-管理者
- 管理HDFS的名称空间【命名空间(NameSpace):例如打开文件系统,关闭文件系统,重名名文件或者目录等】
- NameNode[2]-管理者
- 是什么?
- HDFS
- 负责确定指定的文件块到具体的DataNode节点的映射关系。这个是显示生活中的管理者分配工作流程一样,来活了了,首先给到管理者(NomeNode),NameNode根据一些列算法规则将新的任务分配给干活的,活很多啊,肯定得记录一下。
- 管理DataNode节点的状态报告,如DataNode的健康状况报告合其所在节点上数据块状态报告,以便能够及时处理失效数据节点
- SecondaryNode[3]-副手
- 主要用于帮助NameNode合并edits日志和fimage,当然也可以做数据备份。
- DataNode-实际的干活仔
- 存储数据
- HDFS读写?
文件按照数据块的方式存储在DataNode上,数据块是存储和传输单元,是抽象的,是属于文件的部分。文件块的大小不定。文件块大小的划分规则是什么?一般情况下,划分多大?
- HDFS读
问题:
3步骤中,DataNode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验),这里的放入流是什么流?
- HDFS写
问题:
在步骤5中,这里说的第一个第二个DataNode,是需要存储某一个block的节点?——是的,是针对于某一个block而言
- MapReduce
- 什么是MapReduce?
是一种编程模式,采用分而治之的思想。MapReduce主要由Map和Reduce两部分组成。
Map:就是每个文件分片由单独的机器去处理。——分
Reduce:将各个机器计算的结果汇总并得到最终的结果。——合
- MapReduce的工作流程是什么?
小结:
HDFS遵循主从结构
- NameNode的作用是主节点?
可以看做是主节点,主要接收客户端的读写服务,为了完成这一服务,延伸出许多其他的功能,比如:可以管理命名空间,负责指定文件块到DataNode之间的映射关系,DataNode的健康状态等等
- NameNode是HDFS运行的管理者,管理什么呢?
主要接收HDFS的客户端的读写服务,其他都是为了能满足这一主要的功能所能具备的能力。
- 如果NameNode挂了,会导致什么问题?怎么办?
如果NameNode挂了,会导致存储停止服务,无法为客户端提供数据读写服务,基于NameNode的计算等也无法完成。
Hadoop可以配置成高可用集群(HA[4]: High Availability),集群中有两个NameNode节点,一台Active主节点,另一台standby备用节点,两者数据保持一致。当主节点不可用时,备用节点马上自动切换,用户感知不到,避免了NameNode的单点问题。<若是在切换的过程中正好有数据,是不是可能出现数据丢失的情况出现???>
- SecondaryNameNode的作用是什么?
副手,辅助NameNode,分担NameNode的工作,可辅助回复NameNode。
- DataNode的作用?
干活人,DataNode是实际存放数据的节点,执行数据块的读写并汇报存储信息给NameNode。NameNode通过心跳机制检测DataNode是否存在。
- 数据的备份机制是什么样的?备份的个数与DataNode的个数有关吗?
后续问题:
- 如何使用?
- 同类型的工具有哪些?各自的优缺点是什么?
- 适合什么场景?
参考:
图解: HDFS-NameNode作用_大数据面试宝典的博客-CSDN博客_hdfs namenode的作用