HDFS设计思想

HDFS设计思想

DataNode:用来在磁盘上存储数据

HDFS  数据存储单元( block )

1 文件被切分成固定大小的数据block块 

•默认数据块大小为 64MB(hadoop1.x版本64M,2.x为128M) ,可配置 

•若文件大小不到 64MB  ,则单独存成一个block

  比如:一个120M的文件会分成64M+56M两个block块,虽然第二个分割不到64M,依然作为单独的block。

 

2 一个文件存储方式 

•上传时按文件大小被切分成若干个 block ,存储到不同节点上。每一个block都有唯一的编号。 

•默认情况下每个 block 都有三个副本,存储到三个不同的节点上,这三个副本是同级的,比如第一次访问和第二次访问可能因为副本所在节点的资源空闲而被访问,因此副本和备份作用不同。比如某个文件被分成了三个block,block1+block2+block3,而对于每个block都有三个副本,如三个block1副本分别存储server1、server2、server3三个节点上。如果集群中DataNode节点数量不够三个,存储就会报错。也就是DataNode节点的数量不小于block数量。

 

 

Block 大小和副本数通过 Client 端上传文件时设置,文件已经上传服务器成功后,文件block的副本数可以变更,比如文件被append追加修改(因为文件修改仅仅支持追加)生成新的block。Block Size 不可变更,所以虽然block数量增加了,但是block数据块64M大小依然不变。 

 

NameNode:保存metadate元数据,接受客户端读写。

1 NameNode保存metadata元数据,包括:

•   文件 owership(属组和属主)和 permissions(权限)

• 文件包含哪些block块及这些block块ID 

• Block 保存在哪个DataNode (由 DataNode 启动时上报),即block块的位置信息。

 

 

2  metadate 元数据会在启动时从磁盘加载到内存

也就是说启动后,内存和磁盘中都有一份metadata元数据信息。

•   metadata 存储到磁盘文件名为”fsimage” ,在NameNode启动时加载到内存,

而DataNode启动时会上报block的位置信息给NameNode,然后NameNode把block的位置信息保存到内存中。也就是说磁盘上的fsimage文件中此时就少了block的位置信息了。

•  Block 的位置信息不会保存到fsimage

•  edits 记录对 metadata 的操作日志

那么,metadata元数据的操作日志是什么情况下产生的呢?

答:比如上传新文件时,元数据进行内存操作之后记录edits日志,记录了元数据信息。

那么问题来了:

1为什么比如上传文件时,对元数据内存操作后,要记录edits日志,而不直接操作fsimage日志呢?

因为对于大数据系统来说,大量的文件上传时会操作内存中的元数据,然后如果直接操作fsimage元数据文件,就会造成IO瞬间爆发,造成阻塞。所以记录的只是操作记录edits日志。

2 随着时间增加,fsimage文件并没有跟内存元数据保持同步,而落后了很多。怎么办?

SecondaryNameNode的作用就提现出来。

 

SecondaryNameNode:不是主也不是从节点。主要用来辅助NameNode完成fsimage文件的同步的更新的,这个过程叫做合并edits日志。因为同步更新时根据edits日志来更新的,也就是fsimage日志和edits日志的合并。

1 SNN 执行合并时机 

•  根据配置文件设置的时间间隔fs.checkpoint.period   默认 3600 秒 

•  根据配置文件设置edits log 大小  fs.checkpoint.size  规定 edits 文件的最大值默

认是 64MB

 

 

2 SNN合并流程

•   首先,NameNode生成一个新的edits日志文件为元数据操作做准备。

•   接着,SecondrayNameNode从NameNode读取edits和fsimage文件到自己节点。

•   进行合并,生成一个新的fsimage文件。

•   SecondrayNameNode把新fsimage文件传输给NameNode,NameNode更新fsimage。

•   当下一个合并时机到来时依次类推。

 

DataNode ( DN ) 

 – 存储数据( Block ) 

–启动 DN 线程的时候会向 NN 汇报 block 信息 

–通过向 NN 发送心跳保持与其联系( 3 秒一次),如果 NN 10 分钟没有收

到 DN 的心跳,则认为其已经 lost ,并 copy 其上的 block 到其它 DN。

 

问题:dataNode已经挂掉了,是怎么保持block副本为3个呢?

