国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Hadoop】HDFS API 操作大全

這篇具有很好參考價(jià)值的文章主要介紹了【Hadoop】HDFS API 操作大全。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

?? 博主 "開著拖拉機(jī)回家"帶您 Go to New World.???

?? 個(gè)人主頁——??開著拖拉機(jī)回家_Linux,大數(shù)據(jù)運(yùn)維-CSDN博客 ?????

???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請批評指正!????

???????????????? ?????????????? ????????????????????????

?????? ????????感謝點(diǎn)贊和關(guān)注 ,每天進(jìn)步一點(diǎn)點(diǎn)!加油!?????? ????????

目錄

?? 博主 "開著拖拉機(jī)回家"帶您 Go to New World.???

一、FileSystem文件抽象類

1.1文件讀取API

1.2文件操作API

1.3抽象FileSystem類的具體實(shí)現(xiàn)子類

1.4FileSystem IO輸入系統(tǒng)相關(guān)類

1.5FileSystem IO輸出系統(tǒng)相關(guān)類

二、HDFS的API操作

2.1測試集群版本信息

2.2文件上傳下載和移動

2.3文件讀寫操作

2.4文件狀態(tài)信息獲取

2.5實(shí)戰(zhàn)案例


一、FileSystem文件抽象類


為了提供對不同數(shù)據(jù)訪問的一致接口,Hadoop借鑒了Linux虛擬文件系統(tǒng)的概念,為此Hadopo提供了一個(gè)抽象的文件系統(tǒng)模型FileSystem,HDFS 是其中的一個(gè)實(shí)現(xiàn)。

FileSystem是Hadoop中所有文件系統(tǒng)的抽象父類,它定義了文件系統(tǒng)所具有的基本特征和基本操作。

1.1文件讀取API


HadoopFileSystem操作

Java操作

Linux操作

描述

URL.openStream

FileSystem.open

FileSystem.create

FileSystem.append

URL.openStream

open

打開一個(gè)文件

FSDataInputStream.read

InputStream.read

read

讀取文件中的數(shù)據(jù)

FSDataInputStream.write

OutputStream.write

write

向文件中寫入數(shù)據(jù)

FSDataInputStream.close

FSDataOutputStream.close

InputStream.close

OutputStream.close

close

關(guān)閉一個(gè)文件

FSDataInputStream.seek

RandomAccessFile.seek

lseek

改變文件讀寫位置

FileSystem.getContentSummary

du/wc

獲取文件存儲信息

1.2文件操作API


HadoopFileSystem操作

Java操作

Linux操作

描述

FileSystem.getFileStatus

FileSystem.get*

File.get*

stat

獲取文件/目錄的屬性

FileSystem.set*

File.set*

chomd

修改文件屬性

FileSystem.createNewFile

File.createNewFile

create

創(chuàng)建一個(gè)文件

FileSystem.delete

File.delete

remove

刪除一個(gè)文件

FileSystem.rename

File.renameTo

rename

移動或先修改文件/目錄名

FileSystem.mkdirs

File.mkdir

mkdir

創(chuàng)建目錄

FileSystem.delete

File.delete

rmdir

從一個(gè)目錄下刪除一個(gè)子目錄

FileSystem.listStatus

File.list

readdir

讀取一個(gè)目錄下的項(xiàng)目

FileSystem.setWorkingDirectory

getcwd/getwd

返回當(dāng)前工作目錄

FileSystem.setWorkingDirectory

chdir

更改當(dāng)前的工作目錄

1.3抽象FileSystem類的具體實(shí)現(xiàn)子類


【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

1.4FileSystem IO輸入系統(tǒng)相關(guān)類


【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

1.5FileSystem IO輸出系統(tǒng)相關(guān)類


【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載


二、HDFS的API操作


2.1測試集群版本信息

【Hadoop】HDFS API 操作大全,# 【==== HDFS&YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

2.2文件上傳下載和移動

/**
   * 本地文件上傳到 HDFS
   *
   * @param srcPath  本地路徑 + 文件名
   * @param dstPath  Hadoop路徑
   * @param fileName 文件名
   */
