主要摘自 http://dblab.xmu.edu.cn/blog/290-2/

简介

本指南介绍Hadoop分布式文件系统HDFS,并详细指引读者对HDFS文件系统的操作实践。Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核心组件之一,如果已经安装了Hadoop,其中就已经包含了HDFS组件,不需要另外安装。

利用Java API与HDFS进行交互

Hadoop不同的文件系统之间通过调用Java API进行交互,上面介绍的Shell命令,本质上就是Java API的应用。下面提供了Hadoop官方的Hadoop API文档,想要深入学习Hadoop,可以访问如下网站,查看各个API的功能。
利用Java API进行交互,需要利用软件Eclipse编写Java程序。

(一) 在Ubuntu中安装Intellij idea

直接在官网下载试用版本ideaIU-2018.1.1.tar.gz。

(二)在idea创建项目

点击创建新项目

选择java项目, 如果在SDK未显示1.8, 请点南new按键添加相应SDK,默认位置为/usr/lib/jvm/java-8-openjdk-amd64

在“Project name”后面输入工程名称“HDFSExample”,选中“Use default location”,让这个Java工程的所有文件都保存到“/home/hadoop/HDFSExample”目录下然后,点击界面底部的“Next>”按钮,进入下一步的完成设置。

(三)为项目添加需要用到的JAR包

在File>Project Struecture 中添加引用JAR包

需要在这个界面中加载该Java工程所需要用到的JAR包,这些JAR包中包含了可以访问HDFS的Java API。这些JAR包都位于Linux系统的Hadoop安装目录下,对于本教程而言,就是在“/usr/local/hadoop/share/hadoop”目录下。点击界面中按钮,

