数据准备
通过HDFS 命令方式将本地words.txt文件上传到HDFS上
首先使用hdfs 来创建input文件夹
[root@node1 ~]# hdfs dfs -mkdir /input [root@node1 ~]# hdfs dfs -ls /input [root@node1 ~]# hdfs dfs -put /root/words.txt /input [root@node1 ~]# hdfs dfs -ls /input Found 1 items -rw-r--r-- 3 root supergroup 42 2017-11-26 04:10 /input/words.txt [root@node1 ~]# hdfs dfs -cat /input/words.txt Java Java dtt dtt Hello World Hello World
目录结构
点击打开pom.xml添加
4.0.0 com.dtt.hadoop hadoop-test 1.0-SNAPSHOT junit junit 3.8.1 test org.apache.hadoop hadoop-core 2.6.0-mr1-cdh5.11.0 org.apache.hadoop hadoop-common 2.7.3 org.apache.hadoop hadoop-hdfs 2.7.3 org.apache.hadoop hadoop-mapreduce-client-core 2.7.3 maven-aliyun maven-aliyun http://maven.aliyun.com/nexus/content/groups/public maven-aliyun maven-aliyun http://maven.aliyun.com/nexus/content/groups/public
编辑Java代码
在HdfsTest.java类中编辑代码如下:
package com.hadoop.hdfs;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;import java.io.IOException;import java.io.InputStream;import java.net.URI;public class HdfsTest { public static void main(String[] args) throws IOException { String uri = "hdfs://192.168.55.128:9000/input/words.txt"; Configuration cfg = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri), cfg); InputStream in = null; in = fs.open(new Path(uri)); IOUtils.copyBytes(in, System.out, 4096, false); IOUtils.closeStream(in); }}
程序说明:
Configuration类:该类的对象封转了客户端或者服务器的配置。 FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。 String uri="hdfs://192.168.55.128:9000/user/root/input/word.txt"要与core-site.xml文件中的fs.defaultFS配置对应,其值是hdfs://node1:9000。由于本地Windows系统的hosts文件没有配置node1,所以这里需要IP地址表示。本地运行
右键单击hdfsTest类,在弹出的快捷菜单中选择“Run ”。
等待数秒后,将看到输入结果。
导出Jar包
将该类导出为 hadooptest.jar.j:
将jar上传集群中一个节点下 ,比如node3。
这里还是通过SFX上传在node3(192.168.55.130)节点上执行命令:
hadoop jar hadooptest.jar com.hadoop.hdfs.HdfsTest