hdfs学习笔记整理

目录

 

hdfs文件系统

    架构图

各个组件介绍

namenode:集群主节点,管理集群各种数据,维护元数据

secondaryNameNode:高可用模式没有

journalNode高可用才有

DataNode从节点

常用文件命令

访问hdfs文件的方式

1.Api访问文件

 2.文件系统方式访问数据


hdfs文件系统

 

    架构图

hdfs学习笔记整理_第1张图片

hdfs学习笔记整理_第2张图片

元数据和普通数据存储的位置都在hdfs-site.xml中配置,元数据是启动后会加载磁盘文件到内存

磁盘路径在hdfs-site.xml上配置,下面是主要得分配置说明

存放namenode的名称表(fsimage)的目录,目录用逗号隔开,各个目录内的内容相同,用于冗余

		dfs.namenode.name.dir
		file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
	

存放namenode的事务文件(edits)的目录,如果这是一个逗号分隔的目录列表,那么事务文件在所有目录中被复制,用于冗余。默认与dfs.namenode.name.dir属性目录一样
dfs.namenode.edits.dir
		file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
	
	DFS secondary name node存放临时镜像(fsimage)的目录。如果这是一个逗号分隔的目录列表,则在所有目录中复制该图像以进行冗余

		dfs.namenode.checkpoint.dir
		file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
	
在所有目录中复制该图像以进行冗余

		dfs.namenode.checkpoint.edits.dir
		file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
	

各个组件介绍

namenode:集群主节点,管理集群各种数据,维护元数据

  • edits:元数据更新先更新edits,edits在定期与fsimage合并
  • fsimage:完整的元数据镜像,比较大,hdfs启动后加载内存中
  • 元数据信息:文件名称,文件路径,文件的大小,文件的权限

secondaryNameNode:高可用模式没有

  • 作用:辅助管理元数据定期合并edits和fsimage
    • 策略有两种
      • 事务的数量:dfs.namenode.checkpoint.txns配置指定,NameNode上未检查的事务的数量达到该值时,将会启动紧急检查点而不管 dfs.namenode.checkpoint.period 设置的时间间隔是否有效,默认值为1000000
      • 时间: dfs.namenode.checkpoint.period 默认一小时
  • 合并架构图
    • hdfs学习笔记整理_第3张图片
  • 合并过程
    • secnonaryNN通知NameNode切换editlog
    • get请求获取edits数据和fsimage
    •  secondaryNN将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage
    • secondaryNN将新的fsimage发回给NameNode(http post)
    • NameNode用新的fsimage替换旧的fsimage
    • namenode停用edits,使用新的edits

journalNode高可用才有

  • 作用:主要用于同步元数据信息,保证两个namenode的元数据信息是一致的

DataNode从节点

  • 作用存储数据,负责处理读写,读写的请求是namenode来处理,
  • block块存储各种数据,大小128m,hdfs-site.xml可以更改
  • 128是分块的界限;一个130m的文件占用两个block,实际占用空间是130m,不是256m

常用文件命令

  • hdfs  dfs   -ls  /  查看根路径
  • hdfs dfs  -mkdir  -p   /xx/xxx  在hdfs上面递归的创建文件夹
  • hdfs  dfs  -mv  hdfsSourceDir   hdfsDestDir 移动文件
  • hdfs  dfs -put  localDir  hdfsDir   将本地文件系统的文件或者文件夹放到hdfs上面去
  •  hdfs  dfs  -cp   hdfsSourceDIr   hdfsDestDir   拷贝文件或者文件夹
  • hdfs  dfs -cat  hdfsDir 查看hdfs的文件内容
  • hdfs  dfs  -rm   [-r]  (递归)删除文件或者文件夹
  • hdfs  dfs  -chmod -R  777  /xxx 更改权限
  •  hdfs  dfs  -chown  -R hadoop:hadoop  /xxx hadoop 改变某个文件或者文件夹的所属的用户以及用户组
  • hadoop dfsadmin –safemode enter 退出安全模式
  • hadoop dfsadmin –safemode enter 进入安全模式

访问hdfs文件的方式

1.Api访问文件

  • 流程
    • 先注册hdfs 的url,让java代码能够识别hdfs的url形式URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
    • 定义访问的url地址
    • 打开文件输入流inputStream = new URL(url).openStream();

 2.文件系统方式访问数据

  • Configuration:该类的对象封转了客户端或者服务器的配置,直接创建Configuration configuration = new Configuration();
  •  FileSystem:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作 FileSystem fs = FileSystem.get(conf)
  • FileSystem获取方式
  • 1.URL执行路径:
    FileSystem fileSystem = FileSystem.get(new URI("hdfs://node:8020"), configuration);
    2.configuration中指定路径
     Configuration configuration = new Configuration();
     configuration.set("fs.defaultFS","hdfs://node:8020");
     FileSystem fileSystem = FileSystem.get(new URI("/"), configuration);
    3. FileSystem.newInstance创建
      Configuration configuration = new Configuration();
      FileSystem fileSystem = FileSystem.newInstance(new URI("hdfs://192.168.52.100:8020"), configuration)
    4.FileSystem.newInstance创建configuration中指定路径
     Configuration configuration = new Configuration();
     configuration.set("fs.defaultFS","hdfs://1nodechd:8020");
     FileSystem fileSystem = FileSystem.newInstance(configuration);

你可能感兴趣的:(hadoop之hdfs学习总结)