为了编写一个能够与HDFS交互的Java应用程序,一般需要向Java工程中添加以下JAR包:
(1)”/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;
(2)/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
(3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;
(4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。
比如,如果要把“/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar添加到当前的Java工程中。

(四)编写Java应用程序代码

输入新建的Java类文件的名称,这里采用名称“HDFSFileIfExist”,其他都可以采用默认设置,然后,点击界面右下角“OK”按钮,

创建了一个名为“HDFSFileIfExist.java”的源代码文件,请在该文件中输入以下代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSFileIfExist {public static void main(String[] args){try{String fileName = "test";Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.3.236:9000");  // 这里根据自己实际情况调整conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);if(fs.exists(new Path(fileName))){System.out.println("文件存在");}else{System.out.println("文件不存在");}}catch (Exception e){e.printStackTrace();}}
}

(五)编译运行程序

在开始编译运行程序之前,请一定确保Hadoop已经启动运行,如果还没有启动,需要打开一个Linux终端,输入以下命令启动Hadoop:

cd /usr/local/hadoop
./sbin/start-dfs.sh

在Project窗口中,选中HDFSFileIfExist类,右键选择run,即可看到结果。 上java代码中,我们设置的判断HDFS中是否含有test名字的文件,可以根据实际情况作调整。

(六)应用程序的部署

下面介绍如何把Java应用程序生成JAR包,部署到Hadoop平台上运行。首先,在Hadoop安装目录下新建一个名称为myapp的目录,用来存放我们自己编写的Hadoop应用程序,可以在Linux的终端中执行如下命令:

cd /usr/local/hadoop
mkdir myapp

然后,请在Idea工作界面左侧的File > Project Structure,出现如下面示后,再作相应选择:

然后选择要导出的类

然后选删除其它依赖类,只留下自己的代码即可


选择菜单栏的Build,选择Build Artifacts。
然后测试程序

cp out/artifacts/HDFSExample_jar/HDFSExample.jar  /usr/local/hadoop/./bin/hadoop jar HDFSExample.jar

我这里输出结果是

文件不存在

如果在上面导出设置时,不删除依赖类,则用下面的方法也可以运行:

java -jar ./HDFSExample.jar

得到一样的结果。

大数据-09-Intellij idea 开发java程序操作HDFS相关推荐

  1. 大数据学习笔记08:Java程序访问HDFS

    文章目录 一.HDFS常用Java API 1.org.apache.hadoop.fs.FileSystem 2.org.apache.hadoop.fs.FileStatus 3.org.apac ...

  2. 大数据时代,为什么很多JAVA程序员会转型做JAVA大数据

    分享之前推荐一个大数据交流学习群:722680258零基础进阶高级,需要学习大数据欢迎加入 JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入 ...

  3. 大数据学习笔记31:Java程序访问高可用Hadoop集群

    文章目录 一.提出任务 1.编写Java程序在HDFS上创建目录 2.编写MapReduce程序进行词频统计 二.准备工作 1.启动hadoop集群 (1)启动ZooKeeper集群 (2)启动Jou ...

  4. 大数据学习笔记:利用JAVA项目操作HBase

    文章目录 一.Java类与HBase数据模型之间的对应关系 二.利用JAVA项目操作HBase (一)HBase表基本操作 1.创建Java项目HBaseDemo 2.在pom.xml添加对hadoo ...

  5. python 新建文件 hdfs_大数据学习(六):Python操作hdfs(包括追加数据文件到hdfs文件)...

    #!coding:utf-8 import sys from hdfs.client import Client #设置utf-8模式 reload(sys) sys.setdefaultencodi ...

  6. 大数据学习笔记57:Java代码操作HBase

    文章目录 一.提出任务 二.HBase完全分布式环境 三.实现步骤 (一)创建Maven项目 (二)添加依赖 (三)创建日志属性文件 (四)创建Java类 1.声明变量 2.创建静态方法连接hbase ...

  7. Java语言开发在线美食推荐网 美食推荐系统 基于用户、物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis框架 人工智能、大数据、机器学习项目开发

    Java语言开发在线美食推荐网 美食推荐系统 基于用户.物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis框架 人工智能.大数据.机器学习项目开发FoodRecomm ...

  8. 大数据和python哪个好_大数据语言之争:Java和python哪个好?

    IT技术领域,编程语言不少,但是大家的目光,基本上都是盯着排名前几的热门语言的,近几年的热点,Java和Python之间也免不了一场争议.一个是IT行业常青树,一个是大数据带动热度快速上升的语言.那么 ...

  9. 大数据 python和java_大数据入门选择Python还是Java?

    原标题:大数据入门选择Python还是Java? java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两 ...

最新文章

  1. Blender中的多平面动画学习教程
  2. 图像处理(一)——使用matlab放缩图像
  3. arm-linux-gcc armv4,ubuntu11.10 下 arm-linux-gcc4.4.3
  4. 领域驱动设计,让程序员心中有码(五)
  5. python通过什么连接数据库_如何使用python连接数据库?
  6. 比尔·盖茨推荐2020年度五本好书 你想读哪本?
  7. VC++ 6.0的一些使用技巧---IDE的使用
  8. python Image
  9. 【笔记】Java 信任所有SSL证书(解决PKIX path building failed问题)
  10. 清理SharePoint 2010的SQL Server 2008 R2日志数据库的方法
  11. C# ToString()格式笔记
  12. Atitit.木马病毒 webftp 的原理跟个设计
  13. ftp服务器的创建文件夹,ftp服务器创建文件夹命令
  14. android 快速开机启动,MTK6577+Android之快速开机
  15. 找到服务器系统日志,查看服务器系统日志
  16. 通过PS把普通数码照片制作成素描照片
  17. 英伟达发布全新GPU:采用图灵架构 支持光线追踪
  18. 点焊机器人焊接超时_机器人点焊自动化 I 附机器人点焊焊接工艺
  19. 你知道分支光缆和配线光缆的区别吗?
  20. MODIS产品质量控制文件使用方法

热门文章

  1. linux eclipse go插件,Eclipse的Go插件(goclipse)
  2. python office自动化_Python office automation:文档,python,自动化,办公,文件,篇,整理,一键,完成...
  3. 由于采用分时技术 用户可以独占计算机资源,计算机操作系统第1章练习题
  4. Python的random
  5. 【杂谈】参加有三AI秋季划4个月,薪资翻倍,我在有三AI都学了啥?
  6. svn添加钩子hook
  7. 迅雷的user-agent
  8. TEXT和_T,_TEXT
  9. 蓝马linux命令连另一台电脑,配置使用别的电脑连接另一台电脑当中的虚拟机项目...
  10. 微信小程序配置WSS协议