(Hadoop)HDFS常用操作 | 您所在的位置:网站首页 › HDFS操作创建目录 › (Hadoop)HDFS常用操作 |
目录: 注意1、使用前启动hadoop 注意2、三种使用文件系统的shell命令方式 注意3、配置环境 注意4、第一次使用HDFS时 一、hdfs dfs 命令的常用操作(先启动Hadoop) 二、通过Java API操作HDFS (先启动Hadoop) 三、基本类似于Linux的常用操作命令 注意: 1、先我们需要启动Hadoop。转到hadoop目录下,启动hadoop cd /usr/local/hadoop ./sbin/start-dfs.sh 2、命令是以”./bin/hadoop dfs”开头的Shell命令方式,实际上有三种shell命令方式(如果配置好环境变量,可以用下边的第三条命令替换掉本句开头的加粗部分)。 hadoop fs #适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统 hadoop dfs #只能适用于HDFS文件系统 hdfs dfs #跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统 3、配置环境 (注意:hadoop的安装目录为/usr/local下) vim ~/.bashrc #进入编辑,在最前面加入如下单独一行 export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin source ~/.bashrc #使设置生效,现在可以在任意目录中直接使用 hdfs 等命令了 4、第一次使用HDFS时 Hadoop系统安装好以后,第一次使用HDFS时,需要首先在HDFS中创建用户目录 : hdfs dfs -mkdir -p /user/hadoop #由于采用的是hadoop用户登录,所以在HDFS中创建一个“/user/hadoop”用户目录,本地上传的文件都会被保存在/user/hadoop下。 一、hdfs dfs命令的常用操作(提前启动hadoop并配置好PATH环境变量) 1、显示帮助 ./bin/hadoop fs #显示fs支持的所有命令 ./bin/hadoop fs -help put #查看put命令如何使用 2、创建目录—— -mkdir hdfs dfs -mkdir test #在用户目录(/user/hadoop)下创建一个test目录 hdfs dfs -mkdir /test #在HDFS的给目录(/)下创建一个test目录 hdfs dfs -mkdir -p /test1/test2 #创建多级目录,加入参数“-p” 3、显示文件相关信息—— -ls hdfs dfs -ls #列出HDFS上的所有目录 hdfs dfs -ls . #显示HDFS中与当前用户对应的用户目录下的内容 hdfs dfs -ls ./test #显示HDFS中./test(指定文件)的信息 4、显示文件内容—— -cat hdfs dfs -cat ./test.txt #显示文件内容 5、文件上传到HDFS中—— -put / -appendToFile / -copyFromLocal hdfs dfs -put /home/hadoop/下载/file ./ #将本地/home/hadoop/下载/file 文件目录下的file上传到HDFS中的./(即user/hadoop)目录下 hdfs dfs -appendToFile /home/hadoop/下载/file ./ #若文件存在,则追加到file文件末尾 hdfs dfs -copyFromLocal /home/hadoop/下载/file ./ #若HDFS中文件已存在,则覆盖file原有文件 6、下载HDFS中的文件—— -get / -copyToLocal hdfs dfs -get ./file /home/hadoop/下载 #HDFS中的file文件下载到本地的 下载 目录下 hdfs dfs -copyToLocal ./file /home/hadoop/下载/file1 #若本地存在该文件,对文件重命名 7、在HDFS中移动文件—— -mv hdfs dfs -mv ./file ./test #将file移动到test文件夹下 8、删除HDFS中的指定文件—— -rm hdfs dfs -rm ./file #删除file文件 hdfs dfs -rm -r ./test #删除test目录 二、通过Java API操作HDFS 1、写入到HDFS(会自动在HDFS中创建一个文件) import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path; public class Write { public static void main(String[] args) { Configuration conf =new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); String filename="test";//要写入的文件名 byte[] buff="hello World!hh\n".getBytes();//要写入的内容 try { FileSystem fs=FileSystem.get(conf); FSDataOutputStream os=fs.create(new Path(filename)); os.write(buff, 0, buff.length); System.out.println("内容成功写入到"+filename); os.close(); fs.close(); } catch (IOException e) { e.printStackTrace(); } }} 2、读取HDFS中的文件内容 import java.io.BufferedReader;import java.io.InputStreamReader;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path; public class Read { public static void main(String[] args) { Configuration conf =new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); Path filename=new Path("test");//要读取的文件名 try { FileSystem fs=FileSystem.get(conf); FSDataInputStream getIt=fs.open(filename); BufferedReader r=new BufferedReader(new InputStreamReader(getIt)); String content=null; while((content=r.readLine())!=null)//一行一行的读,直到为空 { System.out.println(content); } r.close();//关闭文件 fs.close();//关闭HDFS }catch(Exception e) { e.printStackTrace(); System.out.println(filename+"文件不存在"); } }}
本博客参考了: 第三章 分布式文件系统HDFS 学习指南 (林子雨) http://dblab.xmu.edu.cn/blog/290-2/ 常用的HDFS操作 https://www.cnblogs.com/ZJdiem/p/11306567.html |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |