本地打开java core文件

背景:服务器宕机,生成core文件,由于生成的文件比较大5G多,不能在服务器上直接打开,服务器上的内存不足,磁盘剩余空间也是不足,只能在本地打开

由于服务器是Linux,本地是windows的系统,在linux 系统上只需要gdb 进行打开即可,第一次在windows系统上打开Linux的core文件,就在网上找了很多的方式进行试验

文件名 core.28597

方式一:MAT-memory analysize tool 文件无法识别,打开失败

方式二:将文件转移到开发服务器上,开发服务器为linux 系统,但由于没有安装gdb ,当前的用户也没有root权限,也无法安装,该途径也失败了

方式三:使用jstack --core 命令,文件打开失败

方式四:使用windowsgdb 文件无法打开,

方式三:在本地安装linux 虚拟机,并且安装gdb 打开,进行问题分析

不得不佩服自己是个狠人啊!

### 回答1: 要用 Java 从本地以 UTF-8 格式上传文件到 HDFS,可以使用 Apache Hadoop 中的 `FileSystem` 类。 以下是一个示例代码: ``` import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; // 首先需要创建 Configuration 对象,用于设置 Hadoop 的运行参数 Configuration conf = new Configuration(); // 使用 FileSystem 类的 get() 方法来获取文件系统的实例 FileSystem fs = FileSystem.get(conf); // 创建本地文件路径 Path srcPath = new Path("/path/to/local/file.txt"); // 创建 HDFS 目标路径 Path dstPath = new Path("/path/to/hdfs/file.txt"); // 使用文件系统实例的 copyFromLocalFile() 方法来将本地文件上传到 HDFS fs.copyFromLocalFile(srcPath, dstPath); // 关闭文件系统 fs.close(); ``` 注意:在运行上述代码之前,需要将 Apache Hadoop 的依赖项添加到项目中。可以在项目的 `pom.xml` 文件中添加如下依赖: ``` <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.0</version> </dependency> ``` 然后在运行代码之前,需要确保 Hadoop 环境已经正确配置,包括 Hadoop 配置文件 `core-site.xml` 和 `hdfs-site.xml`。 ### 回答2: 使用Java上传文件到HDFS需要使用Hadoop的HDFS API,并设置上传文件的编码格式为UTF-8。以下是一个示例代码: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HDFSUploader { public static void main(String[] args) { String hdfsUri = "hdfs://localhost:9000"; // HDFS的URI String localFilePath = "path/to/local/file.txt"; // 本地文件路径 String hdfsFilePath = "/path/in/hdfs/file.txt"; // HDFS文件路径 try { Configuration conf = new Configuration(); conf.set("fs.defaultFS", hdfsUri); conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()); conf.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName()); // 获取HDFS文件系统的实例 FileSystem fs = FileSystem.get(conf); // 打开本地文件的输入流 InputStream in = new FileInputStream(new File(localFilePath)); // 创建HDFS文件的输出流 OutputStream out = fs.create(new Path(hdfsFilePath)); // 缓冲区大小 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = in.read(buffer)) > 0) { // 写入HDFS文件 out.write(buffer, 0, bytesRead); } // 关闭流 in.close(); out.close(); System.out.println("File uploaded successfully."); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上述代码中,你需要将"hdfs://localhost:9000"替换为HDFS的正确URI。"path/to/local/file.txt"和"/path/in/hdfs/file.txt"分别是本地文件和HDFS文件的路径。 ### 回答3: 下面是一个用Java从本地以UTF-8格式上传文件到HDFS的示例代码: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; public class HDFSFileUploader { public static void main(String[] args) { String localFilePath = "/path/to/local/file.txt"; String hdfsFilePath = "/path/to/destination/file.txt"; try { // 创建配置对象 Configuration config = new Configuration(); config.set("fs.defaultFS", "hdfs://localhost:9000"); // 设置HDFS的地址 // 创建HDFS文件系统实例 FileSystem fs = FileSystem.get(config); // 打开本地文件输入流 InputStream in = new BufferedInputStream(new FileInputStream(localFilePath)); // 创建HDFS文件输出流 OutputStream out = fs.create(new Path(hdfsFilePath), true); // 定义缓冲区大小 byte[] buffer = new byte[4096]; int bytesRead; // 读取本地文件并写入HDFS文件 while ((bytesRead = in.read(buffer)) > 0) { out.write(buffer, 0, bytesRead); } // 关闭流 in.close(); out.close(); System.out.println("文件上传完成。"); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先创建一个`Configuration`对象,并将HDFS的地址设置为`fs.defaultFS`。然后通过`FileSystem.get(config)`方法获取HDFS文件系统实例。接下来,我们打开本地文件输入流,同时创建HDFS文件输出流。然后,我们使用一个循环读取本地文件并将数据写入HDFS文件,直到文件读取完毕。最后,我们关闭输入流和输出流,并打印出文件上传完成的消息。 请注意,你需要根据你的实际情况修改`localFilePath`和`hdfsFilePath`变量的值,以及`fs.defaultFS`的地址。此外,你还需要确保你的项目中包含`hadoop-common`和`hadoop-hdfs`这两个库的依赖。 希望这可以帮助到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值