`
sunasheng
  • 浏览: 122752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

读书笔记2:Hadoop组件-(1)HDFS的文件操作

阅读更多

 

1 HDFS 文件操作

HDFS是一种文件系统,是专门为 MapReduce 这类框架下的大规模分布式数据处理而设计的。

文件命令的格式: hadoop fs -cmd <args>

URI:scheme://authority/path

scheme类似于一个协议,可以是 file 或者 hdfs

authority NameNode 的主机名

path是文件或者目录的路径

hdfs://localhost:9000/user/chuck/example.txt在本机的 9000 端口上以标准伪分布式模型运行 HDFS

可以使用cat 命令查看文件内容:

Hadoop fs -cat hdfs://localhost:9000/user/chuck/example.t

 

·添加文件和目录

HDFS有一个默认的工作目录 user/$USER    (USER 是你登录的用户名 )

但是这个默认的工作目录需要我们手工建立

hadoop fs -mkdir /user/yourusername (hadoop mkdir 命令自动创建父目录 )

查看当前目录或当前目录下的文件:

hadoop fs -ls /        (会显示根目录下的 /user 的信息 )

查看当前目录或当前目录下的文件以及所有子目录、子文件:

hadoop fs -lsr/       (会显示所有的文件和子目录的信息 )

将本地文件example.txt 复制到 HDFS 文件系统中:

hadoop fs -put example.txt  . (注意:命令最后的 . 表示默认放到工作目录 )

hadoop fs -put example.txt /user/yourusername    (与上一条命令等价 )

·检索文件

HDFS 文件系统中的文件复制到本地的当前工作目录下:

hadoop fs -get example.txt  . 

管道的使用:

hadoop fs -cat example.txt | head

查看文件的最后一千个字节:

hadoop fs -tail example.txt

·删除文件

hadoop fs -rm example.txt      (rm命令还可以用于删除空目录 )

·查阅帮助

获取hadoop 版本中的命令列表

hadoop fs

查看命令的详细信息:

hadoop fs -help ls

2,编程读写 HDFS

例如我们要使用hadoop 来操作 Apache 的日志文件,由于 hadoop 处理单个大文件相对于处理多个小文件的效率要高,所以我们考虑在将文件向 HDFS 复制的过程中将其合并,但是 hadoop 的命令中只有 getmerge (把一组 HDFS 文件复制到本地计算机之前进行合并)    这正好与我们要的反过来,所以我们还是得使用 Hadoop API 自己编写了:

代码剖析:

Configuration conf =  new  Configuration(); //Configuration 用于保留键/值配置参数的特殊类

FileSystem hdfs = FileSystem.get(conf);

FileSystem local = FileSystem.getLocal(conf); //专用于本地的文件系统的FileSystem对象

Path inputDir =  new  Path(args[]); //Path用于编制文件和目录名

FileStatus[] inputFiles = local.listStatus(inputDir); //FileStatus存储文件和目录的元数据,listStatus(dir)获取dir目录下的文件列表

FSDataInputStream in = loacl.open(inputFiles[i].getPath()); //FSDataInputStream用于访问Path,读取文件

byte  buffer[] =  new   byte [256];

i nt  bytesRead = 0;

while ((bytesRead = in.read(buffer))>0)

{

}

in.close();

/*将数据写入HDFS

Path hdfsFile = new Path(args[]);

FSDataOutputStream out = hdfs.create(hdfsFile);//FSDataOutputStream用于将数据写入HDFS

out.write(buffer,0,bytesRead);

out.close();

*/

程序PutMerge.java

public   class  PutMerge {

public   static   void  main(String args[])

{

String inputString =  "" ; //输入目录

String  outputString  =  "" ; //输出目录

Configuration conf =  new  Configuration();

FileSystem hdfs = FileSystem.get(conf);

FileSystem local = FileSystem.getLocal(conf);

//设定输入目录和输出目录

Path inputDir =  new  Path(inputString);

Path hdfsFile =  new  Path( outputString )

try {

FileStatus[] inputFiles = local.listStatus(inputDir); //得到本地文件列表

FSDataOutputStream out = hdfs.create(hdfsFile); //生成HDFS输出流

for ( int  i = 0;i<inputFiles.length;i++)

{

System.out.println(inputFiles[i].getPath().getName());

FSDataInputStream in = loacl.open(inputFiles[i].getPath()); //打开本地输入流

byte  buffer[] =  new   byte [256];

int  bytesRead = 0;

while ((bytesRead = in.read(buffer))>0)

{

out.write(buffer,0,bytesRead);

}

in.close();

}

out.close();

} catch (Exception e)

{

e.printStackTrace();

}

}

}

 

分享到:
评论

相关推荐

    hadoop完全分布式集群搭建笔记

    - 修改`hdfs-site.xml`文件,设置副本数: - `&lt;value&gt;3&lt;/value&gt;` #### 六、启动Hadoop集群 **1. 格式化HDFS** - 切换到`hadoop`用户: - `su hadoop` - 执行格式化命令: - `hadoop namenode -format` **2. ...

    Hadoop学习文档笔记,基本原理 HDFS

    它的核心组件包括Hadoop分布式文件系统(HDFS)和MapReduce计算模型。本文将深入探讨HDFS的基本原理和操作,以及如何通过Java API进行文件操作。 Hadoop分布式文件系统(HDFS)是Google文件系统(GFS)的一种实现,...

    个人笔记_hadoop-hdfs架构详解.docx

    Hadoop HDFS(Hadoop Distributed File System)是大数据领域中的关键组件,尤其在处理大规模数据存储方面扮演着重要角色。HDFS的设计旨在处理超大文件,支持流式数据访问,具备高吞吐率、低成本、易扩展和高容错性...

    安装笔记:hadoop+hbase+sqoop2+phoenix+kerberos

    【标题】:“安装笔记:hadoop+hbase+sqoop2+phoenix+kerberos” 【描述】:在本文中,我们将探讨如何在两台云主机(实际环境可能需要三台或更多)上安装Hadoop、HBase、Sqoop2、Phoenix以及Kerberos的详细过程,...

    Hadoop笔记(word版).zip_Hadoop配置_大数据

    2. **配置文件修改**:主要修改`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`和`yarn-site.xml`这四个核心配置文件。例如,在`core-site.xml`中配置HDFS默认名称节点地址,在`hdfs-site.xml`中设置副本数、...

    Talend学习笔记2——mysql文件导入到HDFS

    ### Talend学习笔记2——mysql文件导入到HDFS #### 关键知识点概览 - **Talend Data Integration** - **MySQL 数据库** - **Hadoop 和 HDFS(Hadoop Distributed File System)** #### 详细知识点说明 ##### 1. ...

    hadoop3.x笔记.docx

    HDFS(Hadoop Distributed File System)是 Hadoop 的核心组件之一,负责存储和管理大规模数据。HDFS 由 NameNode、DataNode 和 SecondaryNameNode 组成。 1. NameNode(nn):负责管理元数据,维护文件系统的目录...

    Hadoop平台技术 模块1 Hadoop概述-单元设计.docx

    反思实践,整理学习笔记课后作业(1) 在职教云平台上完成相关练习题(2) 写一篇关于 Hadoop 集群搭建的心得体会教师讲解职教云教师:布置作业,提供指导学生:深入思考,完成作业 【知识点详解】 Hadoop 是一个开源...

    HADOOP学习笔记

    2. 安装Hadoop:下载最新版本的Hadoop,配置环境变量,设置Hadoop的配置文件(如core-site.xml、hdfs-site.xml、yarn-site.xml等)。 3. 配置HDFS:设置NameNode和DataNode的目录,配置NameNode的地址。 4. 初始化...

    hadoop-2.6.0-cdh5.4.3:基于hadoop-2.6.0-cdh5.4.3版本的二进制阅读,以注释和博客的形式记录阅读笔记

    1. **Hadoop分布式文件系统(HDFS)**:HDFS是Hadoop的核心组件,设计为运行在廉价硬件上,提供高容错性和高吞吐量的数据访问。它将大文件分割成块,并在多台机器上复制这些块,确保数据的可靠性。 2. **MapReduce*...

    hadoop安装及详细学习笔记

    - 配置 Hadoop 相关配置文件,如 `core-site.xml`, `hdfs-site.xml`, `mapred-site.xml` 和 `yarn-site.xml`。 #### HDFS 文件系统 1. **HDFS 命令**: - `hdfs dfs -ls /`:列出 HDFS 根目录下的文件。 - `...

    hadoop学习总结1-5

    学习Hadoop通常会涉及到本地环境的搭建,包括安装Java环境、下载Hadoop二进制包、配置环境变量、修改Hadoop配置文件如`core-site.xml`、`hdfs-site.xml`和`yarn-site.xml`等。 7. **Hadoop实战**: 在掌握了基本...

    hadoop 笔记

    - **3.5.1 配置**:编辑`core-site.xml`和`hdfs-site.xml`等配置文件。 - **3.5.2 免密码ssh设置**:由于是在单机模式下运行,无需设置免密码SSH登录。 - **3.5.3 执行**:使用`bin/hdfs namenode -format`格式化...

    传智黑马赵星老师hadoop七天课程资料笔记-第二天(全)

    2. **HDFS(Hadoop Distributed File System)**:Hadoop的核心组件之一,是一个高容错性的分布式文件系统。HDFS的设计目标是处理PB级别的数据,通过将数据分布在大量的廉价硬件上,实现高可用性和高吞吐量的数据...

    hadoop常识讲义+笔记.zip

    2. Hadoop组件: - HDFS(Hadoop Distributed File System):Hadoop的核心组成部分之一,是一个分布式文件系统,具备高容错性和高吞吐量,用于存储大量数据。 - MapReduce:Hadoop的计算引擎,通过将大规模数据集...

    hadoop3.1.3学习资料

    - 配置文件详解,如`core-site.xml`, `hdfs-site.xml`, `mapred-site.xml` 和 `yarn-site.xml`。 - 集群安全设置,包括Kerberos认证。 6. **实战操作**: - 数据上传与下载,使用`hadoop fs`命令进行操作。 - ...

    基于hadoop-2.6.0-cdh5.4.3版本的源码阅读,以注释及博客的形式记录阅读笔记.zip

    《Hadoop 2.6.0-cdh5.4.3 源码解析与学习笔记》 在当今大数据处理领域,Hadoop 是一个至关重要的开源框架,它为大规模数据处理提供了分布式计算的能力。本资料主要针对 Hadoop 2.6.0-cdh5.4.3 版本进行源码阅读,...

Global site tag (gtag.js) - Google Analytics