Hadoop、HDFS学习

213 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

HDFS学习(装了这个,你的机器上就有两个文件系统了)

1.64mb一个块(3.0版本是128mb)
2.有助于大规模存储,简化系统设计,有助于备份

主要节点:Namenode+Datanode

namenode:

1.存储元数据(metadata,描述数据的数据,类似database schema
如:张山,25,男------这个是数据
姓名,年龄,性别-------这个是元数据
这个元数据保存在内存中 2.存储映射

datanode:

1.存储数据
2.维护映射

namenode的启动:

1.在名称节点启动的时候,FsImage文件加载到内存中(FsImage只读不写,写在editlog里面
2.再执行editlog文件中的各项操作,使得内存中与实际同步
运行期间Editlog会不断的变大,启动的时候会先读FsIMAGE,然后读取到内存中,可能会很久,这段时间数据库都不能进行读写
解决方法:使用SecondNamenode,把更新的环节放在其上(是另外一台机器),把merge做好之后再拿过来,没有被阻断 3.数据节点需要定期向名称节点发送自己所存储的区块的列表

冗余数据保存《数据存取策略)

1.数据存放:第一个副本,防止再上传文件的数据节点,如果是集群外提交,则随机挑选一个空闲、不满的节点;第二个副本,与第一个副本不同的机架的节点;第三个副本,与第一个副本相同机架的其他节点上(集群用过安装的时候配置的license来知道是在哪个机架)
2.数据读取:计算向数据靠拢
尽量回去选择一个数据所在的节点上算,就不需要传统模式中数据在不同的节点上拉扯了,不大会导致数据的堵塞。数据在哪里,计算就在哪里

数据错误与恢复

主要情况:

1.名称节点出错

名称节点主要是FsImage和Editlog组成,出错可以把Secondnamenode里的这些文件拷贝过来

2.数据节点出错

如何判断发生故障:心跳机制,酒店定时要向携程发送我是否还在营业,有多少空房。当无心跳,一个就是宕机了。
如果出现问题了,先检查一下这个节点上有哪些数据,然后把数据拷贝过去,使得副本数不少于冗余因子(一般是3)

3.数据出错

网络传输的过程中、或者是磁盘错误,会采用md5或者sha1的文件进行校验

Hadoop dfs基础命令

1.hadoop dfs -ls /(找到根目录下所有的文件)
2.hadoop dfs -put README.txt /user/readme (把本地文件txt放到分布系统的上面这个文件夹中) 3.
其实就可以用hdfs来制作一个网盘