2、HDFS编程实践

目录

  • 1、Hadoop三种Shell方式
    • (1)目录操作
      • 1、查看目录
      • 2、创建目录
      • 3、删除目录
    • (2)文件操作
      • 1、创建文件
      • 2、上传文件
      • 3、下载文件
      • 4、拷贝文件
  • 2、利用Web界面管理HDFS
  • 3、利用Java API 与 HDFS 进行交互
    • (1)安装eclipse包
    • (2)使用 Eclipse 开发试 调试 HDFS Java 程序
    • (3)编译运行程序
      • 1、启动HDFS
      • 2、创建文件
      • 3、上传文件
      • 4、回到eclipse
      • 5、在HDFS查看merge.txt的内容
    • (4)部署用户程序
      • 1、创建目录
      • 2、将程序打包成JAR包
      • 3、删除merge.txt
      • 4、运行jar包
    • (5)、关闭HDFS

目的:
熟练使用HDFS操作常用的Shell命令
熟悉HDFS操作常用的Java API
在这里插入图片描述

1、Hadoop三种Shell方式

在这里插入图片描述

(1)目录操作

1、查看目录

在这里插入图片描述

2、创建目录

在这里插入图片描述

3、删除目录

在这里插入图片描述

(2)文件操作

1、创建文件

在这里插入图片描述

2、上传文件

在这里插入图片描述

3、下载文件

在这里插入图片描述

4、拷贝文件

在这里插入图片描述

2、利用Web界面管理HDFS

启动HDF、在浏览器输入http://localhost:9870

./sbin/start-dfs.sh

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

3、利用Java API 与 HDFS 进行交互

在这里插入图片描述

(1)安装eclipse包

链接: link

链接:https://pan.baidu.com/s/1V_XVDTl4zGcT5gXx7Z2qDA
提取码:1vy7

在这里插入图片描述

(2)使用 Eclipse 开发试 调试 HDFS Java 程序

import java.io.IOException;
import java.io.PrintStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;/*** 过滤掉文件名满足特定条件的文件*/
class MyPathFilter implements PathFilter {String reg = null;MyPathFilter(String reg) {this.reg = reg;}public boolean accept(Path path) {if (!(path.toString().matches(reg))) {return true;}return false;}
}/*** 利用 FSDataOutputStream 和 FSDataInputStream 合并 HDFS 中的文件*/
public class MergeFile {Path inputPath = null; // 待合并的文件所在的目录的路径Path outputPath = null; // 输出文件的路径public MergeFile(String input, String output) {this.inputPath = new Path(input);this.outputPath = new Path(output);}public void doMerge() throws IOException {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://localhost:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fsSource = FileSystem.get(URI.create(inputPath.toString()), conf);FileSystem fsDst = FileSystem.get(URI.create(outputPath.toString()), conf);// 下面过滤掉输入目录中后缀为.abc 的文件FileStatus[] sourceStatus = fsSource.listStatus(inputPath, new MyPathFilter(".*\\.abc"));FSDataOutputStream fsdos = fsDst.create(outputPath);PrintStream ps = new PrintStream(System.out);// 下面分别读取过滤之后的每个文件的内容,并输出到同一个文件中for (FileStatus sta : sourceStatus) {// 下面打印后缀不为.abc 的文件的路径、文件大小System.out.print("路径:" + sta.getPath() + " 文件大小:" + sta.getLen()+ " 权限:" + sta.getPermission() + " 内容:");FSDataInputStream fsdis = fsSource.open(sta.getPath());byte[] data = new byte[1024];int read = -1;while ((read = fsdis.read(data)) > 0) {ps.write(data, 0, read);fsdos.write(data, 0, read);}fsdis.close();}ps.close();fsdos.close();}public static void main(String[] args) throws IOException {MergeFile merge = new MergeFile("hdfs://localhost:9000/user/damon/","hdfs://localhost:9000/user/damon/merge.txt");merge.doMerge();}
}

在这里插入图片描述

(3)编译运行程序

1、启动HDFS

cd /usr/local/hadoop #进入 hadoop 安装目录
./sbin/start-dfs.sh #启动 hdfs
jps #查看进程
./bin/hdfs dfs -ls / #查看根目录下内容
./bin/hdfs dfs -ls/user #查看/user 目录下内容

2、创建文件

在这里插入图片描述

3、上传文件

在这里插入图片描述

4、回到eclipse

运行文件:
在这里插入图片描述

5、在HDFS查看merge.txt的内容

在这里插入图片描述

(4)部署用户程序

1、创建目录

在这里插入图片描述

2、将程序打包成JAR包

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

3、删除merge.txt

在这里插入图片描述

4、运行jar包

./bin/hadoop jar ./myapp/HDFSexample.jar

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

(5)、关闭HDFS

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CH1-1 引论

一、参考教材 清华大学出版社《数值分析》李庆扬 王能超 易大义 编 数值分析 机械工业出版社 Numerical Analysis David Kincaid Ward Cheney 著 二、课程背景 所学内容在数学学科体系里的位置: 所学内容: 计算数学是广泛的研究框架,数值分析(教材名)是理论研究,计算…

