首页 > 其他分享 >hadoop hdfs

hadoop hdfs

时间:2022-10-31 11:36:25浏览次数:35  
标签:node hdfs fs hadoop 文件系统 root


hadoop hdfs

  • hdfs特性
首先,它是一个文件系统 用于存储文件的  提供统一命名空间的目录树结构 便于用户操作文件系统
其次,它是一个分布式文件系统 分布式意味着多台机器 当中有不同的角色 各司其职 共同配合。
  • master slave 主从架构
  • 主角色:namenode 管理文件系统元数据(目录树结构 文件和块的对应信息)
  • 从角色:datanode 负责具体数据块存储 定时向nn进行块的汇报
  • 分块存储
hadoop 2.x  block size = 128M
hadoop 1.x block size = 64M
  • 副本机制
  • hadoop默认的副本数是3(1 + 2 = 3)
  • 一次写入,多次读出
    hdfs没有数据修改操作 只要是支持大数据查询分析需求
  • hdfs shell命令行操作
  • 格式
hadoop  fs <args>  文件系统的协议://主机名:host/文件路径
  • 具体操作
hadoop fs -ls file:///   访问是本地系统

hadoop fs -ls hdfs://node-1:8020/ 访问是hdfs文件系统

hadoop fs -ls gfs://node-1:9999/ 访问是谷歌文件系统

hadoop fs -ls / 如果不指定文件系统的协议 就会访问默认文件系统 fs.defaultFS
  • 基本操作
  • put 上传操作 从本地文件系统复制到目标文件系统
何谓本地文件系统?  
执行命令所在的客户端的文件系统

何谓目标文件系统?
hdfs
hadoop fs -put file:///root/example-mr-1.2.jar hdfs://node-1:8020/a/b/c
hadoop fs -put example-mr-1.2.jar /a/b/
  • get 下载操作 将文件下载到本地文件系统
何谓本地文件系统?  
执行命令所在的客户端的文件系统
hadoop fs -get hdfs://node-1:8020/a/b/c/example-mr-1.2.jar file:///root/

hadoop fs -get /a/b/c/example-mr-1.2.jar ./
  • appendToFile 把多个文件追加到已经存在文件的末尾
  • 最大用处:hdfs上小文件的合并
hadoop fs -appendToFile 2.txt 3.txt /a/1.txt
  • getmerge 下载合并 合并下载多个文件
