大数据Hadoop学习二

HDFS存储原理

HDFS的Shell操作

进程启停管理
一键启停脚本

Hadoop HDFS组件内置了HDFS集群的一键启停脚本

  • $HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群

    执行原理:
    在执行此脚本的机器上,启动SecondaryNameNode
    读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,启动NameNode
    读取workers内容,确认DataNode所在机器,启动全部DataNode

  • $HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群

    执行原理:
    在执行此脚本的机器上,关闭SecondaryNameNode
    读取core.site.xml内容(fs.defaultFS项),确认NameNode所在机器,关闭NameNode
    读取workers内容,确认DataNode所在机器,关闭全部DataNode

    单进程启停

    1.$HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停
    用法:

    hadoop-daemon.sh (start status|stop)(namenode secondarynamenode datanode)
    

    2.$HADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停
    用法:

    hdfs --daemon (start|status|stop)(namenode secondarynamenode datanode)
    
    文件系统操作命令
    HDFS文件系统基本信息

    与linux系统一样,均使用/作为根目录的组织形式

    image

    image
    需要根据协议头(file:///或hdfs://node1:8020/)区分
    使用的时候不需要使用协议头(可省略)
    如果需要提供Linux路径的参数,会自动识别为file://
    如果需要提供HDFS路径的参数,会自动识别为hdfs://
    除非明确需要写或者不写会有BUG,否则一般不用谢协议头
    关于HDFS文件系统的操作命令,Hadoop提供了两套命令体系
    hadoop命令(老版本),用法:

    hadoop fs [generic options]
    

    hdfs命令(新版本),用法:

    hdfs dfs [generic options]
    

    1.创建文件夹

    hadoop fs -mkdir [-p] <path> ...
    hdfs dfs -mkdir [-p] <path> ...
    

    path为待创建的目录
    -p选项的行为与Linux mkdir -p一致,它会沿着路径创建父目录
    例如:

    hadoop fs -mkdir -p /itcast/bigdata
    hdfs fs -mkdir -p /itheima/hadoop
    

    2.查看指定目录下的内容

    hadoop fs -ls [-h] [-R] [<path> ...]
    hadf fds -ls [-h] [-R] [<path> ...]
    

    path指定目录路径
    -h 人性化显示文件size
    -R 递归查看指定目录及其子目录

    image
    3.上传文件到HDFS指定目录下

    hadoop fs -put [-f] [-p] <localsrc> ... <dst>
    hdfs dfs -put [-f] [-p] <localsrc> ... <dst>
    

    -f 覆盖目标文件(已存在下)
    -p 保留访问和修改时间,所有权和权限
    localsrc 本地文件系统(客户端所在机器)
    dst 目标文件系统(HDFS)
    localsrc ... dst 从Linux上的某位置上传到HDFS的位置
    例如:

    hadoop fs -put words.txt /itcast
    hdfs dfs -put file:///etc/profile hdfs://node1:8020/itcast
    

    image
    4.查看HDFS文件内容

    hadoop fs -cat <src> ...
    hdfs dfs -cat <src> ...
    

    读取指定文件全部内容,显示在标准输出控制台
    例如:

    hadoop fs -cat /itcast/words.txt
    hdfs dfs -cat /itcast/profile
    

    读取大文件可以使用管道符配合more

    hadoop fs -cat <src> | more
    hdfs dfs -cat <src> | more
    

    image
    结果显示出后,可以空格翻页
    image
    查看完后,点击q退出该页面即可
    5.下载HDFS文件

    hadoop fs -get [-f] [-p] <src> ... <localdst>
    hdfs dfs -get [-f] [-p] <src> ...<localdst>
    

    下载文件到本地文件系统指定目录,localdst必须是目录
    -f 覆盖目标文件(已存在下)
    -p 保留访问和修改时间,所有权和权限
    src ...localdst是从hdfs向Linux下载

    可以先删除上面我们Linux本地的文件
    image

    下载到Linux当前目录就打一个.即可
    image
    6.拷贝HDFS文件

    hadoop fs -cp [-f] <src> ... <dst>
    hdfs dfs -cp [-f] <src> ... <dfs>
    

    -f覆盖目标文件(已存在下)
    这里执行的cp不是Linux中的cp而是HDFS中的
    src ... dst指的是从HDFS到HDFS复制

    image

    cp和Linux中的操作一样兼具改名的操作

    image
    7.追加数据到HDFS文件中(对于文件内容只能是删除和追加不能修改某一行)

    hadoop fs -appendToFile <localsrc> ... <dst>
    hdfs dfs -appendToFile <localsrc> ... <dst>
    

    将所有给定本地文件的内容追加到给定dst文件
    dst如果文件不存在,将创建该文件
    如果为-,则输入为从标准输入中读取

    image
    8.HDFS数据移动操作

    hadoop fs -mv <src> ... <dfs>
    hdfs dfs -mv <src> ... <dfs>
    

    移动文件到指定文件夹下
    可以使用该命令移动数据,重命名文件的名称

    image

    当然也可以同步完成改名操作

    image
    9.HDFS数据删除操作

    hadoop fs -rm -r [-skipTrash] URI [URI ...]
    hdfs dfs -rm -r [-skipTrash] URI [URI ...]
    

    删除指定路径的文件或文件夹
    -skipTrash跳过回收站,直接删除(回收站功能默认是关闭的,如果要开启需要在core-site.xml内配置:

    <property>
    <name>fs.trash.interval</name>
    <value>1440</value>
    </property>
    
    <property>
    <name>fs.trash.checkpoint.interval</name>
    <value>120</value>
    </property>
    

    1440指数据保留时间为一天
    120是指整个回收站检查的时间间隔为120分钟
    以上配置不需要重启集群,在那个机器配置的,在哪个机器执行命令就生效,回收站默认位置:/user/用户名(hadoop)/.Trash

    image

    image

    删除指定的文件夹要加-r

    image

    image

    删除文件

    image
    其他命令:(命令官方指导文件)
    https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-common/FileSystemShell.html

    HDFS WEB浏览

    除了使用命令操作HDFS文件系统外,在HDFS的WEB UI上也可以查看HDFS文件系统的内容

    image

    image
    在以上页面是没有权限对文件和文件夹操作的,但是如果想要操作就要配置core-site.xml(但是不推荐以上做法,如果给高权限,会有很大的安全问题,造成数据泄露或丢失)
    添加以下内容:

    <property>
    <name>hadoop.http.staticuser.user</name>
    <value>hadoop</value>
    </property>
    
    

    HDFS超级用户
    Superuser不同(超级用户不同)
    Linux的超级用户是root
    HDFS文件系统的超级用户:是启动namenode的用户(也就是现在我们使用的hadoop系统)
    如果想要修改权限的话,在HDFS中也可以使用和Linux一样的授权语句:chown和chmod

    image

    HDFS客户端-Jetbrians产品插件

    了解在Jetbrians产品中安装使用BigData Tools插件
    BigData Tools插件可以帮助我们方便的操作HDFS,比如
    IntelliJ IDEA(JAVA IDE)
    PyCharm (Python IDE)
    DataGrip (SQL IDE)
    以上均可使用BigData Tool插件
    在此演示IntelliJ IDEA

    image

    配置windows
    配合插件使用
    image

    完成解压
    image
    配置环境变量
    image

    image

    然后将下载好的hadoop.dll和winutils.exe放入bin文件夹

    image
    完成以上内容记得重启IDE软件
    配置插件

    image
    输入相应的内容,点击测试连接(验证是否连接成功)
    image
    然后点击确定配置就生效了

    image
    右键点击文件夹可以完成文件的上传
    image

    双击可以直接查看文件内容
    当然也可以修改(ctrl+s保存即可)(本质是直接上传并覆盖)
    image

  • posted @ 2025-08-02 12:28  haoyinuo  阅读(6)  评论(0)    收藏  举报