中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 服務器 > 
  • 云計算 > 
  • 通過HDFS API在Eclipse上編寫程序將本地文件上傳到HDFS分布式文件系統中異常怎么辦

通過HDFS API在Eclipse上編寫程序將本地文件上傳到HDFS分布式文件系統中異常怎么辦

發布時間:2021-12-09 11:18:50 來源:億速云 閱讀:439 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關通過HDFS API在Eclipse上編寫程序將本地文件上傳到HDFS分布式文件系統中異常怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、將本地文件上傳到HDFS中,遇到問題:


七月 03, 2014 4:44:36 下午 org.apache.hadoop.ipc.Client$Connection handleConnectionFailure
INFO: Retrying connect to server: master/192.168.232.134:8020. Already tried 0 time(s).

Call to master/192.168.232.134:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information

解決方法:

問題所在:路徑錯誤

最開始我路徑寫為:

String dst = "hdfs://master/opt/file06.txt";

String dst = "hdfs://192.168.232.134/opt/file06.txt";

String dst = "hdfs://master:9001/opt/file06.txt";

String dst = "hdfs://master/opt/file06.txt";

這幾種寫法都是不對的,正確路徑為:

String dst = "hdfs://master:9000/opt/file06.txt";

注意:

事實上,“INFO: Retrying connect to server: master/192.168.232.134:8020. Already tried 0 time(s).”這兒顯示無法連接端口8020,是因為我們在程序中未明確指定端口9000,然而“fs.default.name”配置項指定的“namenode RPC交互端口“默認為8020,但是我們在hdfs-site.xml文件中指定fs.default.name的端口為9000,所以在程序中,連接8020端口失效,正確寫法為”hdfs://192.168.232.134:9000/opt/file06.txt“或”hdfs://master:9000/opt/file06.txt“

1)、在這兒,如果我們win上配置了master,那么,我們使用master是可以的,在這兒master等價于192.168.232.134

2)、重要的是端口要寫正確,這兒端口應該為9000

所以,String dst = "hdfs://master:9000/opt/file06.txt";和String dst = "hdfs://192.168.232.134:9000/opt/file06.txt";兩種寫法都正確

但是,String dst = "hdfs://master:9001/opt/file06.txt";和String dst = "hdfs://192.168.232.134:9001/opt/file06.txt";兩種寫法都不正確

2、Cannot create file/opt/file02.txt. Name node is in safe mode.

在hadoop中,經常遇到safe mode這個問題,雖然網上解決辦法都可以解決問題,但是,一直沒有明白究竟是什么意思。

其實,它處于安全模式的時候,我們只需要再等等,它可以自動離開安全模式的。我們沒有必要去執行命令強制退出安全模式。

強制退出安全模式的命令:bin/hadoop dfsadmin -safemode leave

關于安全模式的相關介紹可參見文章《Hadoop 解除 "Name node is in safe mode"》

附:

1)、編寫程序操作HDFS文件系統的相關代碼可參見鏈接:《如何使用Java API讀寫HDFS》

2)、將采用JAVA API將本地文件復制到hadoop文件系統

package com.langgo.hadoop3;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
/**
 * @author hadoop
 *將本地文件復制到hadoop文件系統
 */
public class FileCopyWithProgress {
 public static void main(String[] args) throws IOException {
  
  String localSrc = "/home/wqj/opt/140702152709log.txt";
  String dst = "hdfs://master:9000/opt/file06.txt";
  
  FileCopyWithProgress.fileCopy(localSrc, dst);
 }
 
 public static void fileCopy(String localSrc, String dst) throws IOException{
  
  InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
  
  Configuration conf = new Configuration();
  FileSystem fs = FileSystem.get(URI.create(dst), conf);
  
  OutputStream out = fs.create(new Path(dst), new Progressable() {
   
   @Override
   public void progress() {
    System.out.println(".");
    
   }
  });
  
  IOUtils.copyBytes(in, out, 4096, true);
 }
}

關于“通過HDFS API在Eclipse上編寫程序將本地文件上傳到HDFS分布式文件系統中異常怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云和县| 泊头市| 阳山县| 荥阳市| 颍上县| 上高县| 惠安县| 宿迁市| 新营市| 新龙县| 衢州市| 弥勒县| 浮山县| 大足县| 华阴市| 禹州市| 黔西县| 师宗县| 长阳| 芮城县| 盐城市| 浠水县| 木里| 丹凤县| 叶城县| 澎湖县| 陆良县| 武安市| 西安市| 郁南县| 株洲市| 辉南县| 肃宁县| 贵港市| 咸丰县| 丰镇市| 夏河县| 邹城市| 黄浦区| 普宁市| 资讯|