获取虚拟机的ip
虚拟机终端输入
ip a
关闭虚拟机防火墙
sudo ufw disable
修改Hadoop的
core-site.xml
文件
将
localhost
修改为虚拟机局域网IP
# 位置可能不一样,和Hadoop安装位置有关cd /usr/local/hadoop/etc/hadoop
vim core-site.xml
IDEA 连接
创建Maven项目
IDEA自带Maven,如果需要自己安装Maven可以参考安装Maven
创建项目,选择Maven,模板选择第一个
maven-archetype-archetype
添加依赖(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>
设置好后
Reload
一下
创建Java文件并运行
importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importjava.io.IOException;publicclassTest01{publicstaticvoidmain(String[] args)throwsIOException{Configuration conf =newConfiguration();// 设置用户名(一定要,不然默认用户名是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(newPath("/"),true);while(files.hasNext()){FileStatus fileStatus = files.next();System.out.println(fileStatus.getPath().toString());}
fs.close();//关闭hdfs}}
端口转发
完成到这里已经可以用啦,不过可能不太方便
可以设置将win10的端口转发
实现在代码中直接访问
localhost
创建
test.bat
文件后输入以下代码
将
IP
修改成虚拟机的IP
双击运行
@REM 设置IP
SET BigDataLANIP=192.168.111.131
@REM 设置命令以管理员身份运行
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
@REM 清空所有转发规则
netsh interface portproxy reset
@REM 转发9000
netsh interface portproxy add v4tov4 listenport=9000connectport=9000connectaddress=%BigDataLANIP%
@REM 转发9870(HDFS的web管理界面)
netsh interface portproxy add v4tov4 listenport=9870connectport=9870connectaddress=%BigDataLANIP%
echo"succeed"timeout /t 5 /nobreak >nul
简单使用
importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.*;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassTest02{publicstaticvoidmain(String[] args)throwsIOException{Configuration conf =newConfiguration();// 设置用户名(一定要,不然默认用户名是win的用户名)System.setProperty("HADOOP_USER_NAME","hadoop");
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");// 列出根目录下的所有文件和文件夹FileSystem fs =FileSystem.get(conf);Path file =newPath("/");FileStatus[] fileStatuses = fs.listStatus(file);for(FileStatus fileStatus : fileStatuses){System.out.println(fileStatus.getPath());}// 创建一个新的文件 test.txt 在HDFS的 /user/hadoop/test 目录下(如果目录不存在,则先创建目录)。Path dirPath =newPath("/user/hadoop/test");if(!fs.exists(dirPath)){
fs.mkdirs(dirPath);}Path remotePath =newPath("/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();// 读取 test.txt 文件的内容,并打印到控制台。FSDataInputStream inputStream = fs.open(remotePath);BufferedReader d =newBufferedReader(newInputStreamReader(inputStream));String line =null;while((line = d.readLine())!=null)System.out.println(line);// 关闭与HDFS的连接。
fs.close();}}
启动Hadoop
cd /usr/local/hadoop/ #目录可能不一样,修改成自己的目录
./sbin/start-dfs.sh #启动hadoop
jps # 判断是否启动成功
版权归原作者 CY耶 所有, 如有侵权,请联系我们删除。