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();
}
}
}
|
分享到:
相关推荐
- 修改`hdfs-site.xml`文件,设置副本数: - `<value>3</value>` #### 六、启动Hadoop集群 **1. 格式化HDFS** - 切换到`hadoop`用户: - `su hadoop` - 执行格式化命令: - `hadoop namenode -format` **2. ...
它的核心组件包括Hadoop分布式文件系统(HDFS)和MapReduce计算模型。本文将深入探讨HDFS的基本原理和操作,以及如何通过Java API进行文件操作。 Hadoop分布式文件系统(HDFS)是Google文件系统(GFS)的一种实现,...
Hadoop HDFS(Hadoop Distributed File System)是大数据领域中的关键组件,尤其在处理大规模数据存储方面扮演着重要角色。HDFS的设计旨在处理超大文件,支持流式数据访问,具备高吞吐率、低成本、易扩展和高容错性...
【标题】:“安装笔记:hadoop+hbase+sqoop2+phoenix+kerberos” 【描述】:在本文中,我们将探讨如何在两台云主机(实际环境可能需要三台或更多)上安装Hadoop、HBase、Sqoop2、Phoenix以及Kerberos的详细过程,...
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 Data Integration** - **MySQL 数据库** - **Hadoop 和 HDFS(Hadoop Distributed File System)** #### 详细知识点说明 ##### 1. ...
HDFS(Hadoop Distributed File System)是 Hadoop 的核心组件之一,负责存储和管理大规模数据。HDFS 由 NameNode、DataNode 和 SecondaryNameNode 组成。 1. NameNode(nn):负责管理元数据,维护文件系统的目录...
反思实践,整理学习笔记课后作业(1) 在职教云平台上完成相关练习题(2) 写一篇关于 Hadoop 集群搭建的心得体会教师讲解职教云教师:布置作业,提供指导学生:深入思考,完成作业 【知识点详解】 Hadoop 是一个开源...
2. 安装Hadoop:下载最新版本的Hadoop,配置环境变量,设置Hadoop的配置文件(如core-site.xml、hdfs-site.xml、yarn-site.xml等)。 3. 配置HDFS:设置NameNode和DataNode的目录,配置NameNode的地址。 4. 初始化...
1. **Hadoop分布式文件系统(HDFS)**:HDFS是Hadoop的核心组件,设计为运行在廉价硬件上,提供高容错性和高吞吐量的数据访问。它将大文件分割成块,并在多台机器上复制这些块,确保数据的可靠性。 2. **MapReduce*...
- 配置 Hadoop 相关配置文件,如 `core-site.xml`, `hdfs-site.xml`, `mapred-site.xml` 和 `yarn-site.xml`。 #### HDFS 文件系统 1. **HDFS 命令**: - `hdfs dfs -ls /`:列出 HDFS 根目录下的文件。 - `...
学习Hadoop通常会涉及到本地环境的搭建,包括安装Java环境、下载Hadoop二进制包、配置环境变量、修改Hadoop配置文件如`core-site.xml`、`hdfs-site.xml`和`yarn-site.xml`等。 7. **Hadoop实战**: 在掌握了基本...
- **3.5.1 配置**:编辑`core-site.xml`和`hdfs-site.xml`等配置文件。 - **3.5.2 免密码ssh设置**:由于是在单机模式下运行,无需设置免密码SSH登录。 - **3.5.3 执行**:使用`bin/hdfs namenode -format`格式化...
2. **HDFS(Hadoop Distributed File System)**:Hadoop的核心组件之一,是一个高容错性的分布式文件系统。HDFS的设计目标是处理PB级别的数据,通过将数据分布在大量的廉价硬件上,实现高可用性和高吞吐量的数据...
2. Hadoop组件: - HDFS(Hadoop Distributed File System):Hadoop的核心组成部分之一,是一个分布式文件系统,具备高容错性和高吞吐量,用于存储大量数据。 - MapReduce:Hadoop的计算引擎,通过将大规模数据集...
- 配置文件详解,如`core-site.xml`, `hdfs-site.xml`, `mapred-site.xml` 和 `yarn-site.xml`。 - 集群安全设置,包括Kerberos认证。 6. **实战操作**: - 数据上传与下载,使用`hadoop fs`命令进行操作。 - ...
《Hadoop 2.6.0-cdh5.4.3 源码解析与学习笔记》 在当今大数据处理领域,Hadoop 是一个至关重要的开源框架,它为大规模数据处理提供了分布式计算的能力。本资料主要针对 Hadoop 2.6.0-cdh5.4.3 版本进行源码阅读,...