def copyToHDFS(srcPath: String, dstPath: String, fileName: String): Boolean = {
  var path = new Path(dstPath)
  val fileSystem: FileSystem = path.getFileSystem(conf)
  val isFile = new File(srcPath).isFile
  // 判斷路徑是否存在
  val existDstPath: Boolean = fileSystem.exists(path)
  if (!existDstPath) {
    fileSystem.mkdirs(path)
  }
  // 本地文件存在
  if (isFile) {
    // HDFS 采用 路徑+ 文件名
    path = new Path(dstPath + File.separator + fileName)
    // false: 是否刪除 目標(biāo)文件,false: 不覆蓋
    fileSystem.copyFromLocalFile(false, false, new Path(srcPath), path)
    return true
  }
  false
}


/**
   * Hadoop文件下載到本地
   *
   * @param srcPath hadoop 源文件
   * @param dstPath 目標(biāo)文件
   * @param fs      文件訪問對象
   */
def downLoadFromHDFS(srcPath: String, dstPath: String, fs: FileSystem): Unit = {
  val srcPathHDFS = new Path(srcPath)
  val dstPathLocal = new Path(dstPath)
  // false: 不刪除源文件
  fs.copyToLocalFile(false, srcPathHDFS, dstPathLocal)
}

/**
   * 檢查Hadoop文件是否存在并刪除
   *
   * @param path  HDFS文件
   */
def checkFileAndDelete(path: String, fs: FileSystem) = {
  val dstPath: Path = new Path(path)
  if (fs.exists(dstPath)) {
    // false: 是否遞歸刪除,否
    fs.delete(dstPath, false)
  }
}

  /**
   * 獲取指定目錄下,正則匹配后的文件列表
   *
   * @param dirPath   hdfs路徑
   * @param regexRule 正則表達(dá)式 ,如:"^(?!.*[.]tmp$).*$" ,匹配非 .tmp結(jié)尾的文件
   */
  def listStatusHDFS(dirPath: String, regexRule: String, fs: FileSystem): util.ArrayList[Path] = {
    val path = new Path(dirPath)
    val pattern: Pattern = Pattern.compile(regexRule)
    // 匹配的文件
    val fileList = new util.ArrayList[Path]()
    val fileStatusArray: Array[FileStatus] = fs.listStatus(path)
    for (fileStatus <- fileStatusArray) {
      // 文件 全路徑
      val filePath: Path = fileStatus.getPath()
      val fileName: String = filePath.getName.toLowerCase
      if (regexRule.equals("")) {
        // 如果匹配規(guī)則為空 則獲取目錄下的全部文件
        fileList.add(filePath)
        log.info("match file : " + fileName)
      } else {
        // 正則匹配文件
        if (pattern.matcher(fileName).matches()) {
          fileList.add(filePath)
          log.info("match file : " + fileName)
        }
      }
    }
    fileList
}


/**
 * 文件移動或重命名到指定目錄, 如:文件00000 重命名為00001
 *
 * @param srcPath 源文件路徑
 * @param dstPath 源文件路徑
 * @param fs      文件操作對象
 */
def renameToHDFS(srcPath: String, dstPath: String, fs: FileSystem): Boolean = {
    var renameFlag = false
    val targetPath = new Path(dstPath)
    // 目標(biāo)文件存在先刪除
    if (fs.exists(targetPath)) {
      fs.delete(targetPath, false)
    }
    renameFlag = fs.rename(new Path(srcPath), targetPath)
    if (renameFlag) {
      log.info("renamed file " + srcPath + " to " + targetPath + " success!")
    } else {
      log.info("renamed file " + srcPath + " to " + targetPath + " failed!")
    }
    renameFlag
}

2.3文件讀寫操作


Hadoop抽象文件系統(tǒng)也是使用流機(jī)制進(jìn)行文件的讀寫。Hadoop抽象文件系統(tǒng)中,用于讀文件數(shù)據(jù)的流是FSDataInputStream,對應(yīng)地,寫文件通過抽象類FSDataOutputStream實(shí)現(xiàn)。


/**
   * 讀取HDFS文件
   *
   * @param inPutFilePath 源文件路徑
   * @param fs            文件操作對象
   */
