MapReduce提交到hdfs上执行

博客介绍了Hadoop开发的准备工作,包括确保主机能ping通虚拟机,保证hdfs集群正确启动,还可通过浏览器验证。准备就绪后可开始写代码,同时给出了IDEA案例,即在虚拟机hdfs新建文件并测试本地URL是否可行。

准备工作

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()
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值