答:NameNode其实会进行checkSize检查每个block的副本数,如果不足则进行复制,所以也不需要知道挂掉的那个节点任何信息。如果复制时发现DataNode节点数小于配置副本数,报错!

 

Block 的副本放置策略 

 

 

–第一个副本:放置在上传文件的 DataNode ;

如果是集群外提交,则随机挑选一台,磁盘不太满, CPU 不太忙的节点。 

–第二个副本:放置在于第一个副本不同的机架的节点上。 

–第三个副本:与第二个副本相同机架的节点。 

–更多副本:随机节点 

 

 

HDFS写流程:

其实就是上传为件,通过hdfs API.

1 客户端请求NameNode,传递参数文件大小、文件名、文件“客户端”用户

2 NameNode收到文件后,比如1G,NameNode服务端配置的有默认block大小,在客户端没有指定block大小时使用。会返回告诉客户端block大小、空闲DataNode机器(DataNode跟NameNode保持三秒一次的心跳)

3 客户端通过输出流,把数据按照字节流方式写到DataNode上去,边写边切成block,就是写够64M后就生成了第一个block,然后继续写第二个block到当前DataNode或者其他的DataNode上。写完后,文件就上传成功了。

注意:副本和客户端无关,当第一个block写完后就会复制副本给其他的DataNode节点。

 

 

HDFS读流程:

1 客户端请求NameNode,NameNode接收到文件路径,返回此文件的元数据(文件哪些block及编号、block位置信息)给客户端。

2 客户端通过字节输入流到DataNode上读取依次block。每个block有是3个以上副本,到哪里读?会找到副本所在dataNode空闲的节点读取。

3 读取完成,告诉NameNode汇报。

 

 

搭建HDFS集群环境:

准备:

1 准备机器192.168.98.95(node1)、192.168.98.96(node2)、192.168.98.97(node3)、192.168.98.98(node4)四台机器

2  各节点时间相同,差几秒没事

  3 设置免登录、检查jdk1.7

 

配置Hosts:

scp –p /etc/hosts  root@node2:/etc

 

 

 

设置免登录:

#这个命令会产生一个公钥(~/.ssh/id_rsa.pub)和密钥(~/.ssh/id_rsa)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

 

# 将自己的公钥导入认证文件中,就直接可以ssh本机ip,进行登陆,不需要输入密码

cat ~/pub_key >> ~/.ssh/authorized_keys

 

所以,将其他机器的pub_key导入到本机认证文件中就可以实现免登录。

比如使用192.168.98.95(node1)访问192.168.98.96(node2),免登录:

  1. # ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  2. #scp -p ~/.ssh/id_dsa.pub  root@node2:/opt

复制到了192.168.98.96(node2),然后在192.168.98.96(node2)执行以下命令:

  1. #cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
  2. Ok!
  1. #cd /root/hadoop-2.5.1/etc/hadoop
  2. # vi hadoop-env.sh

修改JAVA_HOME

  1. #vi core-site.xml
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://node1:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/opt/hadoop-2.5</value>
  9. </property>

 

#vi hdfs-site.xml

  1. <property>
  2. <name>dfs.www.trgj888.com namenode.secondary.http-address</name>
  3. <value>hdfs://www.thq666.com/ node2:50090</value>
  4. </property>
  5. <property>
  6. <name>dfs.namenode.secondary.https-address</name>
  7. <value>hdfs://www.yigou521.com/ node2:50091</value>
  8. </property>
  9. <property>
  10. <name>dfs.namenode.datanode.registration.ip-hostname-check</name>                   
  11. <value>false<www.yongshiyule178.com /value>
  12. </property>

 

#vi slavers

  1. node2
  2. node3
  3. node4

#vi master

node2

 

加入hadoop环境变量到/etc/profile

 

 

 

#hdfs namenode  -format    --只能在namenode下敲

帮我们创建了/opt/hadoop-2.5/dfs/name/current

及其下的fsimage文件

启动hadoop

#start-dfs.sh

关闭防火墙

#systemctl stop www.taohuayuan178.com/ firewalld.service

http://192.168.98.95:50070/

 

 

 

http://192.168.98.96:50090

 

 

 

 

问题:不知什么情况datanode只有node4,没有node2和node3呢?-www.tygj178.com-namdeNode和dataNode的clusterID不一致!

 

Hadoop日志也没有看出错误:/root/hadoop-2.5.1/logs

