一、概述

1、背景、定义、使用场景(一次写入、不支持修改)

2、优(容错)缺点(延迟、不支持小文件、不支持修改)

3、组成架构

NameNode:Master,管理命名空间、配置策略

DataNode:slave,执行数据读写操作

Client:使用命令访问和交互

SecondNameNode:辅助分担namenode的工作量、恢复namenode

4、HDFS文件块大小

分块存储,默认128M(寻址时间为传输时间的1%),块大小取决于磁盘传输速率

二、HDFS的shell操作

1、基本语法:bin/hadoop fs 或 bin/hadoop dfs

2、常见操作:

启动集群(sbin/start-dfs  /  yarn.sh)

上传文件:hadoop fs  -moveFromLocal  ./kongming.txt  /sanguo/shuguo【剪切、复制】

追加到文件:hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt

下载:合并下载hadoop fs -getmerge /user/atguigu/test/* ./zaiyiqi.txt

3、hdfs直接操作

hadoop fs -mkdir

-chgrp 、-chmod、-chown、-tail显示末尾、-du统计信息、-setrep设置副本数量

三、HDFS客户端操作

1、客户端创建目录:fs.mkdirs(new Path("/1108/daxian/banzhang"));

2、API操作

文件上传:设置路径参数的优先级

文件下载:fs.copyToLocalFile

文件夹删除:fs.delete

文件名更改:fs.rename

获取文件详情:fs.listFiles

判断文件/文件夹:fs.listStatus

四、HDFS的数据流

1、写数据

向NameNode请求上传

通过packet逐级应答客户端

依次上传每个block的数据

节点距离:两个节点到达最近的共同祖先的距离总和。

2、读数据

向NameNode请求下载

查询元数据,获得对应的DataNode

packet方式传输数据给客户端

五、NameNode和Second NameNode

1、1 NN和2NN的工作机制

Fsimage和Edits文件存储namenode的元数据

NameNode节点断电,就会产生数据丢失

添加元数据时,修改内存中的元数据并追加到Edits【只追加,效率高】

二者合并,合成元数据【使用2NN完成二者合并】

2、oiv和oev命令可以查看Fsimage和Edits文件

3、2NN的CheckPoint时间设置

配置:默认1小时

或一分钟检查一次,操作次数达到一万次时执行一次

4、NameNode故障处理

2NN数据拷贝(手动)

使用-importCheckpoint选项启动NameNode守护进程,自动实现2NN的数据拷贝

5、安全模式

开启后只读,不能进行写操作

使用命令执行:查看、进入、离开、等待

六、DataNode

1、工作机制

周期性上报块信息到NN,

3秒一次心跳,10分钟未收到NN心跳表示节点不可用

2、数据完整性

周期验证CheckSum【数据一起发送的校验位】

3、掉线时限参数设置

hdfs-site.xml 配置文件中的heartbeat.recheck.interval、dfs.heartbeat.interval

4、服役新数据节点

克隆新主机,直接启动DataNode,即可关联集群

同时可以执行./start-balancer.sh实现数据均衡

5、退役旧数据节点

添加白名单的主机允许访问:vi dfs.hosts

需要配置hdfs-site.xml中的dfs.host属性

配置文件分发,刷新NN和ResourceManager节点

黑名单退役:

退役节点添加到:dfs.hosts.exclude中

配置文件分发:xsync hdfs-site.xml

刷新NN:hdfs dfsadmin -refreshNodes

yarn rmadmin -refreshNodes更新ResourceManager节点

6、Datanode多目录配置

每个目录存储的数据不一样

hdfs dfsadmin -refreshNodes

最新文章

  1. ionic ios 左滑 白屏
  2. docker-image container 基本操作 -常用命令
  3. informatica通用命令方式启动workflow
  4. oracle密码错误验证延迟
  5. Codeigniter开发技巧:连接多个数据库(可实现DB读写分离)
  6. Shell脚本:判断用户和用户组是否已经存在/创建用户和用户组
  7. 如何实现室内Wi-Fi无线终端的精准定位
  8. 虚拟机比较(wiki)
  9. Date类型常用概念及方法总结(1)
  10. Vue2.0音乐播放器
  11. protobuf和thrift对比
  12. VeloView源码编译错误记录——VS manifest
  13. JQuery插件开发标准写法
  14. Mybatis的基本使用
  15. 如何购买并配置linux服务器上的数据库
  16. 基于jeesite的cms系统(三):使用RESTful API在前端渲染数据
  17. MySQL日志专题
  18. Koa 框架常用知识点整理
  19. CAS 单点登录【1】入门
  20. Ubuntu 16.04出现:Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'

热门文章

  1. 【学习笔记】GBDT算法和XGBoost
  2. Nginx负载均衡设置max_fails和fail_timeout
  3. 如何在 Docker 之上使用 Elastic Stack 和 Kafka 可视化公共交通
  4. 18. Fluentd输出插件:out_stdout用法详解
  5. HDU1561 The more, The Better(树形背包)
  6. VM运行centos网络配置(出现错误)详解
  7. 使用doctest代码测试和Sphinx自动生成文档
  8. AIR32F103(三) Linux环境基于标准外设库的项目模板
  9. .net core 配置跨域
  10. Sublime Text 修改默认语言为Python