hdfs java_Hadoop —— HDFS in Java

Hadoop的核心框架就 是HDFS和MapReduce,我们在这个帖子分别跑一跑案例并且做一些小调试:

HDFS为海量数据提供了存储,存储方式如下

hdfs为常用命令行有: -put、-get、-ls、-mkdir、-rm、-rmdir、-cat,下面是一些操作:

相应的HDFS命令行生成的文件可以在HDFS界面中监控:

***************************HDFS JAVA API***************************

我尝试在Windows上建立Eclipse通过Hadoop plugin去实现HDFS连接,但是尝试了2天还是没有解决通信问题。QLing随彩:Hadoop + Eclipse IDE​zhuanlan.zhihu.com7c2f931d3696e89cf3e37207a36cc700.png

于是,我觉得可以在windows上完成开发,但是把代码放在linux上跑,HDFS的操作个人觉得通过上面的命令行操作也可以接受,目前暂时搁置,未来有空优化,先focus在核心问题上!

下面尝试一下hadoop中常用的文件操作接口吧,以下帖子总结了几个例子可以调试看看:HDFS文件系统的JAVA-API操作(一) - CJZhaoSimons - 博客园​www.cnblogs.com1f86940e5c821380631599dacc47042e.png

**********************java.net.URL访问HDFS文件系统*********************

下面看看在windows上build出来的jar文件是否能在linux的HDFS中使用对上面的例子只是把报错e直接打印出来,别的没改!其他都是默认的

package Demo;

import java.io.InputStream;

import java.net.URL;

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

import org.apache.hadoop.io.IOUtils;

/*** @author SimonsZhao* HDFS的API使用* 1.如果要访问HDFS,HDFS客户端必须有一份HDFS的配置文件* 也就是hdfs-site.xml,从而读取Namenode的信息。* 2.每个应用程序也必须拥有访问Hadoop程序的jar文件* 3.操作HDFS,也就是HDFS的读和写,最常用的类FileSystem* 操作:显示HDFS文件夹中的文件内容* 1.使用java.net.URL对象打开数据流* 2.使用静态代码块使得java程序识别Hadoop的HDFS url*/

public class MyCat {

static{

URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

}

public static void main(String[] args) {

InputStream input=null;

try {

input = new URL(args[0]).openStream();

IOUtils.copyBytes(input,System.out,4096,false);

} catch (Exception e) {

System.err.println(e);

}finally{

IOUtils.closeStream(input);

}

}

}

通过SecureCRT上传jar包至Linux中的指定文件夹下。

执行hdfs命令把需要java代码中读入的文件上传到hdfs文件系统中

hdfs dfs -put /usr/local/HadoopTest/lisatest.txt /user/root/

hadoop jar /usr/local/HadoopTest/MyCat.jar hdfs://master:8020/user/root/lisatest.txt

***************************FileSystem API访问HDFS文件系统***************************

***************************FileSystem的HDFS输入及输出流***************************

package Demo;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

/*** @author 张良均* HDFS的FileSystem API使用* 1.操作HDFS,也就是HDFS的读和写,最常用的类FileSystem* 2.使用HDFS的输出流写文件* 3.使用HDFS的输入流读文件并打印输出* 4.这个案例跟MyCat的区别是文件名是写死的,并不是动态的*/

public class FileSystemAPIDemo {

public static void main(String[] args) {

try {

Configuration conf=new Configuration();

conf.set("fs.defaultFS", "hdfs://master:8020");

FileSystem fs=FileSystem.get(conf);

//create a new file path Path newFile= new Path("hdfs://master:8020/user/root/new.txt");

//delete it if exist if(fs.exists(newFile)) {

fs.delete(newFile,false);

}

//create newFile in HDFS, and it includes path info FSDataOutputStream out=fs.create(newFile);

out.writeUTF("Hello World!");

out.close();

//read newFile in HDFS, and it includes path info FSDataInputStream in=fs.open(newFile);

String info=in.readUTF();

System.out.println(info);

fs.close();

} catch (Exception e) {

System.err.println(e);

}finally{

System.out.println("Finally!");

}

}

}

当直接保存代码,并且把中文注释全部删掉,上传到Linux下,javac命令会没法编译通过

下面通过hadoop jar方式来调用,前面生成jar文件的步骤同上,此处省略:

********************HDFS输入及输出流使用hadoop执行*******************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值