tail -fhadoop-root-namenode-localhost.localdomain.log

转载于:https://www.cnblogs.com/qwangxiao/p/9655024.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被认为是世界史上50个最伟大的发明有哪些?

来源&#xff1a;数学中国根据美国《大西洋月刊》杂志邀请了世界上12位科学家、技术史专家、工程师、企业高管组成的专家团为世界遴选自车轮&#xff08;车轮的广泛使用一般被认为始于6000年前&#xff09;问世后的50个最伟大的发明。其中&#xff0c;中国的四大发明均在其中。…

“NP问题是可计算的吗?” - 从“可计算性”的角度审视NP

来源&#xff1a;图灵人工智能转自 http://blog.sciencenet.cn/u/liuyu2205P vs NP世纪难题显示出在现有的计算机理论中存在着令人不安的困惑&#xff1a;一方面&#xff0c;书本中的NP问题理论部份无论是学习或教学都感到困难&#xff0c;以至于人们不得不一次又一次回头去重新…

GPT-3和AlphaFold 2震撼2020,2021年AI最大看点在哪儿?

来源&#xff1a;机器学习研究组订阅2020年并不缺重磅新闻&#xff0c;但人工智能依然够杀出重围&#xff0c;走进主流视野。尤其是GPT-3&#xff0c;它展示了人工智能即将以全新的方式深入我们的日常生活。这些进步赋予了未来很多可能&#xff0c;预测未来变得并不容易&#x…

宇宙与无限之谜

文&#xff1a;Alan Lightman译&#xff1a;Sue校对&#xff1a;Rachel在博尔赫斯&#xff08;Jorge Luis Borges&#xff09;的《沙之书》&#xff08;The Book of Sand&#xff09;中&#xff0c;一个神秘的传教者敲开了故事主人公的门&#xff0c;想要卖给他一本圣书。这本书…

微软、IBM们的中国研究院是怎样一步步“躺平”的?

来源&#xff1a; 脑极体IBM中国研究院关闭的消息&#xff0c;又让大家想起了曾经甲骨文、微软、Adobe等外企研究机构离华的新闻。从上世纪末本世纪初来华&#xff0c;十多年情缘突然宣告分手&#xff0c;固然是遗憾的&#xff0c;也更令人好奇背后的原因。公司业绩表现不佳、研…

斯坦福 AI 课程 10 年发展史

作者&#xff1a;Rachel Oh 、Peter Maldonado转自&#xff1a;机器之心编辑&#xff1a;杜伟、小舟在人工智能领域&#xff0c;斯坦福大学的很多课程都颇受欢迎&#xff0c;如 CS 224N 深度学习自然语言处理和 CS 229 机器学习。这些课程如何一步步发展成为今天的热门课程&…

6G技术长啥样?5大趋势,13个核心技术2030年落地

来源&#xff1a;智东西5G已经展开了全面商用&#xff0c;随着5G在垂直行业的不断渗透&#xff0c;人们对于6G的设想也逐步提上日程。面向2030, 6G将在5G基础上全面支持整个世界的数字化&#xff0c;并结合人工智能等技术的发展&#xff0c;实现智慧的泛在可取、全面赋能万事万…

微积分的未来:DNA、非线性、混沌、复杂系统与人工智能

导语微积分是人类历史上的伟大思想成就之一&#xff0c;也是数学领域不可或缺的一个重要分支。如果没有微积分&#xff0c;人类就不可能发明电视、微波炉、移动电话、GPS、激光视力矫正手术、孕妇超声检查&#xff0c;也不可能发现冥王星、破解人类基因组、治疗艾滋病&#xff…

美国防部官员讨论量子科学、5G和定向能的发展

来源&#xff1a;国防科技要闻3月8日&#xff0c;美国防部国防研究与工程办公室负责现代化建设的三名官员在国防工业协会太平洋作战科技虚拟会议上讨论了量子科学、5G和定向能的发展。量子科学量子科学主要负责人保罗洛帕塔表示&#xff0c;国防部在过去的二三十年里一直在进行…

9-18 学习如何使用Python包的管理

前提是安装好Anaconda 1.如何安装一个包 这里的语句 package_name为包的名字 例如 你可以在cmd窗口下输入 按下回车后 系统将会进行安装numpy包。 你也可以同时安装多个包&#xff0c;比如同时安装numpy、scipy、pandas包。 命令如下 注&#xff1a;numpy&#xff1a;是Python的…

