开发者

Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

开发者 https://www.devze.com 2024-11-08 10:19 出处:网络 作者: CY耶
目录获取虚拟机的ip关闭虚拟机防火墙修改Hadoop的core-site.XML文件重启HadoopIDEA连接创建Maven项目添加依赖(pom.xml)创建Java文件并运行端口转发简单使用总结获取虚拟机的ip
目录
  • 获取虚拟机的ip
  • 关闭虚拟机防火墙
  • 修改Hadoop的core-site.XML文件
  • 重启Hadoop
  • IDEA连接
    • 创建Maven项目
    • 添加依赖(pom.xml)
    • 创建Java文件并运行
  • 端口转发
    • 简单使用
      • 总结

        获取虚拟机的ip

        虚拟机终端输入

        ip a

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        关闭虚拟机防火墙

        sudo ufw disable

        修改Hadoop的core-site.xml文件

        localhost修改为虚拟机局域网IP

        # 位置可能不一样,和Hadoop安装位置有关
        cd /usr/local/hadoop/etc/hadoop
        vim core-site.xml
        

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        重启Hadoop

        cd /usr/local/hadoop/ #目录可能不一样,修改成自己的目录
        ./sbin/stop-dfs.sh # 关闭hadoop
        ./sbin/start-dfs.sh #启动hadoop
        jps # 判断是否启动成功
        

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        IDEA连接

        创建Maven项目

        IDEA自带Maven,如果需要自己安装Maven可以参考Maven安装教程

        创建项目,选择Maven,模板选择第一个maven-archetype-archetype

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        添加依赖(pom.xml)

        记得修改自己hadoop的版本,我的是3.3.5

        设置好后Reload一下

          <properties>
            <hadoop.version>3.3.5</hadoop.version>
          </properties>
          <dependencies>
            <dependency>
              <groupId>org.apache.hadoop</groupId>
              <artifactId>hadoop-common</artifactId>
              <version>${hadoop.version}</version>
            </dependency>
        
            <dependency>
              <groupId>org.apache.hadoop</groupId>
              <artifactId>hadoop-hdfs</artifactId>
              <version>${hadoop.version}</version>
            </dependency>
        
            <dependency>
              <groupId>org.apache.hadoop</groupId>
              <artifactId>hadoop-client</artifactId>
              <version>${hadoop.version}</version>
            </dependency>
          </dependencies>

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        javascript置好后Reload一下 ,然后等下载好

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        创建Java文件并运行

        出现错误请先检查Hadoop是否重启

        import org.apache.hadoop.conf.Configuration;
        import org.apache.hadoop.fs.*;
        
        import java.io.IOException;
        
        public class Test01 {
            public static void main(String[] args) throws IOException {
                Configuration conf = new Configuration();
                //  设置用户名(一定要,不然默认用户名是win的用户名)
                System.setProperty("HADOOP_USER_NAME","hadoop");
                // 	IP地址修改成虚拟机的ip
                conf.set("fs.defaultFS","hdfs://192.168.111.131:9000");
                conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
        
                RemoteIterator<LocatedFileStatus> files = fs.listFiles(new Path("/"), true);
                while (files.hasNext()) {
                    FileStatus fileStatus = files.next();
                    System.out.println(fileStatus.getPath().toString());
                }
                fs.close(); //关闭hdfs
            }
        }

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        端口转发

        完成到这里已经可以用啦,不过可能不太方便

        可以设置将win10的端口转发

        实现在代码中直接访问localhost

        创建test.BAT文件后输入以下代码

        IP修改成虚拟机的IP

        双击运行

        @REM 设置IP
        SET BigDataLANIP=192.168.111.131 
        
        
        @REM 设置命令以管理员身份运行
        %1 start "" mshta vbscript:CreateObject("Shell.Application").She编程客栈llExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
        @REM  清空所有转发规则
        netsh interface portproxy reset
        
        
        @REM 转发9000
        netsh interface portproxy add v4tov4 listenport=9000 connectport=9000 connectaddress=%BigDataLANIP%
        @REM 转发9870(HDFS的web管理界面)
        netsh interface portproxy add v4tov4 listenport=9870 connectport=9870 connectaddress=%BigDataLANIP%
        echo "succeed"
        timeout /t 5 /nobreak >nul

        Win10 IDEA如何连接虚拟机中的Hadoop(HDFS)

        简单使用

        import org.apache.hadoop.conf.Configuration;
        import org.apache.hadoop.fs.*;
        
        
        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStreamReader;
        
        
        public class Test02 {
            public static void main(String[] args) throws IOException {
                Configuration conf = new Configuration();
        //        设置用户名(一定要,不然默认用户名是win的用户名)
                System.setProperty("HADOOP_USER_NAME","hadoop");
                conf.set("fs.defaultFS","hdfs://localhost:9000");
                conf.set("fs.hdfs.impl","orghttp://www.devze.com.apache.hadoop.hdfs.DistributedFileSystem");
        //        列出根目录下的所有文件和文件夹
                FileSystem fs = FileSystem.get(conf);
                Path file = new Path("/");
                FileStatus[] fileStatuses = fs.listStatus(file);
                for (FileStatus fileStatus : fileStatuses){
                    System.out.println(fileStatus.getPath());
                }
        //        创建一个新的文件 test.txt 在HDFS的 /user/hadoop/test 目录下(如果目录不存在,则先创建目录)。
                Path dirPath = new Path("/user/hadoop/test")编程客栈;
                if(!fs.exists(dirPath)){
                    fs.mkdirs(dirPath);
                }
                Path remotePath = new Path("/user/hadoop/test/test.txt");
                FSDataOutputStream outputStream = fs.create(remotePath);
                outputStream.close();
        //        向 test.txt 文件中写入一段指定的文本内容(如“Hello, HDFS!”)。
                FSDataOutputStream outputStream2 = fs.create(remotePath);
                String s = "Hello, HDFS!";
                outputStream2.write(s.getBytes());
                outputStream2.close();
        //       读www.devze.com取 test.txt 文件的内容,并打印到控制台。
                FSDataInputStream inputStream = fs.open(remotePath);
                BufferedReader d = new BufferedReader(new InputStreamReader(inputStream));
                String line = null;
                while ((line = d.readLine()) != null)
                    System.out.println(line);
        //      关闭与HDFS的连接。
                fs.close();
            }
        }

        总结

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号