赞
踩
解压到本地磁盘
配置环境变量
添加winutils.exe和hadoop.dll
Hadoop本身对Windows的支持并不友好,如果需要完整使用,需要将winutils.exe和hadoop.dll两个文件移动到%HADOOP_HOME%\bin目录
修改hadoop-env.cmd
- @rem 这个是注释的内容
- @rem 设置JAVA_HOME,使用PROGRA~1表示Program Files文件夹
- set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_311
验证
hadoop version
解压解包
tar -zxvf hadoop-3.3.1-aarch64 -C /opt/softwares
配置环境变量
- vim ~/.bash_profile
-
- export HADOOP_HOME=/opt/softwares/hadoop-3.3.1
- export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOOME/sbin
验证
hadoop version
- <dependencies>
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-common</artifactId>
- <version>3.3.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-client</artifactId>
- <version>3.3.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
- <dependency>
- <groupId>org.apache.hadoop</groupId>
- <artifactId>hadoop-hdfs</artifactId>
- <version>3.3.1</version>
- </dependency>
- </dependencies>
- @Test
- public void testGetFileSystem() throws IOException {
- //创建配置对象,用于加载配置信息(四个默认的配置文件:core-default.xml,hdfs-default.xml,mapred-default.xml,yarn-default.xml)
- Configuration conf = new Configuration();
- //修改fs.defaultFS属性的值
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- //使用FileSystem类的静态方法get(Configuration conf);返回fs.defaultFS定义的文件系统
- FileSystem fs = FileSystem.get(conf);
- System.out.println("文件系统对象的类型名:"+fs.getClass().getName());
- }
- @Test
- public void testFileUpload() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- FileSystem fs = FileSystem.get(conf);
- //将本地的一个文件D:/file1,上传到HDFS上 /file1
- //1. 使用Path描述两个文件
- Path localPath = new Path("D:/file1");
- Path hdfsPath = new Path("/file1");
- //2.调用上传方法
- fs.copyFromLocalFile(localPath,hdfsPath);
- //3.关闭
- fs.close();
- System.out.println("上传成功");
- }
- @Test
- public void testFileDownload() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:8020");
- FileSystem fs = FileSystem.get(conf);
- //从HDFS上下载一个文件/file1,下载到本地 D:/file2
- //1. 使用Path描述两个文件
- Path hdfsfile = new Path("/file1");
- Path local = new Path("D:/file2");
- //2. 调用下载方法进行下载
- fs.copyToLocalFile(hdfsfile,local);
- fs.close();
- System.out.println("下载成功");
- }
- @Test
- public void testMkdir() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- FileSystem fs = FileSystem.get(conf);
-
- //1. 测试创建目录,描述一个目录
- Path hdfsfile = new Path("/dir1");
- //2. 调用创建目录的方法
- fs.mkdirs(hdfsfile);
- fs.close();
- System.out.println("创建成功");
- }
- @Test
- public void testDelete() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- FileSystem fs = FileSystem.get(conf);
-
- //1. 测试删除目录,描述一个目录
- Path hdfsfile = new Path("/dir1");
- //2. 调用创建目录的方法
- fs.delete(hdfsfile,true);
- fs.close();
- System.out.println("删除成功");
- }
- @Test
- public void testRename() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- FileSystem fs = FileSystem.get(conf);
-
- //1. 测试重命名,将file1改为file01
- Path oldName = new Path("/file1");
- Path newName = new Path("/file01");
- //2.调用重命名方法
- fs.rename(oldName,newName);
- fs.close();
- System.out.println("命名成功");
- }
- @Test
- public void putFile() throws IOException, URISyntaxException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- //1 连接HDFS 文件系统
- Configuration conf=new Configuration();
- //获得文件系统
- FileSystem fs=FileSystem.get(new URI("hdfs://182.168.10.101:9820"),conf);
- // 创建输入流,读取输入文件
- FileInputStream input=new FileInputStream(new File("c://a.txt"));
- // 创建输出流
- FSDataOutputStream out=fs.create(new Path("/gg.txt"));
- //IO的流拷贝
- IOUtils.copyBytes(input, out, conf);
- //关闭资源
- IOUtils.closeStream(input);
- IOUtils.closeStream(out);
- System.out.println("上传完毕");
- }
- @Test
- public void getFile() throws IOException, URISyntaxException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- // 1 连接HDFS 文件系统
- Configuration conf = new Configuration();
- // 获得文件系统
- FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.101:9820"), conf);
- // 获取输入流 从HDFS上读取
- FSDataInputStream input=fs.open(new Path("/gg.txt"));
- // 获取输出流
- FileOutputStream out=new FileOutputStream(new File("c://gg.txt"));
- //流拷贝
- IOUtils.copyBytes(input, out, conf);
- //关闭流
- IOUtils.closeStream(input);
- IOUtils.closeStream(out);
- System.out.println("下载完成");
- }
- @Test
- public void testFileStatus() throws IOException {
- // 在修改HDFS的文件的时候,如果出现权限不足的情况,可以修改操作HDFS的用户
- System.setProperty("HADOOP_USER_NAME", "root");
-
- Configuration conf = new Configuration();
- conf.set("fs.defaultFS","hdfs://192.168.10.101:9820");
- FileSystem fs = FileSystem.get(conf);
- //1. 描述你要读取的文件 /file02
- Path path = new Path("/file02");
- //获取文件的状态信息
- RemoteIterator<LocatedFileStatus> it = fs.listLocatedStatus(path);
- while(it.hasNext()){
- // 取出对象
- LocatedFileStatus status = it.next();
- System.out.println("name:"+status.getPath());
- //获取位置
- BlockLocation[] locate = status.getBlockLocations();
- for(BlockLocation bl:locate){
- System.out.println("当前块的所有副本位置:"+Arrays.toString(bl.getHosts()));
- System.out.println("当前块大小:"+bl.getLength());
- System.out.println("当前块的副本的ip地址信息:"+Arrays.toString(bl.getNames()));
- }
- System.out.println("系统的块大小:"+status.getBlockSize());
- System.out.println("文件总长度:"+status.getLen());
- }
- }
【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。