文档章节

通过HDFS API,在Eclipse上编写程序,将本地文件上传到HDFS分布式文件系统中异常

hiqj
 hiqj
发布于 2014/07/03 19:00
字数 748
阅读 316
收藏 0

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);
 }
}


© 著作权归作者所有

hiqj
粉丝 24
博文 208
码字总数 92586
作品 0
渝北
程序员
私信 提问
HDFS的Shell访问和Java API访问

Shell访问HDFS常用命令 1.shell 操作单个 HDFS 集群 下面列举出几个常用场景下的命令。 1、创建文件夹 HDFS 上的文件目录结构类似 Linux,根目录使用 "/" 表示。下面的命令将在 /middle 目录...

等待救赎
2015/10/19
269
0
原生态在hadoop上运行java程序

第一种:原生态运行jar包 1,利用eclipse编写Map-Reduce方法,一般引入hadoop-core-1.1.2.jar。注意这里eclipse里没有安装hadoop的插件,只是引入其匝包,该eclipse可以安装在windows或者lin...

zhao_xiao_long
2013/07/30
0
0
Hadoop中MR程序的几种提交运行模式

本地模型运行 1:在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行 ----输入输出数据可以放在本地路径下(c:/wc/srcdata/) ----输入输出数据也可以放...

刘洋intsmaze
2016/06/24
0
0
Hadoop大数据入门到实战(第五节) - HDFS文件系统(JavaApi)

本节内容 本节我们重点来学习HDFS系统提供的JavaApi,首先我们要深入探索Hadoop的类,它是与Hadoop的某一文件系统进行交互的API。 我们先来学习并掌握:1.对象的使用,2.对象的使用。 如果你...

MasterXiao
2018/08/09
0
0
Hadoop系列007-HDFS客户端操作

title: Hadoop系列007-HDFS客户端操作 date: 2018-12-6 15:52:55 updated: 2018-12-6 15:52:55 categories: Hadoop tags: [Hadoop,HDFS,HDFS客户端] 本人微信公众号,欢迎扫码关注! HDFS客户......

云端笑猿
2018/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微信公众号开发 (4) 网页授权

一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 微信公众号开发 (3) 菜单处理 本文将实现 网页授权 获取用户基本信息 网页授权流程 填写网页授权回调域名...

郑清
6分钟前
25
0
号外!号外!百度语音开源库更新了

开源:ReactNative集成百度语音开源库,在这篇文章中作者开源了一个ReactNative集成百度语音合成的组件库,今天通过查看Github上的关于开源react-native-baidu-vtts 的issues,有朋友提到了一...

凌宇之蓝
11分钟前
67
0
【springcloud】之Eureka Server集群搭建

Eureka是微服务架构中的注册中心,专门负责服务的注册与发现 ,里面有一个注册表,保存了各服务所在的机器和端口号 下面我们开始配置 在这里,我配置了两个eureka server 1.新建springboot+...

西元yg
32分钟前
53
0
0120 springboot集成Mybatis和代码生成器

在日常开发中,数据持久技术使用的架子使用频率最高的有3个,即spring-jdbc , spring-jpa, spring-mybatis.详情可以看我之前的一篇文章spring操作数据库的3个架子 . spring-jdbc封装的比较少...

春天springcarter
33分钟前
55
0
re.search和re.match有什么区别?

Python re模块中的search()和match()函数有什么区别? 我已经阅读了文档 ( 当前文档 ),但是我似乎从未记得它。 我一直在查找并重新学习它。 我希望有人会用示例清楚地回答它,以便(也许)...

技术盛宴
33分钟前
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部