(一) Hadoop之HDFS
来源:互联网 发布:vue.js 后端交互 编辑:程序博客网 时间:2024/04/29 22:07
Hadoop是Google的集群系统的开源实现
-- Google集群系统:GFS(Google File System),MapReduce,BigTable
-- Hadoop主要由HDFS(Hadoop Distributed File System Hadoop分布式文件系统) MapReduce和HBase组成
-- Hadoop的初衷是为了解决Nutch的海量数据爬取和存储需要
-- Hadoop与2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会
适用范围
-- 数据仓库和离线数据分析MPP Hadoop/HBase
-- 大规模在线实时应用(单行事务处理能满足的场景)(HBase)
NameNode(NN)
-- NameNode主要功能:接受客户端的读写服务
-- NameNode保存metadate信息包括
* 文件ownership和permission
* 文件包含哪些块
* Block保存在哪个DataNode(由DataNode启动时上报)
-- NameNode的metadate信息在启动后会加载到内存
* metadata存储到磁盘文件名为fsimage
* Block的位置信息不会保存到fsimage,会保存到内存中
* edits记录对metadata的操作日志
SecondaryNameNode(SNN)
-- 他不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间
-- SNN执行合并的时机
* 根据配置文件设计的时间间隔fs.checkpoint.period 默认3600秒
* 根据配置文件eidits log大小fs.checkpoint.size规定edits文件的最大值默认是64MB
* 合并流程
DataNode(DN)
-- 存储数据
-- 启动DN线程的时候会向NN汇报block信息
-- 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10 分钟没有收到DN的心跳,则认为是lost,
并copy其上的block到其它的DN
Block的副本放置策略
-- 第一个副本:放置在上传文件的DN如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
-- 第二个副本:放置在与第一个副本不同的机架上的及节点
-- 第三个副本:放置在同第二个副本相同机架上的节点
HDFS读流程
-- 文字描述
HDFS Client 通过DistributeFileSystem的open方法去访问NameNode,NameNode通过getBlockLocations
获取得到文件的位置信息。当HDFS Client获取得到block存在于哪一台服务器上的时候,就通过FSDataInputStream
从DataNode上读取block的数据,最后读完数据,FSDataInputStream会close,关闭IO流。
HDFS写流程
-- 文字描述
HDFS Client通过DsitributeFileSystem的create方法去告诉NameNode,该文件名是什么,文件大小是多少,拥有者
是谁。NameNode会根据文件的大小来计算,应该切多少个block。然后,NameNode就会将这些数据信息返回。
接着,HDFS Client就会调用FSDataOutuputStream的weite方法在其中的一个DataNode上写入一个block,然后,DataNode
会根据block的存放的策略,开启一个线程在其他的一个DataNode复制,完成写的操作之后,就会执行流的关闭。
最后DistributedFileSystem会调用complete函数,告诉NamaNode已经完成工作。
HDFS文件权限
-- 与Linux文件权限类似
r--read; w--write;x--execute,权限对于文件忽略,对于文件夹表示是否允许访问其内容。
-- 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。
-- HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。
说白了,就是不做密码的认证。
安全模式
-- 当Hadoop处于安全模式的时候,是不能对文件进行操作的,包括读取数据也是不行的。只能够查看目录。 上传文件也不行。
-- 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)
和一个空的编辑日志
-- 此刻NameNode运行在安全模式,即namenode的文件系统对于客服务器端来说是只读的。
(显示目录,显示文件内容等。写,删除,重命名都会失败)。
-- 在此阶段NameNode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是安全的,在一定的比例的数据块
被确定为安全后,再过若干时间,安全模式结束。
-- 当检测到副本数不足的数据块时,该快会被复制知道达到最小副本数,系统中数据块的位置并不是nanenode维护的,
而是以块列表形式存储在datanade中。
-- Google集群系统:GFS(Google File System),MapReduce,BigTable
-- Hadoop主要由HDFS(Hadoop Distributed File System Hadoop分布式文件系统) MapReduce和HBase组成
-- Hadoop的初衷是为了解决Nutch的海量数据爬取和存储需要
-- Hadoop与2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会
适用范围
-- 数据仓库和离线数据分析MPP Hadoop/HBase
-- 大规模在线实时应用(单行事务处理能满足的场景)(HBase)
NameNode(NN)
-- NameNode主要功能:接受客户端的读写服务
-- NameNode保存metadate信息包括
* 文件ownership和permission
* 文件包含哪些块
* Block保存在哪个DataNode(由DataNode启动时上报)
-- NameNode的metadate信息在启动后会加载到内存
* metadata存储到磁盘文件名为fsimage
* Block的位置信息不会保存到fsimage,会保存到内存中
* edits记录对metadata的操作日志
SecondaryNameNode(SNN)
-- 他不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间
-- SNN执行合并的时机
* 根据配置文件设计的时间间隔fs.checkpoint.period 默认3600秒
* 根据配置文件eidits log大小fs.checkpoint.size规定edits文件的最大值默认是64MB
* 合并流程
DataNode(DN)
-- 存储数据
-- 启动DN线程的时候会向NN汇报block信息
-- 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10 分钟没有收到DN的心跳,则认为是lost,
并copy其上的block到其它的DN
Block的副本放置策略
-- 第一个副本:放置在上传文件的DN如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
-- 第二个副本:放置在与第一个副本不同的机架上的及节点
-- 第三个副本:放置在同第二个副本相同机架上的节点
HDFS读流程
-- 文字描述
HDFS Client 通过DistributeFileSystem的open方法去访问NameNode,NameNode通过getBlockLocations
获取得到文件的位置信息。当HDFS Client获取得到block存在于哪一台服务器上的时候,就通过FSDataInputStream
从DataNode上读取block的数据,最后读完数据,FSDataInputStream会close,关闭IO流。
HDFS写流程
-- 文字描述
HDFS Client通过DsitributeFileSystem的create方法去告诉NameNode,该文件名是什么,文件大小是多少,拥有者
是谁。NameNode会根据文件的大小来计算,应该切多少个block。然后,NameNode就会将这些数据信息返回。
接着,HDFS Client就会调用FSDataOutuputStream的weite方法在其中的一个DataNode上写入一个block,然后,DataNode
会根据block的存放的策略,开启一个线程在其他的一个DataNode复制,完成写的操作之后,就会执行流的关闭。
最后DistributedFileSystem会调用complete函数,告诉NamaNode已经完成工作。
HDFS文件权限
-- 与Linux文件权限类似
r--read; w--write;x--execute,权限对于文件忽略,对于文件夹表示是否允许访问其内容。
-- 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。
-- HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁。
说白了,就是不做密码的认证。
安全模式
-- 当Hadoop处于安全模式的时候,是不能对文件进行操作的,包括读取数据也是不行的。只能够查看目录。 上传文件也不行。
-- 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)
和一个空的编辑日志
-- 此刻NameNode运行在安全模式,即namenode的文件系统对于客服务器端来说是只读的。
(显示目录,显示文件内容等。写,删除,重命名都会失败)。
-- 在此阶段NameNode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是安全的,在一定的比例的数据块
被确定为安全后,再过若干时间,安全模式结束。
-- 当检测到副本数不足的数据块时,该快会被复制知道达到最小副本数,系统中数据块的位置并不是nanenode维护的,
而是以块列表形式存储在datanade中。
-- 一般启动Hadoop或者重启Hadoop的时候就会进入安全模式。不建议强行退出Hadoop的安全模式。
0 0
- (一) Hadoop之HDFS
- Hadoop之HDFS(一)
- Hadoop之关键技术(一)----HDFS
- Hadoop学习之HDFS架构(一)
- Hadoop学习之HDFS架构(一)
- 【Hadoop源码学习】之hdfs(一)
- 浅析hadoop(一)之HDFS
- Hadoop之HDFS初步认识(一)
- hadoop入门(一)之HDFS
- Hadoop实践(一)---Hadoop核心组件之HDFS
- Hadoop hdfs 介绍 一
- Hadoop实战【一、HDFS】
- Hadoop(一)-HDFS
- hadoop-hdfs简介(一)
- hadoop 之HDFS
- Hadoop之HDFS(1)
- Hadoop学习之HDFS
- hadoop之HDFS介绍
- Strassen矩阵乘法
- WWW-AJAX
- struct2破绽及升级
- Android:res之selector背景选择器
- Implement strStr()
- (一) Hadoop之HDFS
- c++ Handle类的理解
- HDU 1242 【搜索+记忆化。。?】
- uva 1589
- 由单例模式探讨JVM的内存管理机制
- Android:布局实例之常见用户设置界面
- 泊松分布和幂律分布 转
- Git 常用命令整理
- getevent/sendevent 使用说明