HDFS Java API 实践

文章目录

    • 1. 启动 Hadoop 集群
    • 2. 使用 HDFS Shell
    • 3. 使用 HDFS Web UI
    • 4. 安装 Eclipse IDE
      • 4.1 上传文件
      • 4.2 查询文件位置
      • 4.3 创建目录
      • 4.4 读取文件内容
      • 4.5 写入文件

1. 启动 Hadoop 集群

安装集群:https://michael.blog.csdn.net/article/details/114607857

启动命令:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
# 第三条可以用下面的命令,上面的显示过期了,以后弃用
mapred --daemon start historyserver

2. 使用 HDFS Shell

  • 创建文件夹,创建文件
[dnn@master ~]$ mkdir /opt/hadoop-3.3.0/HelloHadoop
[dnn@master ~]$ vim /opt/hadoop-3.3.0/HelloHadoop/file1.txt

文本内容:

hello hadoop
i am Michael
[dnn@master ~]$ vim /opt/hadoop-3.3.0/HelloHadoop/file2.txt

文本内容:

learning BigData
very cool
  • 创建 HDFS 目录 hadoop fs -mkdir -p /InputData, -p 多级目录
  • 检查是否创建
[dnn@master ~]$ hadoop fs -ls /
Found 4 items
drwxr-xr-x   - dnn supergroup          0 2021-03-13 06:50 /InputData
drwxr-xr-x   - dnn supergroup          0 2021-03-12 06:53 /InputDataTest
drwxr-xr-x   - dnn supergroup          0 2021-03-12 07:12 /OutputDataTest
drwxrwx---   - dnn supergroup          0 2021-03-12 06:19 /tmp
  • 上传、查看