def readFromHDFS(inPutFilePath: String, OutputFilePath: String, fs: FileSystem) = {
  var fSDataInputStream: FSDataInputStream = null
  var bufferedReader: BufferedReader = null
  val srcPath = new Path(inPutFilePath)
  if (fs.exists(srcPath)) {
    val fileStatuses: Array[FileStatus] = fs.listStatus(srcPath)
    for (fileStatus <- fileStatuses) {
      val filePath: Path = fileStatus.getPath
      // 判斷文件大小
      if (fs.getContentSummary(filePath).getLength > 0) {
        fSDataInputStream = fs.open(filePath)
        bufferedReader = new BufferedReader(new InputStreamReader(fSDataInputStream))

        var line = bufferedReader.readLine()
        while (line != null) {
          print(line + "\n") // 打印
          line = bufferedReader.readLine()
        }
      }
    }
  }
  fSDataInputStream.close()
  bufferedReader.close()
}

/**
   * 讀取HDFS文件, 處理完成 重新寫入
   *
   * @param inPutFilePath 源文件路徑
   * @param OutputFilePath 輸出文件到新路徑
   * @param fs            文件操作對象
   */
def writeToHDFS(inPutFilePath: String, OutputFilePath: String, fs: FileSystem) = {
  var fSDataInputStream: FSDataInputStream = null
  var fSDataOutputStream: FSDataOutputStream = null
  var bufferedReader: BufferedReader = null
  var bufferedWriter: BufferedWriter = null
  val srcPath = new Path(inPutFilePath)
  var count = 0
  if (fs.exists(srcPath)) {
    val fileStatuses: Array[FileStatus] = fs.listStatus(srcPath)
    for (fileStatus <- fileStatuses) {
      val filePath: Path = fileStatus.getPath
      // 判斷文件大小
      if (fs.getContentSummary(filePath).getLength > 0) {
        fSDataInputStream = fs.open(filePath)
        bufferedReader = new BufferedReader(new InputStreamReader(fSDataInputStream))
        val outputFilePath = new Path(OutputFilePath + count)

        fSDataOutputStream = fs.create(outputFilePath)
        bufferedWriter = new BufferedWriter(new OutputStreamWriter(fSDataOutputStream, "UTF-8"))
        var line = bufferedReader.readLine()
        while (line != null) {
          val bytes: Array[Byte] = line.getBytes("UTF-8")
          bufferedWriter.write(new String(bytes) + "\n")
          line = bufferedReader.readLine()
        }
        bufferedWriter.flush()
        count += 1
      }
    }
  }
  fSDataInputStream.close()
  bufferedReader.close()
  bufferedWriter.close()
}

測試結(jié)果如下:

【Hadoop】HDFS API 操作大全,# 【==== HDFS&amp;YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

2.4文件狀態(tài)信息獲取


FileSystem. getContentSummary()提供了類似Linux命令du、df提供的功能。du表示"disk usage",它會報(bào)告特定的文件和每個(gè)子目錄所使用的磁盤空間大??;命令df則是"diskfree"的縮寫,用于顯示文件系統(tǒng)上已用的和可用的磁盤空間的大小。du、df是Linux中查看磁盤和文件系統(tǒng)狀態(tài)的重要工具。

getContentSummary()方法的輸入是一個(gè)文件或目錄的路徑,輸出是該文件或目錄的一些存儲空間信息,這些信息定義在ContentSummary,包括文件大小、文件數(shù)、目錄數(shù)、文件配額,已使用空間和已使用文件配額等。

 /**
   * HDFS路徑下文件信息統(tǒng)計(jì)
   *
   * @param dirPath hdfs路徑
   **/
  def listHDFSStatus(dirPath: String, fs: FileSystem) = {
    val path = new Path(dirPath)
    // 匹配的文件
    val contentSummary: ContentSummary = fs.getContentSummary(path)
    println("/tmp/kangll 目錄下子目錄個(gè)數(shù): ", contentSummary.getDirectoryCount)
    println("/tmp/kangll 目錄下文件個(gè)數(shù): ", contentSummary.getFileCount)
    println("/tmp/kangll 目錄下文件大?。?", contentSummary.getLength)
    println("/tmp/kangll 目錄下文件和子目錄個(gè)數(shù): ", contentSummary.getFileAndDirectoryCount)

  }

/tmp/kangll目錄信息獲取結(jié)果:

【Hadoop】HDFS API 操作大全,# 【==== HDFS&amp;YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

2.5實(shí)戰(zhàn)案例


案例說明: HDFS 文件清理, 根據(jù)文件大小、個(gè)數(shù)、程序休眠時(shí)間控制 勻速 批量刪除 HDFS 文件,當(dāng)文件越大 ,需要配置 刪除個(gè)數(shù)更少,休眠時(shí)間更長,防止 NameNode 負(fù)載過大,減輕DataNode磁盤讀寫壓力,從而不影響線上業(yè)務(wù)情況下清理過期數(shù)據(jù)。

