大数据Hadoop全家桶学习1:分布式文件存储系统HDFS

Hadoop生态

三个核心组件:

  • 分布式文件系统----------HDFS(实现将文件分布式存储在很多服务器上)
  • 分布式运算编程框架----MapReduce(实现在很多机器上分布式并行运算)
  • 分布式资源调度平台----YARN(帮助用户调度大量的MapReduce程序,并合理分配运算资源)

 

存储框架:

HDFS-----------分布式文件存储系统(存储单元:文件)

Hbase---------分布式数据库系统(存储单元:表)

Kafka----------分布式消息缓存系统(存储单元:消息)(实时流式处理场景中广泛使用)

运算框架:

MapReduce------离线批处理/Hadoop中的批量处理框架

Spark--------------离线批量处理/也可以实时流式处理

Storm-------------实时流式处理(Spark可替换)

辅助类工具:

HIve------------数据仓库(看起来像数据库,但不是数据库。存一些需要分析的数据,从而可以直接写sql语句进行统计。可以接收sql翻译成mapreduce或者spark程序运行,从而让开发人员不用写mapreduce逻辑,只需要写sql逻辑)

Flume-----------数据采集

Sqoop----------数据迁移(比如把Hadoop的数据导入到关系型数据库Mysql,以便展示web端)

ElasticSearch-------分布式搜索引擎

大数据处理应用场景:

(1)公司产品 / 运营情况分析

(2)推荐系统(例如电商推荐)

(3)精准广告推荐系统

一、分布式存储系统HDFS 介绍

1.1、存储模型:字节

文件线性切割成块(Block:偏移量 offset ;

Block分散存储在集群节点中,单一文件Block大小一致,文件与文件可以不一致;

Block可以设置副本数,副本无序分散在不同节点中(副本数不要超过节点数量);

文件上传可以设置Block大小和副本数,已上传的文件Block副本数可以调整,大小不变;

只支持一次写入多次读取,同一时刻只有一个写入者;

可以append追加数据。

1.2、架构模型

文件元数据MetaData,文件数据 

  • 元数据
  • 数据本身

(主)NameNode节点保存文件元数据单节点   posix

(从)DataNode节点保存文件Block数据:多节点

DataNodeNameNode保持心跳,提交Block列表

HdfsClientNameNode交互元数据信息

HdfsClientDataNode交互文件Block据(cs)

DataNode 利用服务器本地文件系统存储数据块

1.3、HDFS架构:

NameNode(NN):

(1)基于内存存储 :不会和磁盘发生交换(双向)

  • 只存在内存中
  • 持久化(单向)

(2)NameNode主要功能:接受客户端的读写服务、收集DataNode汇报的Block列表信息

(3)NameNode保存metadata信息包括:

  • 文件owership和permissions
  • 文件大小,时间
  • Block列表:Block偏移量),位置信息(持久化不存)
  • Block每副本位置(由DataNode上报)

(4)NameNode持久化:

  • NameNode的metadata信息在启动后会加载到内存
  • metadata存储到磁盘文件名为”fsimage(时点备份)
  • Block的位置信息不会保存到fsimage
  • edits记录对metadata的操作日志…>Redis

SecondaryNameNode(SNN):

(1)作用:它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。

(2)SNN执行合并时机:

  • 根据配置文件设置的时间间隔fs.checkpoint.period  默认3600秒
  • 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB 

DataNode(DN):

  • 本地磁盘目录存储数据(Block)文件形式
  • 同时存储Block的元数据信息文件
  • 启动DN时会向NN汇报block信息
  • 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

1.4、HDFS写流程

Client:切分文件Block

-->按Block线性和NN获取DN列表(副本数)

-->验证DN列表后以更小的单位流式传输数据

-->各节点,两两通信确定可用

-->Block传输结束后:

  • DN向NN汇报Block信息
  • DN向Client汇报完成
  • Client向NN汇报完成获取下一个Block存放的DN列表.

-->最终Client汇报完成NN会在写流程更新文件状态

1.5、HDFS读流程

Client:

  • 和NN获取一部分Block副本位置列表
  • 线性和DN获取Block,最终合并为一个文件
  • 在Block副本列表中按距离择优选
  • MD5验证数据完整性

二、HDFS常用命令

2.1、帮助命令

一切命令都从帮助开始,命令是记不完的,只有学会使用帮助,才能免却记忆的痛苦。
hdfs dfs -help

2.2、查看命令

(1)列出文件系统目录下的目录和文件:

# -h 以更友好的方式列出,主要针对文件大小显示成相应单位K、M、G等
# -r 递归列出,类似于linux中的tree命令
hdfs dfs -ls [-h] [-r] <path>

(2)查看文件内容:

hdfs dfs -cat <hdfsfile>

(3)查看文件末尾的1KB数据:

