一、Hadoop的本质
数据的存储:HDFS(Hadoop Distributed File System),来源于GFS(Google File System)
数据的计算:分布式计算
数据的存储:HDFS(Hadoop Distributed File System),来源于GFS(Google File System)
数据的计算:分布式计算
二、分布式文件系统-HDFS(参考GFS)
解决传统式文件系统的问题:
硬盘不够大:文件保存在内存,分布于多个数据结点(DataNode),通过名称结点(NameNode)管理扩增
数据不安全: 一个文件被切分成多个数据块(1.x:64M,2.x:128M),保存多份(冗余),默认冗余度为3。数据的传输通过水平复制,客户端上传了文件后,文件从一个数据结点备份到其他数据结点。
解决传统式文件系统的问题:
硬盘不够大:文件保存在内存,分布于多个数据结点(DataNode),通过名称结点(NameNode)管理扩增
数据不安全: 一个文件被切分成多个数据块(1.x:64M,2.x:128M),保存多份(冗余),默认冗余度为3。数据的传输通过水平复制,客户端上传了文件后,文件从一个数据结点备份到其他数据结点。
三、分布式计算
MapReduce基本思想:把一个大任务拆分成多个小任务,再进行汇总。
1、Map的输入和Reduce的输出都在HDFS上。
2、Map的输出是Reduce的输入。
3、所有的输入、输出都是key-value的形式,总共四对:大任务的key1-value1、拆分成小任务的key2-value2、Reduce输入的key3-value3和Reduce输出的key4-value4。
4、key2-value2和key3-value3类型一致,value3是一个集合,集合中每个元素是value2。
5、所有的数据类型不是Java类型,必须是Hadoop的数据类型(都实现了Hadoop的序列化,作为Map-Reduce的输入、输出,Java的序列化:持久化、网络传输),如String->Text,int->IntWritable,long->LongWritable,null->NullWritable。
MapReduce基本思想:把一个大任务拆分成多个小任务,再进行汇总。
1、Map的输入和Reduce的输出都在HDFS上。
2、Map的输出是Reduce的输入。
3、所有的输入、输出都是key-value的形式,总共四对:大任务的key1-value1、拆分成小任务的key2-value2、Reduce输入的key3-value3和Reduce输出的key4-value4。
4、key2-value2和key3-value3类型一致,value3是一个集合,集合中每个元素是value2。
5、所有的数据类型不是Java类型,必须是Hadoop的数据类型(都实现了Hadoop的序列化,作为Map-Reduce的输入、输出,Java的序列化:持久化、网络传输),如String->Text,int->IntWritable,long->LongWritable,null->NullWritable。
四、环境搭建
本地模式:1台
伪分布模式:1台
全分布模式:3台(1个NameNode,2个DataNode)
本地模式:1台
伪分布模式:1台
全分布模式:3台(1个NameNode,2个DataNode)