【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验

实验三: HDFS Java API编程实践

实验题目

HDFS Java API编程实践

实验目的

熟悉HDFS操作常用的Java API。

实验平台

操作系统:Linux

Hadoop版本:2.6.0或以上版本

JDK版本:1.6或以上版本

Java IDE:Eclipse

实验内容和要求

编写一个Java程序,新建一个HDFS文件,并向其中写入你的名字;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.Path;

public class Chapter3 {

public static void main(String[] args) {

try {

Configuration conf = new Configuration();

conf.set("fs.defaultFS","hdfs://localhost:9000");

conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");

FileSystem fs = FileSystem.get(conf);

byte[] buff = "Hello world".getBytes(); // 要写入的内容

String filename = "LQL"; //要写入的文件名

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();

}

}

}

编写一个Java程序,判断HDFS上是否存在某个文件(上一步建立的文件是否存在)?

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

public class Chapter3 {

public static void main(String[] args) {

try {

String filename = "test";

Configuration conf = new Configuration();

conf.set("fs.defaultFS","hdfs://localhost: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("文件不存在");

}

fs.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

编写一个Java程序,打开一个HDFS中的文件(上一步建立的文件),并读取其中的数据,输出到标准输出;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.FSDataInputStream;

public class Chapter3 {

public static void main(String[] args) {

try {

Configuration conf = new Configuration();

conf.set("fs.defaultFS","hdfs://localhost:9000");

conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");

FileSystem fs = FileSystem.get(conf);

Path file = new Path("test");

FSDataInputStream getIt = fs.open(file);

BufferedReader d = new BufferedReader(new InputStreamReader(getIt));

String content = d.readLine(); //读取文件一行

System.out.println(content);

d.close(); //关闭文件

fs.close(); //关闭hdfs

} catch (Exception e) {

e.printStackTrace();

}

}

}

遇到的问题和解决方法

【遇到的问题】:

Hadoop安全模式问题:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.n0amenode.SafeModeException):Cannot create file /user/hadoop/LQL. Namenode is in safe mode.

尝试在Hadoop分布式文件系统(HDFS)上创建文件时遇到了问题,因为NameNode处于安全模式(Safe Mode)。

【解决方法】:

Hadoop的NameNode在启动时会进入安全模式,这是为了保护数据的完整性,防止在系统启动时数据不一致时进行写操作。在安全模式中,大多数写操作(如创建、删除文件或目录)将被阻止。根据日志,NameNode将在22秒后自动退出安全模式。

使用HDFS的命令行工具,通过执行hdfs dfsadmin -safemode leave命令来退出安全模式。

相关推荐
Elastic 中国社区官方博客11 分钟前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
B站_计算机毕业设计之家13 分钟前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法
莽撞的大地瓜25 分钟前
洞察,始于一目了然——让舆情数据自己“说话”
大数据·网络·数据分析
证榜样呀33 分钟前
2026 中专大数据技术专业可考的证书有哪些,必看!
大数据·sql
星辰_mya33 分钟前
Elasticsearch主分片数写入后不能改
大数据·elasticsearch·搜索引擎
班德先生42 分钟前
深耕多赛道品牌全案策划,为科技与时尚注入商业表达力
大数据·人工智能·科技
鸿乃江边鸟1 小时前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native
忆~遂愿1 小时前
CANN metadef 深度解析:动态形状元数据管理、图编译器接口规范与序列化执行机制
大数据·linux
AI职业加油站1 小时前
职业提升之路:我的大数据分析师学习与备考分享
大数据·人工智能·经验分享·学习·职场和发展·数据分析
风指引着方向1 小时前
昇腾算子性能调优:ops-nn 中的内存布局与向量化技巧
java·大数据·人工智能