HDFS Java API编程实验
编程环境:
方式一(必学):创建Java Project,直接导入hadoop-2.6.0-cdh5.7.0.tar.gz安装包中与HDFS API编程的有关jar包
参考文章:https://blog.csdn.net/qq_42881421/article/details/83001401
方式二(选学):创建MavenProject,修改POM.xml文件,增加与Hadoop API编程相关的依赖配置参数
配置Maven数据源参考https://www.cnblogs.com/sdf-txt/p/7705285.html
修改pom.xml添加Hadoop依赖参考https://blog.csdn.net/qq_42881421/article/details/100762022
pom.xml报错:Missing artifact jdk.tools:jdk.tools:jar:1.6解决方法参考https://blog.csdn.net/sinat_40431164/article/details/80521800
Hadoop集群环境:大数据开发环境一般采用Hadoop伪分布式部署,调试运行程序对集群主机的性能要求不高
1) 读取hdfs上的已存在文件
执行命令 hadoop fs -ls / 查看hdfs根目录的内容
执行命令 hadoop fs -ls /hlzhang 查看hdfs的/hlzhang目录的内容
执行命令 hadoop fs -cat /input/wordcount.txt 查看hdfs的/input/wordcount.txt文件的内容
示例源码:
package testHDFS;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.IOException;
public class ReadFile
{
public static void main(String[] args) throws IOException
{
//创建Configuration实例
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://master:8020");
//通过配置获取到文件系统
FileSystem fs = FileSystem.get(conf);
//定义要读取文件所在的HDFS路径
Path path = new Path("hdfs://master:8020/input/word.txt");
//通过文件系统的open()方法得到一个文件输入流,用于读取
FSDataInputStream dis = fs.open(path);
//用IOUtils下的copyBytes将流中的数据打印输出到控制台
IOUtils.copyBytes(dis, System.out, conf);
//关闭输入流
dis.close();
}
}
注意:
1如果出现连接hdfs://master:8020出错,8020是hdfs的默认端口,原因是在配置hadoop集群时在配置文件core-site.xml中将hdfs的默认端口被修改了