Hadoop 生态组件初探系列之——HDFS

本文深入解析HDFS(Hadoop分布式文件系统),介绍其作为Hadoop核心组件的重要性,包括分布式特性、为大量数据提供冗余存储的机制、WriteOnce特性、分块存储原理及高可用架构。涵盖从Hadoop2.0以下的冷备份架构到2.0+的Zookeeper Failover Controller高可用解决方案,以及HDFS的基本操作命令。

HDFS

简要概括

HDFS(Hadoop Distribute File System),从它的英文全称拆开理解如下:

  • Hadoop : 它是Hadoop的组件,言简意赅,其实不只是组件,它还是hadoop的核心,基础;
  • Distribute : 分布式的,说明它能多台机器共用;
  • File System: 本身是一个文件系统,类似于linux的文件系统;

在hdfs集群中,机器被分为存储元数据的NameNode和存储文件数据的DataNode。

重要特性

不同于linux文件系统,hadoop的文件系统有以下特性:

  1. 基于操作系统的文件系统之上
    hdfs的架构
    操作系统负责将文件数据写到物理磁盘的不同位置,hdfs则将它的数据存到了操作系统的文件系统中;
  2. 为大量数据提供冗余存储
    默认每个文件存三份,为了保持高可用性,这三份文件会存放到不同DataNode机器上,具体存在哪里,怎么去获取这个文件,这些信息保存在集群的NameNode上。
  3. WriteOnece
    这个怎么理解,hadoop不像linux、windows的文件系统,linux和windows的文件可以通过文本编辑器去修改内容,而hdfs的文件,它是没有vim去修改它的内容的,一旦存到hdfs,修改方法就是删掉原来的文件,再重新存新文件。
  4. 分块存储,大文件存储
    hdfs 默认将文件分为128M的block,存到不同的机器上,由此可见,他适合存大文件,因为如果小文件特别多的话,每个文件分128M是很浪费资源的,小文件特别多的话,推荐压缩再上传hdfs。

hdfs的高可用

  1. hadoop2.0以下的解决方案——冷备份架构
    hdfs冷备份架构图
    Hdfs的各种client与namenode之间交互,活跃的namenode会在响应client请求的同时将元数据同步到备份的Secondary NameNode,一旦NameNode 挂掉(宕机)之后,激活备份的namenode,仍然可以使用。
    (上图也可以看到,文件分块,存三份。)

  2. hadoop 2.0+ 高可用架构

Zookeeper调控下的hdfs高可用架构
zookeeper的zkfc(ZookeeperFailoverController)进程负责对两台NameNode的状态进行监控,要求NameNode定时发送心跳(证明自己还活着)信息,一旦某段时间内没有收到心跳信息返回,就开始集群选举,选取新任NameNode自动激活,实现了高可用,与上述的手动切换namenode不同,zkfc进程详细信息我就不多说了,看下图:
在这里插入图片描述

hdfs基本操作

通过hdfs dfs 的前缀加上linux文件操作的各种命令,熟悉linux的朋友可以亲切的操作hdfs(注:hadoop fs前缀虽然也能用,但是官方已经说明以后有新命令不再支持,建议使用hdfs dfs

  1. 查看目录
hdfs dfs -ls [hdfs目录]

列举当前或者指定路径目录中的文件,不加hdfs目录就是当前目录(建议使用绝对路径,当前路径指的是/user/<当前用户> ,比如没有使用kerberos安全的集群root用户的当前路径就是/user/root)

  1. 上传文件
hdfs dfs -put  <本地文件>  <hdfs路径>

上述命令就是将本地的文件上传到了hdfs的目录下面

  1. 下载文件
hdfs dfs -get <hdfs文件名>  <下载到哪个目录>

与put相似,将hdfs的文件下载至操作系统文件系统。

  1. 修改文件权限
hdfs dfs [-chown] [-chmod] [-getfacl] [-setfacl]

上述命令与linux文件操作系统类似,不展开说明。

注:关于hdfs权限,后面再专门写一篇hdfs的权限说明,基本开发过程中有关于hdfs的最多问题,也就是权限问题了;此外hdfs提供了各个其他组件系统的接口,不属于初探系列,以后再说,原创不易,轻喷。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值