Python基础知识学习(2)

一,分支条件判断语句 在python中,分支条件语句如下: 1,判断条件:if exception: 2,接着判断的语句为:elif exception: 3,最后的条件为:else: 4,通过缩进来表示…

在线查看 Android 系统源代码 Git repositories on android

在线查看 Android 系统源代码 Git repositories on android 1. Git repositories on android1.1. Android Make Build System1.2. Android Open Source Project Code Review References 1. Git repositories on android https://android.googlesource.com/ 1.1. Android Make …

C++笔记之子类初始化时父类带参构造函数的处理、父子类中模板参数的传递

C++笔记之子类初始化时父类带参构造函数的处理、父子类中模板参数的传递 code review! 文章目录 C++笔记之子类初始化时父类带参构造函数的处理、父子类中模板参数的传递一.子类初始化时父类带参构造函数的处理1.1.若父类只有带参数的构造函数,子类初始化时必须在初始化列表…

[Python学习日记-22] Python 中的字符编码(下)

[Python学习日记-22] Python 中的字符编码(下) 简介 编码的战国时代 Unicode 和 UTF 现代计算机系统通用的字符编码工作方式 简介 在[Python学习日记-21] Python 中的字符编码(上)中我们讲了字符编码中的 ASCII 码和 GB2312/G…

18060 删除空格

**思路**: 1. 使用两个指针,一个指向当前字符位置,另一个指向下一个非空格字符应该放置的位置。 2. 遍历字符串,如果当前字符不是空格,则将其移动到目标位置指针处,并递增目标位置指针。 3. 最后在目标位置指针处添加字…

新电脑安装和配置pytorch、anaconda、CUDA、cuDNN、pycharm、OpenCV的过程记录

显卡驱动和CUDA 一、升级显卡驱动到官方最新版 1、打开英伟达官网,输入显卡芯片型号,手动搜索并下载显卡驱动。 NVIDIA 官方驱动 ​ 2、下载完成后安装驱动。 二、确认显卡支持的最高CUDA版本 1、键盘"winR",调出运行输入cmd后…

查询中的算术表达式

需要修改数据显示方式,如执行计算,或者作假定推测,这些都可能用到算术表达式。 一个算术表达式可以包含列名、固定的数字值和算术运算符。 使用算术运算符 示例:查询雇员的年薪,并显示他们的雇员ID,名字…

支付域——聚合支付设计

摘要 聚合支付是支付行业的一项重要创新,通过整合多种支付方式,极大简化了支付流程,提升了交易效率,为商户和消费者提供了更加便捷的支付体验。随着移动支付的普及,聚合支付在未来的支付场景中将继续发挥重要作用&…

bat批量修改文件名

一、bat代码 代码如下,其中csv_file中记录了原来的文件名字和要修改为的新文件名字,folder是img所在的文件路径。 echo off setlocal enabledelayedexpansion set "csv_fileD:\img\1.csv" set "folderD:\img\" for /f "…

Spring Boot母婴商城:打造一站式购物体验

1 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前&#…

华为项目管理培训产品总监兼首席架构师刘钊受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 华为项目管理培训产品总监兼首席架构师刘钊先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾,演讲议题为“打造项目管理人才队伍——华为项目经理任职资格和专业认证体系”。大会将于10月…

unity 图片置灰shader

我和chatgpt真强! 在 Unity 编辑器中,右键点击 Assets 文件夹,选择 Create -> Shader -> Unlit Shader。shader代码如下,尽管我看的不是很懂,但确实有用 Shader "Custom/GrayScaleShader" {Properti…

基于 CrewAI 多智能体框架,手把手构建一个自动化写作应用实战

明月皓皓,星河灿烂,中秋佳节,团圆美满。祝大家中秋节快乐!听说台风要来了,也不知道还能不能吃着月饼赏个月? 老牛同学在上文(Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码&a…

【hot100-java】【环形链表】

R8-链表篇 思路: 使用快慢指针,快指针走两步,慢指针走一步。追上,有环。 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* n…

fuaeehfnklae

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

神经网络通俗理解学习笔记(1)

神经网络通俗理解学习笔记(1) 神经网络原理激活函数前向传播和反向传播多层感知机代码实现加载数据网络结构损失函数优化器训练测试保存 回归问题一元线性回归多元线性回归多项式回归 线性回归代码实现数据生成设置超参数初始化参数可视化Pytorch模型实现…

43.哀家要长脑子了!

1.39. 组合总和 - 力扣(LeetCode) 对于这类寻找所有可行解的问题,都可以尝试使用 [搜索回溯] 的方法。以下是朴素不减脂的方法,我昨天吃了个干煸炒面,巨朴素。。。一点都不减脂,但是很好吃~~~ class Solut…

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-catalyst-9000/,查看最新版。原创作品,转载请保留出处。 作者主页&…

双指针的用法以及示例

当然可以!双指针(Two Pointers)是一种常用的算法技巧,特别适用于处理数组或链表等线性数据结构的问题。以下是双指针用法的总结: 双指针用法总结 基本概念: 双指针技术使用两个指针在数据结构上进行遍历&a…