[dnn@master ~]$ hadoop fs -put /opt/hadoop-3.3.0/HelloHadoop/* /InputData
[dnn@master ~]$ hadoop fs -cat /InputData/file1.txt
hello hadoop
i am Michael
[dnn@master ~]$ hadoop fs -cat /InputData/file2.txt
learning BigData
very cool
  • 查看系统整体信息 hdfs dfsadmin -report
[dnn@master ~]$ hdfs dfsadmin -report
Configured Capacity: 36477861888 (33.97 GB)
Present Capacity: 23138791499 (21.55 GB)
DFS Remaining: 23136948224 (21.55 GB)
DFS Used: 1843275 (1.76 MB)
DFS Used%: 0.01%
Replicated Blocks:Under replicated blocks: 12Blocks with corrupt replicas: 0Missing blocks: 0Missing blocks (with replication factor 1): 0Low redundancy blocks with highest priority to recover: 0Pending deletion blocks: 0
Erasure Coded Block Groups: Low redundancy block groups: 0Block groups with corrupt internal blocks: 0Missing block groups: 0Low redundancy blocks with highest priority to recover: 0Pending deletion blocks: 0-------------------------------------------------
Live datanodes (2):Name: 192.168.253.128:9866 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 18238930944 (16.99 GB)
DFS Used: 929792 (908 KB)
Non DFS Used: 6669701120 (6.21 GB)
DFS Remaining: 11568300032 (10.77 GB)
DFS Used%: 0.01%
DFS Remaining%: 63.43%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Sat Mar 13 06:57:09 CST 2021
Last Block Report: Sat Mar 13 06:49:24 CST 2021
Num of Blocks: 12Name: 192.168.253.129:9866 (slave2)
Hostname: slave2
Decommission Status : Normal
Configured Capacity: 18238930944 (16.99 GB)
DFS Used: 913483 (892.07 KB)
Non DFS Used: 6669369269 (6.21 GB)
DFS Remaining: 11568648192 (10.77 GB)
DFS Used%: 0.01%
DFS Remaining%: 63.43%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Sat Mar 13 06:57:09 CST 2021
Last Block Report: Sat Mar 13 06:45:42 CST 2021
Num of Blocks: 12

3. 使用 HDFS Web UI

在这里插入图片描述

可以看见副本数是 3,Block 大小是 128 Mb

4. 安装 Eclipse IDE

  • 下载地址
  • 安装指导

在这里插入图片描述
在这里插入图片描述

4.1 上传文件

编写上传文件的代码:

/*** */
package com.michael.hdfs;
import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;/*** @author dnn**/
public class UploadFile {/*** */public UploadFile() {// TODO Auto-generated constructor stub}/*** @param args*/public static void main(String[] args) throws IOException{// TODO Auto-generated method stubConfiguration conf = new Configuration();FileSystem hdfs = FileSystem.get(conf);Path scr = new Path("/opt/hadoop-3.3.0/HelloHadoop/file1.txt");Path dest = new Path("file1.txt");hdfs.copyFromLocalFile(scr, dest);System.out.println("Upload to " + conf.get("fs.defaultFS"));FileStatus files[] = hdfs.listStatus(dest);for(FileStatus file : files) {System.out.println(file.getPath());}}
}

运行:并未拷贝到 hdfs系统内

log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Upload to file:///
file:/home/dnn/eclipse-workspace/HDFS_example/file1.txt

查看hdfs系统文件,没有file1.txt

[dnn@master ~]$ hadoop fs -ls /
Found 4 items
drwxr-xr-x   - dnn supergroup          0 2021-03-13 06:54 /InputData
drwxr-xr-x   - dnn supergroup          0 2021-03-12 06:53 /InputDataTest
drwxr-xr-x   - dnn supergroup          0 2021-03-12 07:12 /OutputDataTest
drwxrwx---   - dnn supergroup          0 2021-03-12 06:19 /tmp

更改:设置默认地址

		Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.253.130:9000");//加入这句FileSystem hdfs = FileSystem.get(conf);

输出:正确了,上传到 hdfs 里了

Upload to hdfs://192.168.253.130:9000
hdfs://192.168.253.130:9000/user/dnn/file1.txt
[dnn@master Desktop]$ hadoop fs -ls -R /user
drwxr-xr-x   - dnn supergroup          0 2021-03-16 07:43 /user/dnn
-rw-r--r--   3 dnn supergroup         26 2021-03-16 07:43 /user/dnn/file1.txt
  • 在集群上运行
    1 、导出 jar 文件
    在这里插入图片描述
    在这里插入图片描述
    2、bash输入命令执行
[dnn@master Desktop]$ hadoop jar /home/dnn/eclipse-workspace/HDFS_example/hdfs_uploadfile.jar com.michael.hdfs.UploadFile
Upload to hdfs://192.168.253.130:9000
hdfs://192.168.253.130:9000/user/dnn/file1.txt
[dnn@master Desktop]$ hadoop fs -ls -R /user
drwxr-xr-x   - dnn supergroup          0 2021-03-16 07:59 /user/dnn
-rw-r--r--   3 dnn supergroup         26 2021-03-16 07:59 /user/dnn/file1.txt

4.2 查询文件位置

package com.michael.hdfs;
import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class FileLoc {public static void main(String[] args) throws IOException{// TODO Auto-generated method stubString uri = "hdfs://master:9000/user/dnn/file1.txt";Configuration conf = new Configuration();try {FileSystem fs = FileSystem.get(URI.create(uri), conf);Path fpath = new Path(uri);FileStatus filestatus = fs.getFileStatus(fpath);BlockLocation [] blklocations = fs.getFileBlockLocations(filestatus, 0, filestatus.getLen());int blockLen = blklocations.length;for(int i = 0; i < blockLen; ++i) {String [] hosts = blklocations[i].getHosts();System.out.println("block" + i + "_location:" + hosts[0]);}}catch(IOException e) {e.printStackTrace();}}
}
[dnn@master Desktop]$ hadoop jar /home/dnn/eclipse-workspace/HDFS_example/hdfs_filelocation.jar com.michael.hdfs.FileLoc
block0_location:slave2

4.3 创建目录

package com.michael.hdfs;
import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class CreatDir {public static void main(String[] args) {// TODO Auto-generated method stubString uri = "hdfs://master:9000";Configuration conf = new Configuration();try {FileSystem fs = FileSystem.get(URI.create(uri), conf);Path dfs = new Path("/test");boolean flag = fs.mkdirs(dfs);System.out.println(flag ? "create success" : "create failure");}catch(IOException e) {e.printStackTrace();}}
}
[dnn@master Desktop]$ hadoop jar /home/dnn/eclipse-workspace/HDFS_example/hdfs_mkdir.jar com.michael.hdfs.CreatDir
create success

4.4 读取文件内容

package com.michael.hdfs;
import java.io.BufferedReader;
import java.io.IOException;
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 ReadFile {public static void main(String[] args) {// TODO Auto-generated method stubtry {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);Path file = new Path("file1.txt");FSDataInputStream getIt = fs.open(file);BufferedReader d = new BufferedReader(new InputStreamReader(getIt));String content = d.readLine();System.out.println(content);d.close();fs.close();}catch(IOException e) {e.printStackTrace();}}
}
[dnn@master Desktop]$ hadoop jar /home/dnn/eclipse-workspace/HDFS_example/hdfs_readfile.jar com.michael.hdfs.ReadFile
hello hadoop

4.5 写入文件

package com.michael.hdfs;import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
import com.michael.hdfs.ReadFile;public class WriteFile {public static void main(String[] args) {// TODO Auto-generated method stubtry {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);byte[] buffer = "hello Michael !!!".getBytes();String filename = "test_file.txt";FSDataOutputStream os = fs.create(new Path(filename));os.write(buffer, 0 , buffer.length);System.out.println("create: " + filename);os.close();fs.close();ReadFile r = new ReadFile();r.read(filename);}catch(IOException e) {e.printStackTrace();}}
}
package com.michael.hdfs;
import java.io.BufferedReader;
import java.io.IOException;
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 ReadFile {public static void main(String[] args) {// TODO Auto-generated method stubtry {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);Path file = new Path("test_file.txt");FSDataInputStream getIt = fs.open(file);BufferedReader d = new BufferedReader(new InputStreamReader(getIt));String content = d.readLine();System.out.println(content);d.close();fs.close();}catch(IOException e) {e.printStackTrace();}}public void read(String filename) {// TODO Auto-generated method stubtry {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);Path file = new Path(filename);FSDataInputStream getIt = fs.open(file);BufferedReader d = new BufferedReader(new InputStreamReader(getIt));String content = d.readLine();System.out.println(content);d.close();fs.close();}catch(IOException e) {e.printStackTrace();}}
}
[dnn@master Desktop]$ hadoop jar /home/dnn/eclipse-workspace/HDFS_example/hdfs_writefile.jar com.michael.hdfs.WriteFile
create: test_file.txt
hello Michael !!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 一组数据 正态分布散点图_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型&#xff0c;该模型的应用场景是根据已知的变量&#xff08;自变量&#xff09;来预测某个连续的数值变量&#xff08;因变量&#xff09;。例如&#xff0c;餐厅根据每天的营业数据&#xff08;包括菜谱价格、就餐人数、预定人数、特价菜折扣…

php7 关联nginx,nginx+php7配合开发

1 源码安装php7下载php7./configure --eable fpm --prefix路径(指定路径&#xff0c;所有的文件会安装在这里。不然会文件会分散到别的地方)make & make install完成php的安装(如果想要按照php扩展可以用pecl命令或者phpize命令来按照)2 安装nginxyum install nginx开启ng…

python 量化交易_基于Python的量化交易工具清单(上)

—— Python量化工具清单 ——以下内容来源于Wilson Freitas的Github项目"Awesome Quant"。原文中包含了丰富的语言类别&#xff0c;但是后续介绍主要针对Python语言。原网址&#xff1a;https://github.com/ wilsonfreitas/awesome-quant基于Python的量化交易工具清…

jlist放jbutton 按钮事件失效_电动高处作业吊篮操作如何面对一些突发事件

电动吊篮从推广发展初期的不认识&#xff0c;不理解&#xff0c;不使用到今天在大中城市的建筑业中成了一种不可缺少的必备机具&#xff0c;在建筑工程施工技术工艺水平上和以往的脚手架相比&#xff0c;更是有一个空前的飞跃。正是由于电动吊篮加高方便、操作简单、安全可靠、…

LintCode MySQL 1968. 查询首两个字母在 ‘Db‘ 和 ‘Dy‘ 之间的课程名称(REGEXP正则)

文章目录1. 题目2. 解题1. 题目 描述 请编写 SQL 语句&#xff0c;查询 courses 表中&#xff0c;课程名首两个字母在 ‘Db’ 和 ‘Dy’ 之间所有课程的名称 https://www.lintcode.com/problem/1968 2. 解题 -- Write your SQL Query here -- -- example: SELECT * FROM XX_…

erp系统方案书_门禁系统方案书

门禁系统概述传统意义的门禁系统是由琐和钥匙构成&#xff0c;以钥匙代表着出入权限。但社会发展至今&#xff0c;以铁锁和钥匙为代表的传统房门管理方式正在逐渐消失&#xff0c;加上IC卡技术、数字技术、网络技术的应用日益成熟&#xff0c;管理安全、可靠、灵活、和方便的IC…

mybatisplus 操作另一个数据库的数据_MySQL的数据库操作详解

一、mysql查看数据库在 MySQL 中&#xff0c;可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为&#xff1a;SHOW DATABASES [LIKE 数据库名];//例子SHOW DATABASES;SHOW DATABASES like mynews;show databases like %name%;语法说…

LeetCode 385. 迷你语法分析器(栈)

文章目录1. 题目2. 解题1. 题目 给定一个用字符串表示的整数的嵌套列表&#xff0c;实现一个解析它的语法分析器。 列表中的每个元素只可能是整数或整数嵌套列表 提示&#xff1a;你可以假定这些字符串都是格式良好的&#xff1a; 字符串非空 字符串不包含空格 字符串只包含…

php unicode 插入 mysql_关于MySQL的一些骚操作——提升正确性,抠点性能

推荐阅读&#xff1a;我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer概要回顾以前写的项目&#xff0c;发现在规范的时候&#xff0c;还是可以做点骚操作的。假使以后还有新的项目用到了MySQL&#xff0c;那么肯定是要实践一番的。为了准备&#xff0c;创建测试数据…

docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版

欢迎关注刘哥讲技术。上一节我们讲到通过docker安装了多台的mysql&#xff0c;很简单&#xff0c;那么我们这一节&#xff0c;利用 Docker 在一台机器上部署多个 Redis 实例。那么redis是什么呢&#xff1f;Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持…

LeetCode 1191. K 次串联后最大子数组之和(前缀和+分类讨论)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr 和一个整数 k。 首先&#xff0c;我们要对该数组进行修改&#xff0c;即把原数组 arr 重复 k 次。 举个例子&#xff0c;如果 arr [1, 2] 且 k 3&#xff0c;那么修改后的数组就是 [1, 2, 1, 2, 1, 2]。 然后&#x…

sql 拆分_实践参考:MySQL架构设计从开发规范、选型、拆分到减压实战指南

导引作者&#xff0c;李辉&#xff0c;原新浪爱彩票运维负责人&#xff0c;常用网名&#xff1a;门牙没了。曾主导新浪爱彩票的MySQL运维工作。培训合伙人、资深讲师&#xff0c;中国科学院大学在读研究生(大数据方向)&#xff0c;擅长大型项目的关系型数据库运维和管理&#x…

PowerBuilder调用.Net编译好的DLL

[ComVisible(true)][ClassInterface(ClassInterfaceType.AutoDual)][ProgId("HelloWorld.MyClass")] //类名public class MyClass{public string UserName { get; set; } //对外提供属性public string SayHello(string content) //对外提供方法{return "用户:&q…

python中流程图_python用graphviz画流程图

问题描述 项目中需要用到流程图&#xff0c;如果用js的echarts处理&#xff0c;不同层级建动态计算位置比较复杂&#xff0c;考虑用python来实现 测试demo实现效果如下完整代码 import yaml import os import ibm_db from graphviz import Digraph from datetime import dateti…

天池 在线编程 牛郎织女(广度优先搜索)

文章目录1. 题目2. 解题1. 题目 描述 又到了七夕节&#xff0c;牛郎织女相约一起去一个n*m大小的迷宫maze里玩耍。 然而没过多久&#xff0c;他们就倒霉地走散了。 现在给定由.,*,S,T组成的矩阵maze&#xff0c; 其中.表示空地,*表示障碍物,S表示牛郎的位置 ,T表示织女的位置&…

BZOJ 1001 狼捉兔子

Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到&#xff0c;但抓兔子还是比较在行的&#xff0c;而且现在的兔子还比较笨&#xff0c;它们只有两个窝&#xff0c;现在你做为狼王&#xff0c;面对下面这样一个网格的地形&#xff1a; 左上角点…

可视化工具Navicat for MySQL-操作三

五、备份和还原MySQL数据库 在数据库的管理中&#xff0c;备份和还原是必须做认真做的事情&#xff0c;如果疏忽或者做粗糙了&#xff0c;那么一旦数据库故障后果不堪设想&#xff0c;所以Navicat同样也有备份和还原的功能&#xff0c;相比较创建功能&#xff0c;其备份功能则…

如何在python中打开文件_Python文件处理:创建、打开、追加、读、写

在Python中&#xff0c;不需要导入外部库来读取和写入文件。Python为创建、写入和读取文件提供了内置的函数。 在本文中&#xff0c;我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 Python中的文件模式 如何创建文本文件 使用Python&#…

天池 在线编程 排名查询

文章目录1. 题目2. 解题1. 题目 描述 给一个二维数组scores表示每个学生的各科成绩&#xff0c;求出学生中总成绩排名第K的索引。 如果成绩一样&#xff0c;越早出现的排名越高。 0 < scores[i][j] < 100 示例&#xff1a; 输入: scores: [[90, 80, 70], [90, 90, 90],…

matlab处理亮度不均匀,校正亮度不均匀问题并分析前景对象

预处理图像将图像读入工作区。I imread(rice.png);imshow(I)图像中心的背景亮度比底部亮度高。预处理图像&#xff0c;使背景亮度更加均匀。第一步&#xff0c;使用形态学开运算删除所有前景(米粒)。开运算会删除无法完全包含结构元素的小对象。定义半径为 15 的盘形结构元素&…