Hadoop之HDFS

  

1 HDFS概述

  

1.1 HDFS产出背景及定义

  

随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统.HDFS只是分布式文件管理系统中的一种。

  

HDFS (Hadoop分布式文件系统),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

  

HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

  

1.2 HDFS优缺点

  

优点:   

      <李>高容错性   
        <李>数据自动保存多个副本。它通过增加副本的形式,提高容错性李   <李>某一个副本丢失以后,它可以自动恢复李   李
      <李>适合处理大数据李   <李>可构建在廉价机器上,通过多副本机制,提高可靠性李   
  

缺点:   

      <李>不适合低延时数据访问,比如毫秒级的存储数据李   <李>无法高效的对大量小文件进行存储李   <李>不支持并发写入,文件随机修改李   
  

1.3 HDFS组成架构

  

 Hadoop之HDFS

  

 Hadoop之HDFS

  

1.4 HDFS文件块大小

  

HDFS中的文件在物理上是分块存储(块),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2。x版本中是128,老版本中是64。

  

如果寻址时间为100毫秒,即查找目标块的时间是100 ms。

  

寻址时间与传输时间的比例为100:1为最佳状态,因此传输时间为1。

  

目前磁盘的传输速率大概在100 mb/s,取个整大概就是128 mb。

  

2 HDFS的壳操作

  

(1) - help:输出这个命令参数

  

(2) - ls:显示目录信息

  

(3) mkdir:在HDFS上创建目录

  

(4) -moveFromLocal:从本地剪切粘贴到HDFS

  

(5) -appendToFile:追加一个文件到已经存在的文件末尾

  

(6)猫:显示文件内容

  

(7) chgrp chmod,乔恩:Linux文件系统中的用法一样,修改文件所属权限

  

(8) -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去

  

(9) -copyToLocal:从HDFS拷贝到本地

  

(10) - cp:从HDFS的一个路径拷贝到HDFS的另一个路径

  

(11) mv:在HDFS目录中移动文件

  

(12) -:等同于copyToLocal,就是从HDFS下载文件到本地

  

(13) -getmerge:合并下载多个文件,比如HDFS的目录/user/djm/测试下有多个文件:日志。1、log.2 log.3…

  

(14)——:等同于copyFromLocal

  

(15)多边形:显示一个文件的末尾

  

(16) rm:删除文件或文件夹

  

(17)删除文件夹:删除空目录

  

(18)在:统计文件夹的大小信息

  

(19) -setrep:设置HDFS中文件的副本数量

  

3 HDFS客户端操作

  
 <代码类="语言java ">包com.djm.hdfsclient;
  
  进口org.apache.hadoop.conf.Configuration;
  进口org.apache.hadoop.fs。*;
  进口org.junit.After;
  进口org.junit.Before;
  进口org.junit.Test;
  
  进口java.io.IOException;
  进口java.net.URI;
  
  公开课HdfsClient {
  
  文件系统的文件系统=零;
  
  @Before
  公共空间init () {
  
  尝试{
  文件系统=FileSystem.get (URI.create (“hdfs://hadoop102:9000”),新配置(),“djm”);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  }/* *
  *上传文件
  */@Test
  公共空间put () {
  尝试{
  文件系统。copyFromLocalFile(新路径(“C: \ \ \ \ \ \用户管理员桌面\ \ Hadoop入门。海事”),新路径("/"));
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }/* *
  *下载文件
  */@Test
  公共空间下载(){
  尝试{//useRawLocalFileSystem表示是否开启文件校验
  文件系统。copyToLocalFile (false,新的路径("/Hadoop入门。海事”),新路径(“C: \ \ \ \ \ \用户管理员桌面\ \ Hadoop入门1. md”),真的);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }/* *
  *删除文件
  */@Test
  公共空间删除(){
  尝试{//递归表示是否递归删除
  fileSystem.delete(新路径“/Hadoop入门。海事”),真的);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }/* *
  *文件重命名
  */@Test
  公共空间重命名(){
  尝试{
  文件系统。重命名(新路径“/tmp”),新路径(/temp));
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }/* *
  *查看文件信息
  */@Test
  公共空间ls () {
  尝试{
  RemoteIterator

Hadoop之HDFS