zoukankan      html  css  js  c++  java
  • Hadoop框架:HDFS简介与Shell管理命令

    本文源码:GitHub·点这里 || GitEE·点这里

    一、HDFS基本概述

    1、HDFS描述

    大数据领域一直面对的两大核心模块:数据存储,数据计算,HDFS作为最重要的大数据存储技术,具有高度的容错能力,稳定而且可靠。HDFS(Hadoop-Distributed-File-System),它是一个分布式文件系统,用于存储文件,通过目录树来定位文件;设计初衷是管理数成百上千的服务器与磁盘,让应用程序像使用普通文件系统一样存储大规模的文件数据,适合一次写入,多次读出的场景,且不支持文件的修改,适合做数据分析。

    2、基础架构

    HDFS具有主/从体系结构,有两个核心组件,NameNode与DataNode。

    NameNode

    负责文件系统的元数据(MetaData)管理,即文件路径名、数据块ID、存储位置等信息,并配置副本策略,处理客户端读写请求。

    DataNode

    执行文件数据的实际存储和读写操作,每个DataNode存储一部分文件数据块,文件整体分布存储在整个HDFS服务器集群中。

    Client

    客户端,文件切分上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;从NameNode获取文件的位置信息;与DataNode通信读取或者写入数据; Client通过一些命令来访问或管理HDFS。

    Secondary-NameNode

    不是NameNode的热备,但是分担NameNode工作量,比如定期合并Fsimage和Edits,并推送给NameNode;在紧急情况下,可辅助恢复NameNode。

    3、高容错性

    数据块多份复制存储的示意,文件/users/sameerp/data/part-0,复制备份设置为2,存储的block-ids分别为1、3;文件/users/sameerp/data/part-1,复制备份设置为3,存储的block-ids分别为2、4、5;任何单台服务器宕机后,每个数据块至少还存在一个备份服务存活,不会影响对文件的访问,提高整体容错性。

    HDFS中的文件在物理上是分块存储(Block),块的大小可以通过参数dfs.blocksize来配置,块设置太小,会增加寻址时间;块设置的太大,从磁盘传输数据的时间会很慢,HDFS块的大小设置主要取决于磁盘传输速率。

    二、基础Shell命令

    1、基础命令

    查看Hadoop下相关Shell操作命令。

    [root@hop01 hadoop2.7]# bin/hadoop fs
    [root@hop01 hadoop2.7]# bin/hdfs dfs
    

    dfs是fs的实现类

    2、查看命令描述

    [root@hop01 hadoop2.7]# hadoop fs -help ls
    

    3、递归创建目录

    [root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/myfile
    

    4、查看目录

    [root@hop01 hadoop2.7]# hadoop fs -ls /
    [root@hop01 hadoop2.7]# hadoop fs -ls /hopdir
    

    5、剪贴文件

    hadoop fs -moveFromLocal /opt/hopfile/java.txt /hopdir/myfile
    ## 查看文件
    hadoop fs -ls /hopdir/myfile
    

    6、查看文件内容

    ## 查看全部
    hadoop fs -cat /hopdir/myfile/java.txt
    ## 查看末尾
    hadoop fs -tail /hopdir/myfile/java.txt
    

    7、追加文件内容

    hadoop fs -appendToFile /opt/hopfile/c++.txt /hopdir/myfile/java.txt
    

    8、拷贝文件

    copyFromLocal命令和put命令相同

    hadoop fs -copyFromLocal /opt/hopfile/c++.txt /hopdir
    

    9、HDFS文件拷贝到本地

    hadoop fs -copyToLocal /hopdir/myfile/java.txt /opt/hopfile/
    

    10、HDFS内拷贝文件

    hadoop fs -cp /hopdir/myfile/java.txt /hopdir
    

    11、HDFS内移动文件

    hadoop fs -mv /hopdir/c++.txt /hopdir/myfile
    

    12、合并下载多个文件

    基础命令get和copyToLocal命令效果相同。

    hadoop fs -getmerge /hopdir/myfile/* /opt/merge.txt
    

    13、删除文件

    hadoop fs -rm /hopdir/myfile/java.txt
    

    14、查看文件夹信息

    hadoop fs -du -s -h /hopdir/myfile
    

    15、删除文件夹

    bin/hdfs dfs -rm -r /hopdir/file0703
    

    三、源代码地址

    GitHub·地址
    https://github.com/cicadasmile/big-data-parent
    GitEE·地址
    https://gitee.com/cicadasmile/big-data-parent
    

    推荐阅读:编程体系整理

    序号 项目名称 GitHub地址 GitEE地址 推荐指数
    01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
    03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
    04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
    06 SpringBoot框架整合开发常用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
    08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
  • 相关阅读:
    C#方法重载 -0024
    C#表达式体方法 (expression-bodied method )
    C# 匿名类型 -0022
    C# 不可变类型 -0021
    C# 属性 -0020
    C# readonly和const -0019
    C# 类的静态成员和实例成员 -0018
    C#中类和结构体的区别 -0017
    C#预处理器指令 -0016
    微信小程序TabBar定义和配置
  • 原文地址:https://www.cnblogs.com/cicada-smile/p/13750048.html
Copyright © 2011-2022 走看看