package com.kangll.common.utils

import java.text.SimpleDateFormat
import java.util.concurrent.TimeUnit
import java.util.{Calendar, Date, Properties}
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{ContentSummary, FileStatus, FileSystem, Path}
import org.apache.log4j.Logger

import scala.collection.mutable.ListBuffer

/** ***************************************************************************************
 *
 * @auther kangll                               
 * @date 2023/09/12 12:10                                  
 * @desc HDFS 文件清理, 根據(jù)文件大小、個(gè)數(shù)、程序休眠時(shí)間控制 勻速 批量刪除
 *       HDFS 文件,當(dāng)文件越大 ,需要配置 刪除個(gè)數(shù)更少,休眠時(shí)間更長,防止
 *       NameNode 負(fù)載過大,減輕DataNode磁盤讀寫壓力,從而不影響線上業(yè)務(wù)下刪除
 *
 *
 *       1.遍歷文件夾下的文件個(gè)數(shù)據(jù), 當(dāng)遍歷的文件夾下的文件個(gè)數(shù)到達(dá)閾值時(shí) 將
 *        文件所述的 父路徑直接刪除
 *
 * ****************************************************************************************/
object CleanHDFSFileUtil {

  // 刪除文件總數(shù)統(tǒng)計(jì)
  var HDFS_FILE_SUM = 0
  // 批次刪除文件個(gè)數(shù)顯示
  var HDFS_FILE_BATCH_DEL_NUM = 0
  val start = System.currentTimeMillis()

  /**
   *
   * @param fs             文件操作對象
   * @param pathName       文件根路徑
   * @param fileList       批次清理的 buffer
   * @param saveDay        根據(jù)文件屬性 獲取文件創(chuàng)建時(shí)間  選擇文件保留最近的天數(shù)
   * @param sleepTime      休眠時(shí)間,防止一次性刪除太多文件  導(dǎo)致 datanode 文件負(fù)載太大
   * @param fileBatchCount 批次刪除文件的個(gè)數(shù), 相當(dāng)于是 上報(bào)到 namenode 文件清理隊(duì)列的大小,參數(shù)越大 隊(duì)列越大,datanode 磁盤負(fù)載相對來說就高
   * @return
   */
  def listPath(fs: FileSystem, pathName: String, fileList: ListBuffer[String], saveDay: Int, sleepTime: Long, fileBatchCount: Int): ListBuffer[String] = {
    val fm = new SimpleDateFormat("yyyy-MM-dd")
    // 獲取當(dāng)前時(shí)間
    val currentDay = fm.format(new Date())
    val dnow = fm.parse(currentDay)
    val call = Calendar.getInstance()
    call.setTime(dnow)
    call.add(Calendar.DATE, -saveDay)
    // 獲取保留天前的時(shí)期
    val saveDayDate = call.getTime
    // 遍歷文件
    val fileStatuses = fs.listStatus(new Path(pathName))

    for (status <- fileStatuses) {
      // 獲取到文件名
      val filePath = status.getPath
      if (status.isFile) {
        // 獲取到文件修改時(shí)間
        val time: Long = status.getModificationTime
        val hdfsFileDate = fm.parse(fm.format(new Date(time)))
        if (saveDayDate.after(hdfsFileDate)) {
          fileList += filePath.toString
          // 獲取文件個(gè)數(shù)
          val cs: ContentSummary = fs.getContentSummary(filePath)
          HDFS_FILE_SUM += cs.getFileCount.toInt
          HDFS_FILE_BATCH_DEL_NUM += cs.getFileCount.toInt
          if (HDFS_FILE_BATCH_DEL_NUM >= fileBatchCount) {
            val end = System.currentTimeMillis()
            println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
            println("++++++++++++++++ 遍歷文件數(shù)量達(dá)到 " + HDFS_FILE_BATCH_DEL_NUM + " 個(gè),刪除HDFS文件 ++++++++++++++++")
            println("++++++++++++++++++++++++++++ 休眠 " + sleepTime + " S ++++++++++++++++++++++++++++")
            println("++++++++++++++++++++++++ 刪除文件總數(shù):" + HDFS_FILE_SUM + " ++++++++++++++++++++++++++")
            println("++++++++++++++++++++++++ 程序運(yùn)行時(shí)間:" + (end - start) / 1000 + " s ++++++++++++++++++++++++")
            println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
            HDFS_FILE_BATCH_DEL_NUM = 0
            TimeUnit.MILLISECONDS.sleep(sleepTime)

          }

          // 文件刪除根據(jù)絕對路徑刪除
          println("+++++ 刪除文件: " + filePath + "+++++")
          // 遞歸刪除
          fs.delete(filePath, true)
        }

      } else {
        // 遞歸文件夾
        listPath(fs, filePath.toString, fileList, saveDay, sleepTime, fileBatchCount)
      }
    }
    println("+++++++++++++++++++++++++   刪除文件總數(shù):" + HDFS_FILE_SUM + " +++++++++++++++++++++++++")
    fileList
  }

