博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始学Hadoop----浅析HDFS(三)
阅读量:4262 次
发布时间:2019-05-26

本文共 3248 字,大约阅读时间需要 10 分钟。

      之前,我们简单介绍了一下Hadoop的核心之一HDFS,对其中的一些概念和他的原理做了一些解析。今天我们来看看HDFS的操作实例。

三、小试牛刀

1、shell命令

这里写图片描述

2、fs实例

      在做之前,我们需要做一些准备环境,例如在Linux上安装hadoop,创建工程,导入需要的jar文件等等,网上分享的步骤很全,这里不在赘述,直接看它实际应用中的代码。

public class HDFSDemo {
FileSystem fs=null; @Before public void init() throws IOException, URISyntaxException, InterruptedException { //首先创建FileSystem的实现类(工具类),并指定当前用户 fs =FileSystem.get(new URI ("hdfs://itcast01:9000"), new Configuration(),"root"); } @Test public void testUpLoad() throws Exception{ //读取本地文件系统的文件,返回输入流 InputStream in=new FileInputStream("c://test.zip"); //在HDFS上创建一个文件,返回输出流 OutputStream out=fs.create(new Path("/test1.zip")); //输入流-》输出 IOUtils.copyBytes(in, out, 4096,true); } //创建文件夹 @Test public void testMkDir() throws IllegalArgumentException, IOException{ boolean flag=fs.mkdirs(new Path("/nihao/11/22/33")); System.out.println(flag); } //删除文件 @Test public void del() throws IllegalArgumentException, IOException{ boolean flag=fs.delete(new Path("/nihao/11"),false); System.out.println(flag); } //下载 @Test public void getDown() throws Exception { //连接HDFS,返回输入流 InputStream in=fs.open(new Path("/hadoop-2.5.2.tar.gz")); //在本地建立文件夹,返回输出流 OutputStream out=new FileOutputStream("c://hadoop2"); //输入流-》输出 IOUtils.copyBytes(in, out, 4096,true); } //更快上传 @Test public void testDownLoad() throws IllegalArgumentException, IOException{ fs.copyToLocalFile(true,new Path("/hadoop-2.5.2.tar.gz"), new Path("c://hadoop-2.5.2.tar.gz")); }}

3、RPC实例

  • 概念

          RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

  • 原理

           RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

  • 代码

接口

public interface Bizable {    //序列化序号    public static final long versionID=10010;    //接口方法——客户端需要调用,服务端实现    public String sayHi(String name);}

客户端

public class RPCClient {    public static void main(String[] args) throws IOException {        //生成服务端的代理        Bizable proxy= RPC.getProxy(Bizable.class, 10010, new InetSocketAddress("192.168.8.***",9519), new Configuration());        //调用代理方法        String result=proxy.sayHi("tomacat");        //打印结果        System.out.println(result);        //关闭代理        RPC.stopProxy(proxy);    }}

服务端

public class RPCServer implements Bizable{
//实现接口 public String sayHi(String name){ return "HI~"+name+".I am Service"; } public static void main(String[] args) throws Exception { Configuration conf=new Configuration(); //使用静态类Builder构造一个RPC Server //其中,BindAddress(由函数setBindAddress设置)和Port(由函数setPort设置,0表示由系统随机选择一个端口号)分别表示服务器的host和监听端口号 Server server=new RPC.Builder(conf).setProtocol(Bizable.class).setInstance(new RPCServer()).setBindAddress("192.168.8.***").setPort(9519).build(); //启动服务。此时,服务器处理监听状态,等待客户端请求到达。 server.start(); }}

总结:

      到此,我们学习了HDFS的一个大概,从概念到原理最后到实际操作,基本的一些知识已经掌握,剩下的就需要在项目中历练了。接下来我们会继续分享Hadoop的另外一个核心部分MapReduce,敬请关注。

你可能感兴趣的文章
自己编写Python连接MySQL的支持
查看>>
掰开揉碎机器学习系列-决策树(1)-ID3决策树
查看>>
python的引用和浅拷贝和p深拷贝
查看>>
掰开揉碎机器学习系列-决策树(2)-CART决策树
查看>>
python2.7 安装multiprocessing的正确姿势
查看>>
manacher算法计算最长回文子串
查看>>
二叉查找树(BST)
查看>>
堆(二叉堆)
查看>>
AVL平衡二叉树
查看>>
字符串匹配的KMP算法
查看>>
字符串左右旋转问题
查看>>
字符串是否包含问题
查看>>
排序1:交换排序(冒泡排序+快速排序)
查看>>
排序2:选择排序(选择排序+堆排序)
查看>>
排序3:插入排序(普通插入排序 + 折半插入排序 + 链表插入排序 + 希尔排序)
查看>>
排序4:普通归并排序
查看>>
排序4:多路归并排序之预备:胜者树与败者树
查看>>
浮华背后与我的路-----关于华为裁员
查看>>
二维有序数组查找
查看>>
有序数组的旋转数组的最小值
查看>>