Gradle 远程连接Hadoop HDFS编程

基于 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-c500

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

在 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-w1132

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

将依赖代码填入

打开项目文件,在 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来进入依赖管理,可以省出更多时间专注于逻辑代码,解决不同包的依赖问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值