   /**
   * 刪除空文件夾
   *
   * @param fs              文件操作對象
   * @param pathName        路徑
   * @param pathSplitLength 文件按照"/"拆分后的長度
   */
  def delEmptyDirectory(fs: FileSystem, pathName: String, pathSplitLength: Int) = {

    // 遍歷文件
    val fileStatuses = fs.listStatus(new Path(pathName))
    for (status <- fileStatuses) {
      if (status.isDirectory) {
        val path: Path = status.getPath
        // /kangll/winhadoop/temp/wmall_batch_inout/day/1660878372 = 7
        val delPathSplitLength = path.toString.substring(6, path.toString.length).split("/").length
        //  filePath  /kangll/winhadoop/temp/wmall_batch_inout/day  子時(shí)間戳文件夾兩個(gè)
        //        val hdfsPathListCount = fileStatuses.length
        val hdfsPathListCount = fs.listStatus(path).length
        if (delPathSplitLength == pathSplitLength && hdfsPathListCount == 0) {
          println("+++++++++++++++++ 刪除空文件夾 : " + path + " +++++++++++++++++++")
          fs.delete(path, true)
        }
      }
    }
  }

  def main(args: Array[String]): Unit = {
    val logger = Logger.getLogger("CleanHDFSFileUtil")
    val conf = new Configuration()
    conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem")
    conf.set("fs.file.impl", "org.apache.hadoop.fs.LocalFileSystem")
    val fs = FileSystem.get(conf)

    val fileList = new ListBuffer[String]
    
    val hdfsDir = if (args.size > 0) args(0).toString else System.exit(0).toString
    val saveDay = if (args.size > 1) args(1).toInt else 2
    val sleepTime = if (args.size > 2) args(2).toLong else 10
    val fileBatchCount = if (args.size > 3) args(3).toInt else 5
    /*
     默認(rèn)不啟用文件夾刪除,參數(shù)為 文件夾絕對路徑Split后的數(shù)組長度
     如 路徑  /winhadoop/temp/wmall_batch_inout/thirty"  配置為 7
     */
    val pathSplitLength = if (args.size > 4) args(4).toInt else 20
    // 刪除文件
    listPath(fs, hdfsDir, fileList, saveDay, sleepTime, fileBatchCount)
    // 刪除空文件夾
    delEmptyDirectory(fs, hdfsDir, pathSplitLength)
    fs.close()
  }
}

調(diào)用腳本

#                                                                                                         
# 腳本功能: 過期文件清理                                                                                              
# 作    者: kangll                                                                                             
# 創(chuàng)建時(shí)間: 2023-09-14                                                                                           
# 修改內(nèi)容: 控制刪除文件的批次個(gè)數(shù),程序休眠時(shí)間傳入                                                              
# 當(dāng)前版本: 1.0v                                                                                                 
# 調(diào)度周期: 一天一次                                                                                                 
# 腳本參數(shù): 刪除文件夾、文件保留天數(shù)、程序休眠時(shí)間、批次刪除個(gè)數(shù)                                                  
#  1.文件根路徑,子文件夾遞歸遍歷                                                                                                   
#  2.文件保留天數(shù)                                                                                                 
#  3.程序休眠時(shí)間 防止 DataNode 刪除文件負(fù)載過大,單位  秒                                                        
#  4.批次刪除文件個(gè)數(shù) ,如配置 100,當(dāng)滿足文件個(gè)數(shù)100時(shí), 整批執(zhí)行 delete,緊接著程序休眠                           
#  5.默認(rèn)不啟用文件夾刪除,也就是不傳參,參數(shù)為 文件夾絕對路徑Split后的數(shù)組長度                                   
#        /winhadoop/temp/wmall_batch_inout/thirty/時(shí)間戳/ Split后 長度為7,默認(rèn)刪除時(shí)間戳文件夾                                                                         
#

