先快速说明一下:Hadoop并不是说明数据库,也不是程序库,甚至不是一个独立产品,实际上,Hadoop是一些独立模块的组合
包括一个分布式文件系统HDFS,一个分布式数据库HBase,一个大型分布式数据处理库MapReduce
打个比方:就好像是Microsoft Office,其实并没有一个叫做Office的应用,Office实际上是指Word, Excel等一系列的桌面应用的组合】
HDFS
Hadoop的所有模块是构筑在一个分布式文件系统之上,有一个很恰当的名字 - Hadoop分布式文件系统,HDFS的设计基于主从结构,主节点只有一个
负责记录和跟踪系统内的所有文件,这个主节点称为NameNode,只存储文件的元数据信息,不存储真正的文件数据,数据存储于从节点DataNode上,
文件再HDFS上以数据块block为单位来存储,每个数据库的大小一般为64M
NameNode管理HDFS的名字空间,控制对文件以及目录的访问,它将数据分散到各个DataNode上,并将相关的映射信息记录下来,DataNode则负责
存储数据,并满足客户端的读写请求
假设,需要再HDFS上存储一个133M的文件,按这个大小,会被分成三个数据块 64+64+3,NameNode将这三个块分散到DataNode上,并会将映射
信息记录下来,客户端如果要读这个文件,需要按照HDFS,然后从NameNode获取文件的信息,包括数据块bolck的编号和位置,随后用这些信息
从相应的DataNode直接下载这些快
MapReduce
MapReduce是一个用来编写处理并行分布式数据库程序的框架,同HDFS一样,它的架构也是基于主/从模式,主机是一个特殊的节点,负责协调多个工作
节点之间的活动,工作原理如下:
主机接受到要被处理的输入数据,输入的数据被分成更小的块,所有这些块被分布在多个工作节点上并行处理,这一步被称为映射,工作节点将处理后的结果
返回给主机,主机会负责聚合这些结果,并计算出最终的结果,这一步被称为化简
SSH 无密码验证的原理
Master做为客户端,要实现无密码公钥认证,连接到服务器Slave上时,需要再Master上生成一个密钥对,包括一个公钥和一个私钥,而后需要将公钥复制到
所有需要连接的Slave上,当Master通过SSH连接到Slave上时,Slave会生成一个随机数并用传递过来的Master的公钥对随机数进行加密,并发送给Master
当Master收到这个加密数之后会被自己的私钥进行解密,并将解密数回传给需要连接的Slave,Slave确认解密无误之后就会允许Master进行连接了,这就是一个
公钥的认证过程,期间不需要手动输入密码,重要的过程是将Master上产生的公钥复制到Slave上。
以上是无密码验证的原理,在做Hadoop各节点通信的时候,SSH的无密码验证登陆是很重要的,后续会专门介绍搭建过程的操作步骤