基于 Gradle 远程连接Hadoop HDFS编程

在一个现代化的编程时代,界面不好看的 Eclipse 和操作易用性相比而言更高的 IntelliJ Idea。而在进行 Hadoop 进行编程的时候,最基本的是需要导入相应的 Jar 包,而更为便捷的则是使用 Maven 来进行包的依赖管理,而本文则结合 Gradle 来处理引入最基本的 Hadoop 包,配置运行环境。

新建一个 Gradle 项目

在新建时要选择 Gradle 项目,并在连接过程中自动下载 Gradle。
Step1 new_gradle_projects

在下一步中,要输入一个类似于下图的 GroupId,ArtifactId,这其实是基于 Maven 结构的,关于这个如何比较正确填写可以参考
Guide to naming conventions on groupId, artifactId, and version
Step2 group_artifactid_version

接下来相应的配置可以直接进入下一步,配置如下,如果需要自动导包功能也可以选择
Step3 other_configure

在 Maven Repository 中查找相应的依赖

通过Maven Repository中搜索Apache Hadoop Common并查找当前连接对应的 Hadoop 版本,我目前使用的是2.8.5,所以就找到了对应于2.8.5的版本,并在下面的代码框中选择 Gradle,默认是 Maven 导入的代码,切换后可以看到是一行代码compile group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.8.5'
hadoop common gradle

按照同样的方式还需要引入Apache Hadoop HDFS,查找对应的依赖代码
compile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: '2.8.5'

将依赖代码填入

打开项目文件,在 Project 视图中找到build.gradle文件,并在 dependencies 中填入刚刚从 Maven Repository 中找到了两个依赖,当你输入后,IDE 会自动通过网络下载对应的依赖,所以相应的烦琐的依赖及其相互依赖关系,通过 Gradle 能够很好地避免,整个过事其实是非常简单,只要实际尝试后,后面再去操作都变得十分容易。
填入依赖

新建文件并测试

这里我自己通过新建一个HDFSCreateFile用来在 HDFS 文件系统创建一个名为test2的文件,文件内容则是Hello World。注意这里我修改了相应的 HDFS 文件系统地址,修改为hdfs://192.168.1.199:9000,是因为在局域网中我创建了了一真实的分布式文件系统,分为一个 master 节点和三个 slave 节点,而对于的名称节点即 master 节点对于的地址是192.168.1.199,当前的开发环境是在 Mac 下开发,如果你开发环境就是在对应的 master 节点,那么就可以用 localhost 或者127.0.0.1来处理。另外则是一般的文档说在和 HDFS 操作时创建了一个特殊用户名,如 Hadoop这类的,如果你运行程序的当前用户不是这个名称,需要提前在 HDFS 中创建对应的用户目录,否则运行程序会报权限错误。
具体代码

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


public class HDFSCreateFile {
    public static void main(String[] args){
        try{
            Configuration conf = new Configuration();
                conf.set("fs.defaultFS","hdfs://192.168.1.199:9000");
                conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                byte[] buff = "Hello World".getBytes();
                String fileName = "/test2";
                FSDataOutputStream os =fs.create(new Path(fileName));
                os.write(buff,0,buff.length);
                System.out.println("Create:"+fileName);
                os.close();
                fs.close();         
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

总结

相对于Eclipse,使用IntelliJ Idea显得更为现代感,功能上觉得两者都能实现。而Eclipse则更省资源,IntelliJ Idea使用上更为便捷。使用Gradle来进入依赖管理,可以省出更多时间专注于逻辑代码,解决不同包的依赖问题。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