###  對應(yīng)的新刪除程序
jarPath=/hadoop/project/del_spark2-1.0-SNAPSHOT.jar

### 集群日志
java -classpath $jarPath com.kangll.common.utils.CleanHDFSFileUtil /spark2-history 3 10 100

【Hadoop】HDFS API 操作大全,# 【==== HDFS&amp;YARN ====】,hadoop,hdfs,HDFS API,listStatus,文件上傳和下載

參考 :

hadoop抽象文件系統(tǒng)filesystem框架介紹_org.apache.hadoop.fs.filesystem_souy_c的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-722942.html

Hadoop FileSystem文件系統(tǒng)的概要學(xué)習(xí) - 回眸,境界 - 博客園

hadoop抽象文件系統(tǒng)filesystem框架介紹_org.apache.hadoop.fs.filesystem_souy_c的博客-CSDN博客

到了這里,關(guān)于【Hadoop】HDFS API 操作大全的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 從零開始的Hadoop學(xué)習(xí)(五)| HDFS概述、shell操作、API操作

    從零開始的Hadoop學(xué)習(xí)(五)| HDFS概述、shell操作、API操作

    1.1 HDFS 產(chǎn)出背景及定義 1) HDFS 產(chǎn)生背景 隨著數(shù)據(jù)量越來越大,在一個(gè)操作系統(tǒng)存不下所有的數(shù)據(jù),那么就分配到更多的操作系統(tǒng)管理的磁盤中,但是不方便管理和維護(hù),迫切 需要一種系統(tǒng)來管理多臺機(jī)器上的文件 ,這就是分布式文件管理系統(tǒng)。 HDFS只是分布式文件管理系統(tǒng)

    2024年02月10日
    瀏覽(94)
  • Windwos安裝Hadoop 并在IDEA中利用Maven實(shí)現(xiàn)HDFS API操作

    Windwos安裝Hadoop 并在IDEA中利用Maven實(shí)現(xiàn)HDFS API操作

    本次hadoop的安裝系統(tǒng)為Windows10、Hadoop版本為3.3.6、Maven版本為3.9.4、Java版本為17.0.2。本教程基于前篇教程Hadoop集群、Java安裝均完成后的后續(xù)教程,如未完成安裝請查看前置教程。Hadoop、java安裝 ############################################################################################# 此外,大數(shù)

    2024年01月18日
    瀏覽(23)
  • Hadoop生態(tài) | HDFS | Yarn | Hive | Hbase

    Hadoop生態(tài) | HDFS | Yarn | Hive | Hbase

    ? 簡單說兩句 ? 作者: 后端小知識 , CSDN后端領(lǐng)域新星創(chuàng)作者|阿里云專家博主 CSDN 個(gè)人主頁 :后端小知識 ?? GZH : 后端小知識 ?? 歡迎關(guān)注 ?? 點(diǎn)贊 ?? 收藏 ?? 留言 ?? 進(jìn)入大數(shù)據(jù)階段就意味著進(jìn)入NoSQL階段,更多的是面向OLAP場景,即數(shù)據(jù)倉庫、BI應(yīng)用等。 大數(shù)據(jù)技

    2024年04月08日
    瀏覽(25)
  • Middleware ? Hadoop功能與使用詳解(HDFS+YARN)

    Middleware ? Hadoop功能與使用詳解(HDFS+YARN)

    Hadoop是一個(gè)開源的分布式計(jì)算和存儲框架,由Apache基金會開發(fā)和維護(hù)。Hadoop 為龐大的計(jì)算機(jī)集群提供可靠的、可伸縮的應(yīng)用層計(jì)算和存儲支持,它允許使用簡單的編程模型跨計(jì)算機(jī)群集分布式處理大型數(shù)據(jù)集,并且支持在單臺計(jì)算機(jī)到幾千臺計(jì)算機(jī)之間進(jìn)行擴(kuò)展。 Hadoop使用

    2024年02月07日
    瀏覽(26)
  • 單機(jī)搭建hadoop環(huán)境(包括hdfs、yarn、hive)

    單機(jī)搭建hadoop環(huán)境(包括hdfs、yarn、hive)

    單機(jī)可以搭建偽分布式hadoop環(huán)境,用來測試和開發(fā)使用,hadoop包括: hdfs服務(wù)器, yarn服務(wù)器,yarn的前提是hdfs服務(wù)器, 在前面兩個(gè)的基礎(chǔ)上,課可以搭建hive服務(wù)器,不過hive不屬于hadoop的必須部分。 過程不要想的太復(fù)雜,其實(shí)挺簡單,這里用最糙最快最直接的方法,在我的單

    2024年02月20日
    瀏覽(25)
  • Hadoop三大“金剛”完美剖析 ─────── HDFS、MapReduce、YARN

    Hadoop三大“金剛”完美剖析 ─────── HDFS、MapReduce、YARN

    因?yàn)镠DFS是分布式儲存文件的模式,所以在儲存文件的數(shù)據(jù)時(shí),會將文件切分為大小一致的數(shù)據(jù)塊, 如果出現(xiàn)文件大小不是128M的倍數(shù)時(shí),那么最后一個(gè)文件會與之前切分文件大小不一致。 被切分成的數(shù)據(jù)塊就是Block塊,NameNode將Block塊進(jìn)行分布式儲存到DataNode中。? ? (Block塊

    2024年04月10日
    瀏覽(17)
  • Hadoop——HDFS、MapReduce、Yarn期末復(fù)習(xí)版(搭配尚硅谷視頻速通)

    Hadoop——HDFS、MapReduce、Yarn期末復(fù)習(xí)版(搭配尚硅谷視頻速通)

    1.1 HDFS定義 HDFS(Hadoop Distributed File System),它是一個(gè)文件系統(tǒng),用于存儲文件,通過目錄樹來定位文件;其次, 它是分布式的 ,由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色。 HDFS的使用場景 :適合一次寫入,多次讀出的場景。一個(gè)文件經(jīng)過創(chuàng)建、寫入和關(guān)

    2024年01月17日
    瀏覽(21)
  • 【運(yùn)維】hadoop 集群安裝(三)hdfs、yarn集群配置、nodemanager健康管理講解

    上篇簡單說明了多節(jié)點(diǎn)的hadoop節(jié)點(diǎn)怎么安裝,但是沒有細(xì)致的分析hadoop相關(guān)配置,具體怎么根據(jù)環(huán)境進(jìn)行配置,接下來我們對這些配置進(jìn)行講解 Daemon Environment Variable NameNode HDFS_NAMENODE_OPTS DataNode HDFS_DATANODE_OPTS Secondary NameNode HDFS_SECONDARYNAMENODE_OPTS ResourceManager YARN_RESOURCEMANAGER_OP

    2024年02月10日
    瀏覽(19)
  • 【Hadoop-HDFS】HDFS常用操作命令

    hadoop fs -ls / 普通創(chuàng)建: hadoop fs -mkdir /xiaolin 遞歸創(chuàng)建: hadoop fs -mkdir -p /xiaolin/xiaoyin mkdir xuan.txt hadoop fs -moveFromLocal xuan.txt /xiaolin hadoop fs -copyFromLocal xuan.txt / hadoop fs -put xuan.txt / 文件名稱相同時(shí)覆蓋hdfs上的文件: -f hadoop fs -put -f xuan.txt / hadoop fs -copyToLocal /xiaolin ./ hadoop fs -get

    2024年02月05日
    瀏覽(20)
  • hadoop調(diào)用HDFS java api實(shí)現(xiàn)在HDFS上創(chuàng)建文件夾

    hadoop調(diào)用HDFS java api實(shí)現(xiàn)在HDFS上創(chuàng)建文件夾

    目錄 一、前期準(zhǔn)備 1、Hadoop集群已配置完畢 2、Linux系統(tǒng)安裝jdk 3、安裝并破解IntelliJ?IDEA 二、通過JAVA API操縱HDFS 1.在IDEA中創(chuàng)建項(xiàng)目 ?2.在hdfs項(xiàng)目的src-main-java路徑下創(chuàng)建一個(gè)包,然后在包下創(chuàng)建一個(gè)java類實(shí)現(xiàn)hdfs的文件操作 ?3.java類的代碼 4.對JAVA程序傳入?yún)?shù)后運(yùn)行程序 ?5

    2024年02月08日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包