[hadoop云计算实战]Hadoop分布式文件系统HDFS

三 20th, 2013

Hadoop云计算实战读书笔记:第4章,p102~p117


HDFS: Hadoop Distributed File System,一个分布式文件系统。

1. HDFS操作

1.1 文件操作

  •     a. 格式化Hadoop: 启动前,需要格式化NameNode.
  •                    $ bin/hadoop namenode -format

  •     b. 启动hadoop, bin目录下有很多启动脚本.  start-all.sh, start-mapred.sh , start-dfs.sh
  •     c. 停止hadoop, stop-all.sh, stop-dfs.sh
  •     d. 建立目录:$bin/hadoop dfs -mkdir metaboydir   
  •                   删除目录:$bin/hadoop  dfs  -rmr  metaboydir

  •     e. 复制文件:  $hadoop fs –put [本地地址] [hadoop目录]      
  •                    $ bin/hadoop dfs -put  /home/metaboy/test.txt   metaboydir/

  •     f . 查看现有文件: $ bin/hadoop dfs  -ls    metaboydir/
  •     g. 查看当前文件系统状态: $ bin/hadoop dfsadmin -report

1.2 管理与更新

  •    a. 退出安全模式
  •                  启动时,NameNode自动进入安全模式,该阶段,文件系统不允许任何修改。系统显示 " Name node is in safe mode"

                    退出:1.当数据块最小百分比数满足配置的最小副本数条件时,会自动退出安全模式

                         2.命令退出,  $bin/hadoop dfsadmin -safemode leave

  •    b. 进入安全模式
  •                  命令:$bin/hadoop dfsadmin -safemode enter

  •    c. 节点添加
  •              1. 在新节点安装hadoop

                 2. 直接从namenode复制配置到新节点

                 3. 修改 $HADOOP_HOME/conf/master文件,加入NameNode主机名

                 4. 在NameNode节点上修改 $HADOOP_HOME/conf/slaves文件,加入新加节点的主机名

                 5. 建立到新加节点无密码的SSH连接

                 6. 运行启动命令: $bin/start-all.sh

  •    d. 负载均衡 
  •                  通过命令重新平衡DataNode上的数据块的分布: $bin/start-balancer.sh

2. FS Shell使用指南

    格式:   bin/hadoop  fs   <args>   (args:  scheme://authority/path,scheme对文件系统是HDFS,对本地文件系统,是file,scheme://authority是可选的)

  •     1. cat : hadoop fs cat URI [URI ….]
  •     2. chgrp: 改变文件所属组
  •                   hadoop  fs  -chgrp  [-R] GROUP  URI    (-R将使改变在目录结构下递归)

  •     3. chmod: 改变文件的权限
  •                   hadoop  fs  -chmod  [-R]  <MODE>  URI

  •     4. chown : 改变文件的拥有者
  •                   hadoop  fs  -chown  [-R] [OWNER][:GROUP]  URI  [URI]

  •     5. copyFromLocal
  •                   hadoop fs -copyFromLocal <localsrc>  URI

  •     6. copyToLocal
  •                  hadoop fs -copyFromLocal <localsrc>  URI

  •     7. cp命令
  •                  hadoop fs -cp URI [URI…]  <dest>

  •     8. du命令: 显示目录下所有文件的大小
  •                 hadoop fs -du IRI

  •     9. dus 显示文件的大小
  •                   hadoop  fs  -dus <args>

  •     10. expunge命令: 清空回收站
  •                  hadoop  fs  -expunge

  •     11. get命令  : 复制文件到本地
  •                  hadoop  fs  -get <src>  <localdst>

  •     12. getmerge命令:  将源目录下所有的文件连接成本地目标文件。addnl是可选项,用于指定在每个文件结尾添加一个换行符。
  •                    hadoop  fs  -getmerge <src> <localdst> [addnl]

  •     13. ls命令
  •                    hadoop fs -ls <args>

  •     14. lsr命令
  •                    hadoop  fs  -lsr <args>      (lsr 类似于  ls -R)

  •     15. mkdir
  •                    hadoop  fs  -mkdir  <paths>

                  在不同主机上创建目录:  hadoop fs -mkdir  hdfs://host1:port1/user/hadoop/dir

  •     16. moveFromLocal
  •                     hadoop fs  -modeFromLocal <src>  <dest>

  •     17. mv命令
  •                     hadoop fs -mv URI  <dest>

  •     18. put命令
  •                    hadoop  fs  -put  <localsrc>  <dest>

  •     19. rm命令
  •                    hadoop fs -rm URI

  •     20. rmr 命令 : rm命令的递归版本
  •                    hadoop fs  -rmr  URI

  •     21. setrep命令 : 改变一个文件的副本系数
  •                    hadoop  fs  -setrep  [-R]  <path>

  •     22. stat命令:返回指定路径的统计信息
  •                    hadoop  fs  -stat  URI

  •     23. tail 命令:
  •                    hadoop  fs  -tail  [-f]  URI

  •     24. test命令:
  •                    hadoop fs  -test -[ezd]  URI

                  -e,  检查文件是否存在

                  -z,  检查文件是否是0字节

                 -d , 检查路径是否是个目录  ,是返回1,否返回0

  •    25. text命令
  •                    hadoop  fs  -text  <src>

  •    26. touchz命令
  •                   hadoop  fs  -touchz URI

3. API使用

  

包名 说明
org.apache.hadoop.conf 系统参数配置文件处理API
org.apache.hadoop.fs 文件系统的抽象,统一文件访问接口
org.apache.hadoop.dfs hdfs模块的实现
org.apache.hadoop.io 定义了通用的I/O API
org.apache.hadoop.jpc 网络服务端和客户端工具,封装网络异步I/O的基础模块
org.apache.hadoop.mapred MapReduce模块的实现,包括任务分发调试
org.apache.hadoop.metrics 定义性能统计信息的API,用于Mapred,DFS模块
org.apache.hadoop.record 根据DDL自动生成他们的编解码函数,支持C++,JAVA
org.apache.hadoop.tools 通用的工具
org.apache.hadoop.util 公用的API
org.apache.hadoop.filecache 提供HDFS的本地缓存,用于加快MapReduce的数据访问速度
org.apache.hadoop.net 封装部分网络功能,DNS,socket
org.apache.hadoop.security 用户和用户组信息
org.apache.hadoop.http 基于Jetty的Http servlet
org.apache.hadoop.log 提供HTTP访问日志

3.1 文件系统的常见操作:

  •     a.  从本地复制文件到HDFS
      Configuration  config = new  Configuration();
       FileSystem  hdfs = FileSystem.get(config);
       Path  srcPath = new Path(srcFile);
       Path  dstPath = new Path(dstFile);
       hdfs.copyFromLocalFile(srcPath,dstPath);
  •    b. 创建HDFS文件
  •                  hdfs.create(path);

  •    c. 重命名HDFS文件
  •                  hdfs.rename(fromPath, toPath);

  •    d. 删除HDFS文件
  •                  hdfs.delete(path);

  •    e. 获取HDFS文件最后修改时间
  •                  hdfs.getFileStatus(path);

  •    f.  检查一个文件是否存在
  •                  hdfs.exists(path);

  •    g. 获取文件在HDFS集群中的位置
  •                  hdfs.getFileStatus(path);

  •    h. 获取HDFS集群中主机名列表
  •                  hdfs.getDataNodeState();





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51926

订阅本站:http://www.wangyuxiong.com/feed

分类: 读书笔记         标签: , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量