(3) Hadoop-HDFS分布式文件系统

1. HDFS入门

1.1 HDFS基本概念
  • HDFS就是一个分布式文件系统,既然是文件系统就会有树形结构,既然是分布式就会涉及到集群的概念。所有文件系统都是用来存储数据的,而它的特点就是用来处理大数据和存储大数据。
1.2 HDFS解决的问题那些
    1. 故障的检测和自动快速恢复 (一旦计算失败会恢复到曾经的状态从新计算)
    1. 注重是数据高吞吐量 (吞吐量代表的是单位时间内处理的数据量)
    1. 可以用来存储大数据 GB 到 TB
    1. 一旦写入就不支持修改
    1. 并行计算不需要移动数据
1.3 HDFS 特性以及相关概念呢
    1. master/slave架构 namenode与datanode,resourceManage与nodemanag
    1. block块 每个文件都是一个block块,大文件会划分为多个block块,块的大小2.Xhadoop默认是128 ,1.Xhadoop默认是64.
    1. namenode存储的是数据元数据信息,datanode存储的数据真是内容
    1. Block块的副本机制,就是为了提高容错性
    1. 一次写入,多次读取 而且不支持修改

2. HDFS 实现原理

2.1 原理分析
  • 下面这张图就是原理
    这里写图片描述

  • 首先大家要清楚最原始的纵向扩展以及无法满足目前数据的存储,因此产生了横向扩展(增加服务器数量),但是横向存储的不利于数据的存储,因此又产生了block的概念,将大文件按照128的比例去拆分。分别存储到不同服务器中,为了提高容错性,引入的副本的内容。为了方便的管理集群快速索引数据就有产生了NameNode这个东东,NameNode所在的服务器中存储的是数据的元数据信息。按照这个逻辑就产生了HDFS,这就是产生的原理。

  • 总结一下

      1. 纵向的扩展
      1. 数据的拆分
      1. 副本容错性
      1. 元数据的索引
2.2 NameNode概述
  • NameNode 上面存储的是DataNode上面所有文件的元数据信息,需要很大的内存,也是单点故障的所在。
2.3 DataNode概述
  • dataNode 是文件实际存储的所在地,当dataNode启动的时候会上报自己的Block块的信息,Block块通俗的将就文件的列表,每个文件都是一个Block,dataNode与NameNode彼此直接的联系是通过心跳机制,心跳监听默认是3秒,如果超时默认DataNode挂掉,就会由其他dataNode去接管
2.4 HDFS 写入流程
  • 关于文件的从HDFS上面 文件的读取或者写入流程 就看我总结的图片就够用了。 希望能有朋友可以帮我指正啊 。。。

block的划分是在客户端完成的

这里写图片描述

2.5 HDFS 读取流程

block的合并是在客户端完成的

这里写图片描述

3.HDFS的shell指令

这里写图片描述

3.1 上面那张图就是HDFS指令说明,下面会介绍一些细节提示一下大家
3.1.1 关于路径问题
1. 
hadoop fs -ls hdfs://namenode:port/ 这个是全路径显示hdfs文件的系统 

例如 是本地的文件系统 默认是 file://localhost:port/ 

    不同的文件系统 对应的协议就是 FS,HFTP FS,S3 FS 这个样子

可以简写 hadoop  fs -ls / 这个就是简写 因为fs.defaultFS 中有配置对应的全路径 ,记住操作的文件列表 还有元数据信息都是namenode上面所有也只是针对namenode去操作

第二个:core-site.xml

<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node-1:9000</value>
</property>  
3.1.2 修改hdfs上面用户主
- chgrp
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI ...]
功能:更改文件组的关联。用户必须是文件的所有者,否则是超级用户。
-R 将使改变在目录结构下递归进行。
示例:hadoop fs -chgrp othergroup /hadoop/hadoopfile   
3.1.3 将多个文件合并下载
- - getmerge 
功能:合并下载多个文件
示例:比如 hdfs 的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum  
3.1.4 修改文件副本数
- - setrep
功能:改变一个文件的副本系数。-R 选项用于递归改变目录下所有文件的副本
系数。
示例:hadoop fs -setrep -w 3 -R /user/hadoop/dir1
3.1.5 统计文件可用空间
- df
功能:统计文件系统的可用空间信息
示例:hadoop fs -df -h /      // h代表human的意思显示的能让人看懂

4.HDFS的应用开发

5.补充知识点

问题一 : namenode 本身不序列化 节点的上报 过程就做(安全启动模式),元数据保存在内存中比磁盘要快,namenode 需要大内存。如果元数据存储在内容中 为什么还会在本地看到呢 ?

    解答 : namenode上面的元数据信息不会持久存储在namenode上面,一旦关机从起就没有了  

问题二 :Jounal 记录的是操作日志 – 恢复操作记录,防止在运行的过程中因为意外中断 这个文件在哪里啊 ?

1. 注意点:针对块的副本 不是文件的副本!!!这点很关键
2. 注意点:rack 机架 机架感知 (一般20台以内就可以 小公司就买阿里云),2个节点在同一个机架上面 ,另一个节点在另外一个机架上面
3. 注意点
    文件上传 

        A B C  三台相当于并行   从第4方的角度去看

        a-》 b -》 c 是 串行  按照数据包的流程
  1.     RCP 通信  客户端进行block块的划分   
    

备份数 = 实际数 = 副本数 在Hadoop中

recusive

it

stop

注释的快捷键

建立错误的资源库

idea 启动的时候回去加载环境变量

下载
crc 校验 tlis.exe 本地校验 是否开启本地校验

删除 是否递归删除

window是客户端 提交都是 三个备份

Linux 默认都是2 个备份 原因的话就根据配置文件有关

也可以通过流的形式去调用

日志的采集

数据库 -- hdfs 

前端 - 数据库    


java  还有 shell 都可以  

shell 脚本   wget 什么意思 ? shell 脚本自己写一边 练习吧感觉比window客户端好用!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值