Google发布了三篇论文:
Doug cutting 花费了两年的业余时间实现了前两篇论文,并重新命名为HDFS和MapReduce
Doug cutting看到他儿子在牙牙学语时,抱着黄色小象,亲昵的叫 hadoop,他灵光一闪,就把这技术命名为 Hadoop,而且还用了黄色小象作为标示 Logo,不过,事实上的小象瘦瘦长长,不像 Logo 上呈现的那么圆胖。“我儿子现在 17 岁了,所以就把小象给我了,有活动时就带着小象出席,没活动时,小象就丢在家里放袜子的抽屉里。” Doug Cutting 大笑着说。
Hadoop由三大开源发行版本:Apache、Cloudera(CDH)、Hortonworks(HDP)。Apache版本是最原始的版本。Cloudera在大型互联网企业中用的较多。Hotronworks文档较好。
2018年10月,均为开源平台的Cloudera与Hortonworks公司宣布他们以52亿美元的价格合并。两大开源大数据平台Cloudera与Hortonworks宣布合并,合并后的企业定位为企业数据云提供商,推出了ClouderaDataPlatform(CDP),可以跨AWS、Azure、Google等主要公有云架构进行数据管理。2020年6月,Cloudera发布CDP私有云,将本地部署环境无缝连接至公有云。
Hadoop Common:基础型功能
Hadoop Distributed File System (HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。负责存放数据
Hadoop YARN:作业调度和集群资源管理的框架。负责资源的调配
Hadoop MapReduce:基于 YARN 的系统,用于并行处理大型数据集。大数据的计算框架
文件系统时极域硬盘之上的文件管理的工具
我们用户操作文件系统可以和硬盘进行解耦
分布式文件系统
将我们的数据存放在多台电脑上存储
分布式文件系统有很多,HDFS(Hadoop Distributed FileSyetem)是Hadoop自带的分布式文件系统
HDFS是mapreduce计算的基础
如果块设置太大
如果块设置过小
首先HDFS中平均寻址时间大概为10ms;
经过大量测试发现,寻址时间为传输时间的1%时,为最佳状态,所以最佳传输时间为:
10ms/0.01=1000s=1s
目前磁盘的传输速度普遍为100MB/s,最佳block大小计算:
100MB/s*1s=100MB
所以我们设置block大小为128MB
而在实际中,
磁盘传输速率为200MB/s时,一般设定block大小为256MB;
磁盘传输速率为400MB/s时,一般设定block大小为512MB。
只要有一个块丢失,整个数据文件损坏
HDFS中文件一旦被存储,数据不允许修改,修改会影响偏移量,但是可以被追加(不推荐)追加设置需要手动打开
HDFS是直接对原始数据进行备份,这样可以保证恢复效率和读取效率
备份的数据不能放到一个节点上,使用数据的时候可以就近获取
备份的数量要小于等于从节点的数量
每个数据块默认有三个副本,相同副本不会存放在同一个节点上
副本的数量可以变更
主节点
从节点
接收客户端的读写请求,因为namenode知道数据文件与datanode的对应关系
保存文件的时候会保存文件的元数据信息
收集block的位置信息
系统启动
集群运行中
将所有的操作放到内存中执行
存放的是文件的数据信息,以及验证文件完整性的校验信息
数据存放在磁盘上
启动时:向NN汇报当前DN上block的信息 运行时:时刻与NN保持心跳机制
当客户端读取数据的时候,首先会去NN查询File与Block与DN的映射,然后客户端直接与DN建立连接,然后读取数据
传统的持久化方式
日志方式
快照方式
SNN的解决方案
解决思路
解决方案
当我们启动一个集群的时候,会产生4个文件 …./name/current/
我们每次操作都会记录日志-->edits-inprogress- edits_00000001,随着时间的推移,日志文件会越来越大-当达到阈值的时候(64M或3600秒),会生成新的日志文件,edits_inprogress-000000001 -->edits_0000001,创建新的日志文件 edits_inprogress-0000000022。
安全模式是HDFS的一种工作状态,处于安全模式的状态下,只向客户端提供文件的只读视图,不接受对命名空间的修改,同时NameNode节点也不会进行数据块的复制或者删除。
NameNode启动时,首先将镜像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作,一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件和一个空的编辑日志。NameNode开始监听RPC和HTTP请求,此时NameNode处于安全模式,只接受客户端的读请求,目的是为了保护数据的安全。
a.启动 NameNode,NameNode 加载 fsimage 到内存,对内存数据执行 edits log 日 志中的事务操作。
b.文件系统元数据内存镜像加载完毕,进行 fsimage 和 edits log 日志的合并,并创 建新的 fsimage 文件和一个空的 edits log 日志文件。
c.NameNode 等待 DataNode 上传 block 列表信息,直到副本数满足最小副本条件。
d.当满足了最小副本条件,再过 30 秒,NameNode 就会退出安全模式。最小副本条件指 整个文件系统中有 99.9%的 block 达到了最小副本数(默认值是 1,可设置)
查看namenode是否处于安全模式
hdfs dfsadmin -safemode get
进入安全模式
hdfs dfsadmin -safemode enter
强制退出安全模式
hdfs dfsadmin -safemode leave
等待安全模式结束
hadoop dfsadmin -safemode wait
机架感知是为了保证副本在集群中的安全性,我们将block块的副本放在不同的节点上
第一个节点:
集群内部:
集群外部
第二个节点:选择与一个节点不同机架的其他节点
第三个节点:选择与第二个节点相同机架的不同节点
第N个节点:选择与前面节点不重复的其他节点。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章