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