准备工作
1. 确保你的host主机可以ping通虚拟机
- 我的主机ip为
10.22.60.51 - 10.22.60.101 master
10.22.60.101 slave01
10.22.60.101 slave02 - 虚拟机ping主机可以ping通

- 主机ping虚拟机也可以ping通(十分重要)

2.确保你的hdfs集群正确启动
- master主机

- slave节点

一切都准备好之后就可以开始写代码了
你也可以在你的浏览器输入 http://[你的ip地址]:9870,进行验证

IDEA案例
1. 测试本地URL是否可行
在此之前,我现在虚拟机hdfs上新建一个文件测试

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class TestHDFSByURL {
//开启hdfs的协议支持,保证url可以链接并且打开hdfs上的流
//只需在jvm中注册一次,所以放在static静态代码块中
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class TestHDFSByURL {
//开启hdfs的协议支持,保证url可以链接并且打开hdfs上的流
//只需在jvm中注册一次,所以放在static静态代码块中
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
//指定hdfs协议的url,可以在hosts文件中配置master和ip地址的映射。rpc端口是9000
private static String hdfsUrl = "hdfs://10.22.60.101:9000/input/test.txt";// 这里请输入你自己的IP地址
public static void main(String[] args) throws IOException {
URL url = new URL(hdfsUrl);
//获取输入流,基于hdfs协议的输入流,直接获取
//InputStream is = url.openStream();//注意是hdfs的协议,注册流
//获取url的连接,基于连接获取IO流,基于IO流就可以完成读写(对hdfs的上传和下载)
URLConnection urlConnection = url.openConnection();
InputStream is = urlConnection.getInputStream();
//借助hadoop工具类实现IO操作,我直接将获得的内容在控制台输出
// false表示是否执行后自动关闭资源,这里我设为false。改为手动
IOUtils.copyBytes(is, System.out, 4096, false);
//借助hadoop工具类关闭流
IOUtils.closeStream(is);//is.close()
}
}
博客介绍了Hadoop开发的准备工作,包括确保主机能ping通虚拟机,保证hdfs集群正确启动,还可通过浏览器验证。准备就绪后可开始写代码,同时给出了IDEA案例,即在虚拟机hdfs新建文件并测试本地URL是否可行。

1476

被折叠的 条评论
为什么被折叠?



