首页 > 编程语言 >HDFS文件读写初窥- Java API

HDFS文件读写初窥- Java API

时间:2023-05-11 19:45:14浏览次数:42  
标签:hdfs Java val HDFS hadoop API ssh apache org

安装HDFS

1)hadoop下载:https://hadoop.apache.org/releases.html
2)本地安装:https://hadoop.apache.org/docs/r3.3.5/hadoop-project-dist/hadoop-common/SingleCluster.html 3)修改配置:etc目录下存放了hadoop相关配置文件,这里要在本地部署伪分布式模式,需要修改以下两个文件:
  • etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  • etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
4)hadoop启动会用到ssh,需要检查一下是否可以通过ssh访问
ssh localhost

说明:如果没有安装ssh请先安装 5)添加ssh共钥到authorized_keys文件,否则无法通过ssh免密登陆,启动hdfs可能会报Permission denied异常
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 chmod 0600 ~/.ssh/authorized_keys
6)格式化文件系统
./bin/hdfs namenode -format
7)启动hdfs
./sbin/start-dfs.sh 
启动成功后可以查看namenode:http://localhost:9870/

文件操作

1)新建maven工程,导入依赖
   <properties>
        <hadoop.version>3.3.5</hadoop.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
2)将hadoop etc/hadoop/目录下的配置文件core-site.xml、hdfs-site.xml、log4j.properties拷贝到工程中的resources目录下
3)文件读写
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}

import java.nio.charset.StandardCharsets

object HdfsFileOperationTest {
  def main(args: Array[String]): Unit = {
    val conf = new Configuration()
    conf.set("fs.defaultFs", "hdfs://localhost:9000")
    val fs = FileSystem.get(conf)
    val path = new Path("/user/test/tmp/test01.txt")
    
    //文件写入
    val out = fs.create(path)
    val str = "hello world!!!\n"
    out.write(str.getBytes(StandardCharsets.UTF_8))
    out.close()

    //文件读取
    val in = fs.open(path)
    val bytes = new Array[Byte](1024)
    val len = in.read(bytes)
    println(new String(bytes, 0, len))
    in.close()
  }
}
4)查看文件

标签:hdfs,Java,val,HDFS,hadoop,API,ssh,apache,org
From: https://www.cnblogs.com/helios-chen/p/17392024.html

相关文章

  • Java面向对象
    面向对象编程(OOP)是软件开发的一种新方法,使用这种方法开发的软件具有易维护、可重用和可扩展性等特性。【特征:封装、继承、多态(抽象)】面向对象基本概念:(面向对象的设计就是一个抽象的过程)1、对象:对象就是用来描述客观事物的一个实体。用面向对象的方法解决问题,需要对现实世界中的......
  • Java8中的sort与Comparator、Comparable
    基本含义在Java8中,sort()方法、Comparator接口和Comparable接口是用于对数组或集合进行排序的重要工具,其中Comparator接口适用于自定义比较规则,而Comparable接口适用于定义对象自身的比较规则。假如我们有一个实体类点击查看代码publicclassCoinUserIncome{pr......
  • JavaScript 中的 `for...in` 和 `for...of`
    JavaScript中的for...in和for...of是两种常用的迭代循环语句。它们的用途和行为是不同的。for...in循环用于循环遍历对象的属性,它会遍历对象的可枚举属性和原型链上的可枚举属性。constobj={a:1,b:2};for(letpropinobj){console.log(prop);//输出'a'......
  • c# 调用webapi的几种方式
     HttpHelper帮助类publicstaticclassHttphelper{//Post请求publicstaticstringPostResponse(stringurl,stringpostData,outstringstatusCode){stringresult=string.Empty;//设置Http的正文......
  • 【Java】非访问修饰符 final、static 、abstract
    非访问修饰符final修饰符final可以修饰类、属性和方法<但不能用于修饰构造方法>private不能被子类方法覆盖,private类型的方法默认是final类型的 final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Tips:final变量定义的时候,可以先......
  • Visual Studio Connected Services 生成http api代码
    生成的代码将和接口对应的参数、返回值一一对应,本文底层使用的工具为NSwag.exe,其他可替代的方案还有AutoSet.exe1.配置连接2.配置生成的代码相关属性3.如果遇到报错考虑将version添加到生成的swagger.json文件中底层实际是调用NSwag.exe生成的代码生成的文件位置此......
  • 【Java】Java 异常处理
    1、什么是异常?将程序执行中发生的不正常情况称为“异常”2、Java程序在执行过程中所发生的异常事件可分为两类java.lang.Error:一般不编写针对性的代码进行处理java.lang.Exception:可以进行异常的处理Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等......
  • 接口测试:Eolink Apikit 和 Postman 哪个更好用?
    很多做服务端开发的同学,应该基本都用过Postman来测试接口,虽然Postman能支撑日常工作,但是总感觉还是少了点什么,比如需要Swagger来维护接口文档,需要人肉发送接口变更通知。如今,国产的接口管理工具做得越来越好了,比如,EolinkApikit,一站式API协作平台。EolinkApikit和Post......
  • Java虚拟机运行时退出运行
    虚拟机启动直接退出运行,是因为某一个类需要加载到IOC容器里创建bean时无法加载进去,这时候需要检查一下是不是有哪些方法或者类没有写完 ......
  • APIView执行流程(源码分析)、Request对象源码分析
    目录一、APIView执行流程——源码分析(难,了解)1.1基于APIView+JsonResponse编写接口1.2基于APIView+Response写接口1.3APIView的执行流程二、Request对象源码分析(难,了解)一、APIView执行流程——源码分析(难,了解)1.1基于APIView+JsonResponse编写接口#原来基于django原生的Vi......