hadoop fs -getmerge /small/* ./small.txt
  • setrep
[root@node-3 test]# hadoop fs -setrep -w 3 /zookeeper.out
Replication 3 set: /zookeeper.out
Waiting for /zookeeper.out .... done
  • 注意事项: 可以通过该命令修改hdfs中文件副本个数 在企业中避免使用该操作
  • 进行副本设置修改的操作 需要hdfs集群配合文件进行数据复制 降低对外提供正常服务能力
  • 通常一批文件设置为几个副本 在上传前就需要决定好
  • 文件限额操作
  • 可以设置某个文件夹可以用于多少个子文件 或者文件的大小限制
  • 强制限制 超过即禁止
hdfs dfsadmin -setQuota 2 /user/root/lisi  开启限制 限制文件个数为2

[root@node-3 test]# hadoop fs -put 1.txt /user/root/lisi
[root@node-3 test]# hadoop fs -put 2.txt /user/root/lisi
put: The NameSpace quota (directories and files) of directory /user/root/lisi is exceeded: quota=2 file count=3 报错 显示已经超过现在

[root@node-3 test]# hdfs dfsadmin -clrQuota /user/root/lisi
[root@node-3 test]# hadoop fs -put 2.txt /user/root/lisi
[root@node-3 test]# hadoop fs -put 3.txt /user/root/lisi 清楚文件超额限制

hdfs dfs -count -q -h /user/root/lisi 查看某个路径是否开启文件超额限制
  • NN和DN之间的汇报机制
  • 启动集群的时候 首先启动namenode 然后启动datanode
  • datanode启动的时候需要进行两件事
  • 去namenode进行注册汇报 报告自己启动成功 —>我活了
  • 去namenode汇报自己本机持有哪些数据块
  • 集群启动之后 正常工作期间 还需要间隔指定的时间进行汇报
  • datanode每隔3秒进行心跳 目的:报活
dfs.heartbeat.interval
  • datanode每间隔6小时 汇报自己持有块信息
dfs.blockreport.intervalMsec
  • 在启动的过程中 hdfs会进入所谓安全模式 数据只可以读不可以写 内部进行数据完整性校验

hdfs java api 操作

  • 开发的版本的选择
  • 因为服务器环境搭建使用的cdh 版本 ,本地开发jar版本理应也是cdh
  • cdh和apache 相同版本中 api 代码 逻辑是没有区别的
  • 如果使用cdh 需要手动添加cloudera maven仓库 因为它是商业公司
  • 问题1:客户端身份的权限问题
Permission denied: user=AllenWoon, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
  • 解决: 在客户端设置访问文件系统身份
  • 问题2: hadoop本地环境的问题
  • 报错现象
ERROR - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
WARN - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  • 原因:hadoop往windows平台进行数据写操作的时候 需要winutils.exe 配合才能交互。winutils.exe来自hadoop源码中C++本地库的支持。
  • 解决:把hadoop源码在windows进行编译 得到winutils.exe 达到和本地操作交互的能力
  • 安装: 把windows编译的hadoop解压到一个路径(没有中文 没有空格)
  • 配置hadoop环境变量
HADOOP_HOME=C:\Work\soft\hadoop-2.6.0-cdh5.14.0
PATH=;%HADOOP_HOME%\bin
  • 首先cmd 验证hadoop环境变量是否正确
  • 确保之前安装的jdk路径也是没有中文 没有空格的
  • 重启idea开发工具

  • 跨hdfs集群数据复制
  • 命令 distcp
hadoop distcp hdfs://node-1:8020/1.txt  hdfs://itcast:8020/test/
  • 使用场合
    业务中涉及生成环境和开发环境之间某些数据进行交流的时候使用
  • hadoop archive的使用
  • 产生背景:hdfs架构设计不利于小文件存储 文件不管多小 都需要元数据描述记录 如果集群小文件过多
    可能磁盘使用情况很低 但是内存使用确很高 俗称 小文件吃内存
  • 档案的功能:通过mr程序 把多个小文件 合并成一个档案文件
  • archive的使用
  • 档案的创建
hadoop archive -archiveName test.har -p /input /outputdir

档案建立成功 为了优化小文件吃内存的情况 可以把小文件删除
hadoop fs -rm -r /input
  • 档案的查看
查看建立档案之后的样子
hadoop fs -ls hdfs://node-1:8020/outputdir/test.har

查看建立档案之前的样子
hadoop fs -ls har://hdfs-node-1:8020/outputdir/test.har
可以查询出该档案是由哪些小文件合并而来
  • 档案的提取
串行提取
hadoop fs -cp har:///outputdir/test.har hdfs://node-1:8020/input

hadoop distcp har:///outputdir/test.har hdfs://node-1:8020/input
  • 档案的注意事项
  • hdfs 快照功能
  • 创建快照相当于给hdfs系统设置备份
  • 创建快照的前提是文件夹已经存在
  • 创建快照需要两步
  • 首先允许其设置快照
hdfs dfsadmin -allowSnapshot /small
  • 然后再是设置创建快照
hdfs dfs -createSnapshot /small
  • 浏览快照
http://node-1:50070/explorer.html#/small/.snapshot


标签:node,hdfs,fs,hadoop,文件系统,root
From: https://blog.51cto.com/u_12277263/5808901

相关文章

  • HDFS的其他功能
    不同集群之间的数据复制在我们实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷贝到测试集群,那么就需要我们在多个集群之间进行数......
  • hdfs
    1.hdfs报大量gc超时namenode日志出现大量GC超时相关错误,且30914端口未监听:GCpool'ParNew'hadcollection(s):count=1time=0msGCpool'ConcurrentMarkSweep'had......
  • Hadoop之初识MapReduce
    (初识MapReduce)1.MapReduce计算模型介绍1.1.理解MapReduce思想MapReduce的思想核心是<fontcolor=red>“分而治之”</font>。所谓“分而治之”就是把一个复杂的问题按一......
  • hadoop 日志存放位置
    初学者运行MapReduce作业时,经常会遇到各种错误,由于缺乏经验,往往不知所云,一般直接将终端打印的错误贴到搜索引擎上查找,以借鉴前人的经验。然而,对于hadoop而言,当遇到错误时,第......
  • 大数据Hadoop之——Apache Hudi 与 Presto/Trino集成
    目录一、概述二、Trino环境部署1)安装JDK2)安装python3)安装Trino1、下载解压并配置环境变量2、修改配置3、启动服务4、测试验证三、在Hive中创建表关联Hudi表1)添加jar包2)创......
  • 大数据处理架构Hadoop
    Hadoop可以支持多种编程语言HDFS分布式文件系统MapReduce分布式并行编程框架这两大核心组件用于解决怎么实现海量数据的分布式存储和怎么实现海量数据分布式处理Hiv......
  • Hadoop之HDFS的集群之间的数据复制、归档机制和安全模式
    (HDFS的数据数据复制、归档机制和安全模式)1.不同集群之间的数据复制在我们实际工作当中,极有可能会遇到将测试集群的数据拷贝到生产环境集群,或者将生产环境集群的数据拷......
  • HDFS的 Shell操作-API操作
    HDFS的Shell操作(重点)2.1基本语法hadoopfs具体命令 OR hdfsdfs具体命令两个是完全相同的。2.2命令大全[[email protected]]$bin/hadoopfs[......
  • HDFS概述
    HDFS概述1.1HDFS产出背景及定义1)HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需......
  • 学习心得 HDFS读数据过程
    HDFS读数据过程   第一步:打开文件。用Fliesystem先申明一个对象,然后生成一个子类DistributedFileSystem,这个时候生成FS的实例对象,其实是分布式文件系统HDFS的实例对象......