Hadoop学习笔记一
Hadoop学习笔记一
Hadoop介绍
Hadoop是一个海量数据的分布式处理框架,主要解决三个方面的问题:
1、海量数据的存储(HDFS),将海量数据切片成块,分散存储到整个计算机集群中去。对于存储过程中部分计算机出现数据丢失的问题,HDFS的解决方案是:将海量数据进行分块,每个块有3个或以上副本,存储到3个或以上台机器,当某台电脑故障导致数据丢失时,可以从存储该分块副本的其他计算机读取。通过该方法,不仅可以防止数据丢失,同时可以提高并发读写数据的性能。在进行读和写时,会先访问NameNode,将文件的抽象路径映射为具体某台机器存放的位置;
2、海量数据的分析(MapReduce),将数据处理分成两个过程Map和Reduce,Map负责对本地局部数据处理,多台机器并发进行;Reduce通过网络将其他机器map产生的结果取过来,再通过Reduce进行汇总生成最后结果;
3、资源管理调度(YARN),为节点分配jar包、分配资源容器、分配其他资源。
解决存储海量数据问题
hadoop是通过HDFS来解决海量数据存储的,HDFS对数据存储原理如下
- 在HDFS中,有三类节点,DataNode、NameNode、SecondaryNmaeNode,其中DataNode节点有多个主要用于存储分片数据,NameNode一般只有一个,用于将文件路径映射为分片存储的具体信息,SecondaryNameNode用于辅助NameNode,将fsimage和edit中的数据合并并替换原来的fsimage。
- 当客户端要存储数据时,客户端要先访问NameNode节点,NameNode返回要分配的n个DataNode的信息,然后客户端将数据分片,一般默认为128M为一片,然后分配到NameNode返回的DataNode存储,同时为了防止只存一份数据副本导致数据丢失的问题,分片数据在存储时会生成n个副本存储在不同机器,从而防止数据丢失和提高分片数据读写的并发性。
解决数据处理问题
hadoop是通过MapReduce来解决海量数据存储的,HDFS对数据存储原理如下
- 传统数据处理存在的问题:1、效率低,有多台计算机时,同一时刻却只有一台计算机运算。2、传输延迟,由于数据过大,数据没办法一次性读入内存操作,需要分成许多次读取后才能最终计算出结果。
- hadoop:把运算分配到各个节点并发进行,由map负责各节点计算逻辑,并将结果通过网络传给reduce,reduce将各节点结果汇总生成最终结果。当需要分组统计时,reduce也可有多个,进行分组并发。提高了计算的并发度和缩小了传输延迟。