Hadoop HDFS入门 |
您所在的位置:网站首页 › hadoop操作指南 › Hadoop HDFS入门 |
HDFS集群主要由 NameNode 管理文件系统 Metadata 和 DataNodes 存储的实际数据。 NameNode: NameNode可以被认为是系统的主站。它维护所有系统中存在的文件和目录的文件系统树和元数据 。 两个文件:“命名空间映像“和”编辑日志“是用来存储元数据信息。Namenode 有所有包含数据块为一个给定的文件中的数据节点的知识,但是不存储块的位置持续。从数据节点在系统每次启动时信息重构一次。 DataNode : DataNodes作为从机,每台机器位于一个集群中,并提供实际的存储. 它负责为客户读写请求服务。HDFS中的读/写操作运行在块级。HDFS数据文件被分成块大小的块,这是作为独立的单元存储。默认块大小为64 MB。 HDFS操作上是数据复制的概念,其中在数据块的多个副本被创建,分布在整个节点的群集以使在节点故障的情况下数据的高可用性。 注: 在HDFS的文件,比单个块小,不占用块的全部存储。 在HDFS读操作
数据读取请求将由 HDFS,NameNode和DataNode来服务。让我们把读取器叫 “客户”。下图描绘了文件的读取操作在 Hadoop 中。
在本节中,我们将了解如何通过的文件将数据写入到 HDFS。
在本节中,我们来了解 Java 接口并用它们来访问Hadoop的文件系统。 为了使用编程方式与 Hadoop 文件系统进行交互,Hadoop 提供多种 Java 类。org.apache.hadoop.fs 包中包含操纵 Hadoop 文件系统中的文件类工具。这些操作包括,打开,读取,写入,和关闭。实际上,对于 Hadoop 文件 API 是通用的,可以扩展到 HDFS 的其他文件系统交互。 编程从 HDFS 读取文件 java.net.URL 对象是用于读取文件的内容。首先,我们需要让 Java 识别 Hadoop 的 HDFS URL架构。这是通过调用 URL 对象的 setURLStreamHandlerFactory方法和 FsUrlStreamHandlerFactory 的一个实例琮传递给它。此方法只需要执行一次在每个JVM,因此,它被封闭在一个静态块中。 示例代码 publicclassURLCat { static{ URL.setURLStreamHandlerFactory(newFsUrlStreamHandlerFactory()); } publicstaticvoidmain(String[] args) throwsException { InputStream in = null; try{ in = newURL(args[0]).openStream(); IOUtils.copyBytes(in, System.out, 4096, false); } finally{ IOUtils.closeStream(in); } } }这段代码用于打开和读取文件的内容。HDFS文件的路径作为命令行参数传递给该程序。 使用命令行界面访问HDFS这是与 HDFS 交互的最简单的方法之一。 命令行接口支持对文件系统操作,例如:如读取文件,创建目录,移动文件,删除数据,并列出目录。 可以执行 '$HADOOP_HOME/bin/hdfs dfs -help' 来获得每一个命令的详细帮助。这里, 'dfs' HDFS是一个shell命令,它支持多个子命令。首先要启动 Haddop 服务(使用 hduser_用户),执行命令如下: hduser_@ubuntu:~$ su hduser_ hduser_@ubuntu:~$ $HADOOP_HOME/sbin/start-dfs.sh hduser_@ubuntu:~$ $HADOOP_HOME/sbin/start-yarn.sh一些广泛使用的命令的列表如下 1. 从本地文件系统复制文件到 HDFS hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -copyFromLocal temp.txt /此命令将文件从本地文件系统拷贝 temp.txt 文件到 HDFS。 2. 我们可以通过以下命令列出一个目录下存在的文件 -ls hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -ls /
我们可以看到一个文件 'temp.txt“(之前复制)被列在”/“目录。 3. 以下命令将文件从 HDFS 拷贝到本地文件系统 hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -copyToLocal /temp.txt我们可以看到 temp.txt 已经复制到本地文件系统。 4. 以下命令用来创建新的目录 hduser_@ubuntu:~$ $HADOOP_HOME/bin/hdfs dfs -mkdir /mydirectory
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |