Hadoop基础知识理解

Hadoop是基于大数据存储,分析的基础架构系统,用于一定文件数量的大文件的非结构化的数据。

主要涉及HDFSMapReduceHbase

核心在于分布式的的文件系统和分布式的运算架构

分布式文件系统的特点:多个节点、多个入口、很好的利用了本地的Ext3/4文件系统,可以容忍硬件的出错,大数据的级别(PB,EB级),单个文件一般在百MB级以上,文件数目适中,简单的一致性的模型(一次写入,多次读写的一个文件访问方式;支持文件的追加的操作,无法更改已经写入的数据;顺序的数据流的访问,HDFS适用于处理批量的数据,不适合用于随机定向的访问;侧重于高吞吐量的数据访问,可以容忍数据访问的高延迟性,一般几百毫秒级;为把”计算“移动到”数据“提供基础和便利)

 

HDFS的概念

 

第一,块的理解

1.一般文件系统是4096字节,4K;而HDFS默认为64M

2.块是全局的概念,并不是指所有文件都是同样的块的大小。

3.每个块都有一个自己的全局ID

4.每个块在集群上会默认会复制份数是3

5.某个块的所有备份都是同一个ID

6.根据机架的配置自动分配备份位置。

 

第二,元数据

1.元数据包含文件系统目录树的信息,文件和块的对应的关系,块的存放位置(机器名、块的ID)。

2.元数据存放在一台指定的服务器上 NameNode

3.元数据在NameNode 全部放在内存中,以便快速查询。大致1G的内存可存放1,000,000个块,按每块64M计算,大致对应64T实际的数据。

 

第三,DataNode

1.DataNode是真正存放数据,其中包含2个文件,1个为物理文件,1个为附加的信息。

2.通过心跳与NameNode通讯。

第四,HDFS的客户端

1.命令行的客户端   用的是同一个Hadoop安装包内

2.API客户端        JAVA库,非POSIX接口,通讯细节)

 

第五,MapReduce

1.定义为MapReduce两块,Map个人理解是个分解的过程,是把一个复杂的问题分解成各个子集的子问题,Reduce是指对子问题得出结果的汇总和分析。

举例1:一个餐厅要同时为好多人提供用餐,为了解决这个问题就摆了10个餐桌,当餐桌都坐满了客户时,每个餐桌都有个服务员给了个菜单,当10个菜单都汇总到后厨后,厨师长发现客户点的菜有些菜都是一样的,可以一起炒,或者可以这样理解把所有的餐单都分成冷餐、炒菜、汤,这样可以分给不同的人一起干来提高效率。

举例2:谷歌作为MapReduce技术的先行者,在搜索引擎中,对于搜索出来的网页是通过PageRank技术,该技术就利用了MapReduce,网页排序都是通过对搜索出来的网页在其他的网页出现的频率来排名,例如,在谷歌中输入”www.sina.com“关键字后,通过对很多的网络数据中提到的www.sina.com次数,来排名。

 

第六,一般对于小型的集群中可与NameNode同一台

1.MapReduce的核心叫做JobTracker

2.JobTracker会于NameNode进行通讯。

3.TaskTracker DataNode在一起,可发送心跳信息给JobTracker

4.通常CPU的核数减2TaskTrackerDataNode的进程)来配置任务的最大数量。

5.Map:Reduce数量大概是2:1

 

第七,shuffle技术、sort技术、combine技术

1.shuffle技术指在Reduce时怎样分配数据到那个机器上。

2.sort技术是指在Reduce前先对数据就行排序等操作。

3.combine技术是指对于Map端对值的预处理,如果整体是求和的可在此时,相同的KEY可以先加个一。

4.在中间层的数据都存在本地文件中,非HDFS存储。

 

第八,Hadoop集群的规划

1.前期做好机房的规划(如后期的网络扩容,带宽,搬迁集群非常费事)

2.注意业务层的影响

分析是偏向存储还是偏向于计算;输入的数据量是多少;输入的数据量是否保存;业务发展的预期;HDFS的容量;任务的执行时间;数据导入导出的时间。

3.硬件的选型应兼顾计算还是IO

偏计算的的话(机器学习,逻辑负责的文本解析)

IO(建立索引,排序,搜索,分组,解码)

第八,Hbase的理解

理解为KEY VALUESTORE