AR行业发展现状:定义、技术原理及商业价值

文章来源&#xff1a;AR工业应用资料源自网络《Pokemon Go》这款游戏能够大火&#xff0c;除了一个好的IP之外。AR技术也功不可没。而在AR发光之后&#xff0c;什么是AR&#xff1f;它的技术原理是怎么样的&#xff0c;它能够具备哪些商业价值&#xff1f;希望通过这篇文章&…

基础学科如何不再“又难又穷”

来源&#xff1a;光明日报投身基础学科意味着什么——“奉献”“冷板凳”“异常艰苦”……也许&#xff0c;这是横亘在数十年间&#xff0c;大学生选报志愿时对“基础学科”的“刻板印象”。在知乎、豆瓣等大学生汇集的社交网站上&#xff0c;谈到基础学科&#xff0c;一位叫刘…

2021年阿贝尔奖公布!理论计算机科学和离散数学领域学者获奖

来源&#xff1a;前瞻网3月17日&#xff0c;2021年阿贝尔奖揭晓。挪威科学和文学院决定将2021年阿贝尔奖授予来自匈牙利&#xff0c;布达佩斯罗兰大学的Lszl Lovsz 和来自美国&#xff0c;普林斯顿高等研究院的 Avi Wigderson&#xff0c;以表彰两位科学家在理论计算机科学和离…

path环境变量丢失恢复

path环境变量不小心丢失&#xff0c;查询到的恢复方法记录一下 WindowsR键&#xff0c;打开&#xff1a;regedit后点击确定按钮 依次按照这个步骤找到path&#xff0c;鼠标右键修改&#xff0c;复制值到path环境变量中就可以了 转载于:https://www.cnblogs.com/liangcl/p/96797…

GPU深度报告,三大巨头,十四个国内玩家一文看懂【物联网智商精选】

来源: 智东西编辑&#xff1a;智东西内参关于GPU&#xff0c;你想知道的都在这里了。GPU是Graphics Processing Unit&#xff08;图形处理器&#xff09;的简称&#xff0c;它是一种专门在个人电脑、工作站、游戏机和一些移动设备&#xff08;如平板电脑、智能手机等&#xff0…

MYSQL--一条SQL查询语句是如何执行的?

select * from user where id10 当输入这条查询语句之后会发生什么&#xff1f; MYSQL逻辑架构图 MYSQL大致可以分为两大部分&#xff1a;Server层和存储引擎层 下面来介绍各层中各部分的作用&#xff1a; 连接器&#xff1a; 客户端请求建立连接&#xff0c;在完成TCP连接…

人工智能功能级别与框架|《远望译品》

来源&#xff1a;远望智库预见未来人工智能功能级别与框架本文摘自《人工智能算法、作战环境及未来趋势预判》&#xff5c;《远望译品》1、人工智能功能级别人工智能不仅在知识域中运行&#xff0c;而且在不同级别上与其他理性个体及其问题空间相互作用。人们对人工智能的期望过…

指针和数组替换和区别

指针和数组替换和区别 指针和数组在很多方面都可以替换 为什么不直接用while(*str ! \0)涉及到了Lvalue和Rvalue的问题 // http://www.dotcpp.com/wp/692.html 例如有字符数组char a[100];当a做右值时候&#xff0c;我们可以把它赋给char *类型的指针&#xff0c;用来指向这个…

C盘扩展卷是灰色的扩容方法

当想要扩容C盘的时候可能会发现C盘的扩展卷竟然是灰色的。原因是C盘旁边没有紧挨着的“”未分配空间“”&#xff0c; 只要将D盘的空间分出一些来就可以了。 &#xff01;&#xff01;&#xff01;磁盘的分区合并有风险&#xff0c;重要文件等记得先备份 &#xff01;&#xf…

数据与分析领域的十大技术趋势

来源&#xff1a;人工智能与大数据近日&#xff0c;Gartner发布了数据与分析领域的十大技术趋势&#xff0c;为数据和分析领导者的新冠疫情&#xff08;COVID-19&#xff09;响应和恢复工作提供指导&#xff0c;并为疫情后的重启做好准备。数据和分析领导者如果希望在疫情后能持…