Hadoop学习

Hadoop

hadoop—Hdfs

存储模型:字节

  • 文件线性切割成块(Block)(1.x 64M 2.x 128M):偏移量 offset(byte)

  • Block分散存储在集群节点中

  • 单一文件Block大小一致,文件与文件可以不一致

  • Block可以设置副本数,副本分散在不同节点中

    • 副本数不要超过节点数
  • 文件上传可以设置Block大小和副本数

  • 已上传Block副本数可以调整,大小不变

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

  • 可以append追加数据,不可以修改

架构模型

  • 文件元数据MetaDate,文件数据
  • 元数据
  • 数据本身
  • (主)NameNode节点保存文件元数据(文件的描述信息,在程序中会维护NamoNode自身的一个):单节点posix
  • (从)DataNode节点保存文件Block数据:多借点
  • DataNode与NamoNode保持心跳,提交Block列表
  • HdfsClient与NameNode交互元数据信息
  • HdfsClient与DataNode交互文件Block数据
    在这里插入图片描述
    HDFSClient在和NameNode交互完以后便可以和DataNode进行交互
小结

最简单的存储过程,当向HDFS系统中上传一个文件时,文件会被线性分割成块,经过和NamoNode进行交互,这时NameNode会根据与DataNode之间的心跳反馈来决定这一个块数据有哪一个DataNode节点来存储,所以说NameNode只是其记录作用,记录文件的基本信息,即元数据,为真正的数据则是由NamoNode分配给的DataNode节点来存储。

NameNode

  • 基于内存存储:不会和磁盘发生交换

    • 只会在 内存中
    • 持久化
  • NameNode主要功能:
    -接受客户端的读写服务
    -收集DataNode汇报的Block列表信息

  • NameNode保存metadata信息包括
    -文件owership和permissions
    -文件大小,时间
    -(Block列表:Block偏移量),位置信息
    -Block每副本位置(由DataNode上报)

NameNode持久化

  • NameNode的metadata信息在启动后会加载到内存
  • metadata存储到磁盘文件名为“fsimage”
  • Block的位置信息不会保存到fsimage
  • edits记录对metadata的操作日志

Secondary NameNode

  • 注意它不是namenode的备份,namenode的备份时standByNamenode
  • 它是namenode的助手
  • 当用户想hdfs中添加或删除文件时,涉及到元数据的修改,涉及到namenode对于元数据的读写,为了降低负担,只更改变化的元数据,此时就需要一个服务来合并这些数据,这个服务就是secondary namenode,把namenode吐出的一些小文件合并成一个新的镜像
  • 初始镜像为fsimage,小文件叫editlog,将editlog合并到fsimage,此时形成一个新的fsimage
  • 一句话简而意之:fsimage=fsimage+editlog

DataNode

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

HDFS优点:

  • 高容错性
    • 数据自动保存多个副本
    • 副本丢失后,自动恢复
  • 适合批处理
    • 移动计算而非数据
    • 数据位置暴露给计算框架(Block偏移量)
  • 适合大数据处理
    • GB、TB、甚至PB级数据
    • 百万模式以上的文件数量
    • 10K+节点
  • 可搭建在廉价机器上
    • 通过多副本提高可靠性
    • 提供了容错和恢复机制

HDFS缺点:

  • 低延迟数据访问
    • 比如毫秒级
    • 低延迟与高吞吐率
  • 小文件存储
    • 占用NameNode大量内存
    • 寻道事件超越读取时间
  • 并发写入、文件随机修改
    • 一个文件只能有一个写者
    • 仅支持append

小文件问题

  • 往hdfs中写文件,文件的元数据会加载到namenode内存,当文件数目越多,元数据越多,会造成namenode内存使用溢出,影响集群工作
  • 文件越多打开花销越大
  • 对于物理内存的占用是十分大的
  • 解决:合并小文件

hdfs shell

hdfs dfs -mkdir /temp 创建目录
hdfs dfs -p -mkdir /temp/user 级联创建目录
hdfs dfs -put install.log /temp 上传文件
hdfs dfs -cat install.log 查看文件内容
hdfs dfs -cat install.log | wc -l 查看行数
hdfs dfs -cat install.log | grep data 条件查看
hdfs dfs -chmod 777 -R /temp/user/data/install.log 调整权限
hdfs dfs -rmr /temp/user/install.log 删除文件到垃圾箱
hdfs dfs -rmr -skipTrash /temp/user/install.log 跳过垃圾回收删除
hdfs dfs -get /temp/user/install.log tmp.log 下载文件
hdfs dfs -test -d /user
echo $? 判断目录是否存在 0 存在 1 不存在  -f判断文件

hdfs fsck /  查看集群状况
hdfs dfs -df -h 查看硬盘使用情况
hdfs dfs -du / 每一个目录的使用情况
sudo -u hdfs hdfs dfsadmin -report 生成集群报表
hdfs fsck /temp/events.csv -files -blocks -locations




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值