hdfs dfs -tail [-f] <hdfsfile>

2.3、创建命令

(1)新建目录:

hdfs dfs -mkdir <path>

(2)创建多级目录:

hdfs dfs -mkdir -p <path>

(3)新建一个空文件:

# linux下是touchz,不知道为什么在hdfs要加个z?
hdfs dfs -touchz <filename>

(4)上传本地文件到hdfs:

# -f 如果hdfs上已经存在要上传的文件,则覆盖
hdfs dfs -put [-f]  <local src> ...  <hdfs dst>

举例:将/usr/local/hadoop-2.7.3/etc/hadoop下的所有配置文件都上传到hdfs的/hadoop目录:

hdfs dfs -mkdir /config
hdfs dfs -put /usr/local/hadoop-2.7.3/etc/hadoop /config

2.4、删除命令

(1)删除文件或目录:

# -r 递归删除目录下的所有文件
# -f为直接删除,不予提示
# -skipTrash为彻底放入文件,不放入回收站
hdfs dfs -rm [-r] [-f] [-skipTrash] <hdfs path>

2.5、获取命令
(1)将hdfs文件下载到本地:

hdfs dfs -get < hdfs path> < localpath>
举例:将hdfs的/config目录下载到本地的/config目录下
hdfs dfs -get /config /config

(2)将hdfs文件合并起来下载到本地:

hdfs hdfs -getmerge [-nl] <hdfs path> <localdst>
举例:将hdfs的/config/hadoop目录下的所有文件合并下载到本地的config.txt中
hdfs dfs -getmerge /config/hadoop config.txt

2.6、其他hdfs文件操作命令

拷贝:hdfs dfs -cp [-r] < hdfs path >  < hdfs path1 >
移动:hdfs dfs -mv < hdfs path >  < hdfs path1 >
统计目录下的对象数:hdfs dfs -count < hdfs path >
统计目录下的对象大小:hdfs dfs -du [-s] [-h] < hdfs path >
修改hdfs文件权限
修改所属组[-chgrp [-R] GROUP PATH...] 
修改权限模式[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
修改所需组和所有者[-chown [-R] [OWNER][:[GROUP]] PATH...] 

2.7、hdfs管理命令

(1)显示帮助:

hdfs dfsadmin -help

(2)查看文件系统健康状态:

显示hdfs的容量、数据块和数据节点的信息
hdfs dfsadmin -report

(3)安全模式管理:
安全模式是hadoop的一种保护机制,用于保证集群中的数据块的安全性。当hdfs进入安全模式时不允许客户端进行任何修改文件的操作,包括上传文件,删除文件,重命名,创建文件夹等操作。
当集群启动的时候,会首先进入安全模式。当系统处于安全模式时会检查数据块的完整性。假设我们设置的副本数(即参数dfs.replication)是5,那么在datanode上就应该有5个副本存在,假设只存在3个副本,那么比例就是3/5=0.6。通过配置dfs.safemode.threshold.pct定义最小的副本率,默认为0.999。

1、查看安全模式状态
hdfs dfsadmin -safemode get
2、强制进入安全模式
hdfs dfsadmin -safemode enter
3、强制离开安全模式
hdfs dfsadmin -safemode leave

三、常用命令汇总:

1.hdfs命令行
    (1)查看帮助
        hdfs dfs -help 
        
    (2)查看当前目录信息
        hdfs dfs -ls /
        
    (3)上传文件
        hdfs dfs -put /本地路径 /hdfs路径
        
    (4)剪切文件
        hdfs dfs -moveFromLocal a.txt /aa.txt
        
    (5)下载文件到本地
        hdfs dfs -get /hdfs路径 /本地路径
        
    (6)合并下载
        hdfs dfs -getmerge /hdfs路径文件夹 /合并后的文件
        
    (7)创建文件夹
        hdfs dfs -mkdir /hello
        
    (8)创建多级文件夹
        hdfs dfs -mkdir -p /hello/world
        
    (9)移动hdfs文件
        hdfs dfs -mv /hdfs路径 /hdfs路径
        
    (10)复制hdfs文件
        hdfs dfs -cp /hdfs路径 /hdfs路径
        
    (11)删除hdfs文件
        hdfs dfs -rm /aa.txt
        
    (12)删除hdfs文件夹
        hdfs dfs -rm -r /hello
        
    (13)查看hdfs中的文件
        hdfs dfs -cat /文件
        hdfs dfs -tail -f /文件
        
    (14)查看文件夹中有多少个文件
        hdfs dfs -count /文件夹
        
    (15)查看hdfs的总空间
        hdfs dfs -df /
        hdfs dfs -df -h /
        
    (16)修改副本数    
        hdfs dfs -setrep 1 /a.txtZ-blog:www.361wx.com

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值