HDFS命令操作和高可用

本文介绍了HDFS的命令行操作,如`ls`, `cat`, `mkdir`, `put`, `get`, `chmod`, `chown`,并详细阐述了HDFS高可用性的原理,包括元数据管理、NameNode切换机制、状态管理模块ZKFailover Controller以及确保无脑裂现象的方法。此外,还强调了在实现高可用性过程中需要注意的实战问题和配置细节。" 134003108,13955063,Python程序设计:判断三角形,"['Python', '算法', '逻辑判断', '编程练习', '教育']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HDFS命令操作和高可用

学习目标

  1. 掌握:HDFS的命令行操作

    1. hdfs dfs -ls",“hdfs dfs -cat”,“hdfs dfs -mkdir”,“hdfs dfs -put”,“hdfs dfs -get” “-chmod” ,“-chown”等

      1. 文件操作
      (1) 列出HDFS下的文件
      /usr/local/hadoop$bin/hadoop dfs -ls
      
      (2) 列出HDFS文件下名为in的文档中的文件
      /usr/local/hadoop$bin/hadoop dfs -ls in
      (3) 上传文件
      
      将hadoop目录下的test1文件上传到HDFS上并重命名为test:
      
      /usr/local/hadoop$bin/hadoop dfs -put test1 test
      (4) 文件被复制到本地系统中
      
      将HDFS中的in文件复制到本地系统并命名为getin:
      
      /usr/local/hadoop$bin/hadoop dfs -get in getin
      (5) 删除文档
      
      删除HDFS下名为out的文档:
      
      /usr/local/hadoop$bin/hadoop dfs -rmr out
      (6) 查看文件
      
      查看HDFS下in文件中的内容:
      
      /usr/local/hadoop$bin/hadoop dfs -cat in/*
      (7) 建立目录
      
      /usr/local/hadoop$bin/hadoop dfs -mkdir /user/hadoop/examples(目录/目录名)
      只能一级一级的建目录。
      
      (8) 复制文件
      
      /usr/local/hadoop$bin/hadoop dfs -copyFromLocal 源路径 路径
      (9)通过Hadoop命令把两个文件的内容合并起来
      
      hdfs dfs -getmerge 位于hdfs中的原文件(里面有多个文件) 合并后的文件名
      例如:
      hdfs dfs -getmerge hdfs://Master:9000/data/SogouResult.txt CombinedResult
       注:合并后的文件位于当前目录,不在hdfs中,是本地文件
      
      2. 管理与更新
      (1) 执行基本信息
      
      查看HDFS的基本统计信息:
      
      /usr/local/hadoop$bin/hadoop dfsadmin -report
      (2) 退出安全模式
      
      NameNode在启动时会自动进入安全模式。安全模式是NameNode的一种状态,在这个阶段,文件系统不允许有任何修改。
      
      系统显示Name node in safe mode,说明系统正处于安全模式,这时只需要等待十几秒即可,也可通过下面的命令退出安全模式:
      
      /usr/local/hadoop$bin/hadoop dfsadmin -safemode leave
      (3) 进入安全模式
      
      在必要情况下,可以通过以下命令把HDFS置于安全模式:
      
      /usr/local/hadoop$bin/hadoop dfsadmin -safemode enter
      (4)节点添加
      
      添加一个新的DataNode节点,先在新加节点上安装好Hadoop,要和NameNode使用相同的配置(可以直接从NameNode复制),修改$HADOOP_HOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改$HADOOP_HOME/conf/slaves文件,加入新节点名,再建立新加节点无密码的SSH连接,运行启动命令为:
      
      /usr/local/hadoop$bin/start-all.sh
      (5)负载均衡
      
      HDFS的数据在各个DataNode中的分布可能很不均匀,尤其是在DataNode节点出现故障或新增DataNode节点时。新增数据块时NameNode对DataNode节点的选择策略也有可能导致数据块分布不均匀。用户可以使用命令重新平衡DataNode上的数据块的分布:
      /usr/local/hadoop$bin/start-balancer.sh
      
      hdfs dfs –chown [-R] /user/sunlightcs  
      修改HDFS系统中/user/sunlightcs目录拥有者,选项-R递归执行   
      hdfs dfs –chmod [-R] MODE /user/sunlightcs  
      修改HDFS系统中/user/sunlightcs目录权限,MODE可以为相应权限的3位数或+/-{rwx},选项-R递归执行
      
  2. 掌握:HDFS高可用的原理。

    1. 元数据文件edits的共享原理

      内存中各自保存一份元数据;

      Edits 日志只有 Active 状态的 namenode 节点可以做写操作;

      两个 namenode 都可以读取 edits;

      共享的 edits 放在一个共享存储中管理(qjournal 和 NFS 两个主流实现);

    2. 两个NameNode的切换原理

      Hadoop2.x中的高可靠指的是可以同时启动2个NameNode。

      其中一个处于工作状态(Active ),另一个处于随时待命状态(Standby)。当一个Active NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动将另一个Standby NameNode切换到Active 并继续提供服务。

    3. HA工作要点

      1)元数据管理方式需要改变:

      内存中各自保存一份元数据;

      Edits 日志只有 Active 状态的 namenode 节点可以做写操作;

      两个 namenode 都可以读取 edits;

      共享的 edits 放在一个共享存储中管理(qjournal 和 NFS 两个主流实现);

      2)需要一个状态管理功能模块

      实现了一个 zkfailover, 常驻在每一个 namenode 所在的节点, 每一个 zkfailover 负

      责监控自己所在 namenode 节点, 利用 zk 进行状态标识, 当需要进行状态切换时, 由

      zkfailover 来负责切换,切换时需要防止 brain split 现象的发生。

      3 )必须保证两个 NameNode 之间能够 ssh 无密码登录。

      4 )隔离(Fence ), 即同一时刻仅仅有一个 NameNode对外提供服务

  3. 实战:HDFS的高可用。注意记录笔记。

    1. 注意观察一个命令执行之后是否有error。

    2. 任何一个节点启动不了。需要查看该节点的日志。 日志在hadoop的目录下面logs目录里面。

    3. 注意的问题1 :每台机器必须有不同的主机名。每台机器必须配置hosts

    4. 注意的问题2:每台机器上到底有什么节点。

      node1node2node3node4
      NNNN
      JNJNJN
      DNDNDN

Active NameNode : 一个集群只有一个Active,接受客户端的读写请求,记录edits日志(元数据)。

StandbyNameNode : 一个集群中可能有多个Standby。合并edits和fsimage文件,从而更新fsimage。等待 ActiveNameNode的死亡。

JournalNode: 共享edits日志文件。当ANN写入一条日志的同时,往JournalNode集群中也写入一条。当它接受一条日志,同时通知StandbyNamenode获取。

DataNode: 保存和管理block。并且往两种NameNode同时汇报block的位置信息。

Zookeeper: 它是负责选举算法。选举一个Namenode的状态为Active。同时记录每个Namenode的运行信息。

ZKFC: 监控各自的NameNode(每一个NameNode一定有一个与之对应的ZKFC)。负责NameNode的状态切换。借助ssh服务来切换NameNode的状态(一定要配置SSH服务的免密钥)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值