伪分布模式下使用java接口,访问hdfs
package com.bq.pro; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.hadoop.util.Progressable; public class MergeFiles {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws IOException {
Configuration conf=new Configuration();
FileSystem localInputFs=FileSystem.getLocal(conf);
//FileSystem hdfsOutputFs=FileSystem.get(conf);
String[] otherargs=new GenericOptionsParser(conf,args).getRemainingArgs();
Path inputLocalDir=new Path(otherargs[0]);
Path hdfsPathOutput=new Path(otherargs[1]);
FileSystem hdfsOutputFs=hdfsPathOutput.getFileSystem(conf);
try {
FileStatus[] inputFiles=localInputFs.listStatus(inputLocalDir);
FSDataOutputStream out=hdfsOutputFs.create(hdfsPathOutput,new Progressable() { @Override
public void progress() {
System.out.print("."); }
});
for(int i=0;i<inputFiles.length;i++)
{
FSDataInputStream in=localInputFs.open(inputFiles[i].getPath());
byte[] buffer=new byte[100];
int byteRead=0;
while((byteRead=in.read(buffer))>0)
{
out.write(buffer, 0, byteRead); }
in.close();
}
out.close();
//localInputFs.delete(inputLocalDir); } catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
} }
在参数中输入:/home/haduser/workspace/MergeCDFiles/resources/ hdfs://localhost:9000/opt/hadoop/tmp/test/a.txt
伪分布模式下用FileSystem.get(conf) 获取hdfs会出现:
Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://localhost:9000/opt/hadoop/tmp/test, expected: file:///
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:390)
at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:340)
at org.apache.hadoop.fs.ChecksumFileSystem.mkdirs(ChecksumFileSystem.java:492)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:377)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:364)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:564)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:464)
at com.bq.pro.MergeFiles.main(MergeFiles.java:26)
使用FileSystem hdfsOutputFs=hdfsPathOutput.getFileSystem(conf);来代替的时候就不会用问题,具体原因不详,应该是伪分布下的问题,在集群里应该不会有问题。
伪分布模式下使用java接口,访问hdfs的更多相关文章
- HA模式下的java api访问要点
在非HA架构的HDFS中,客户端要通过java接口调用HDFS时一般是在JobRunner的类中按照下面的方式: 因为nodename只有一个节点所以会在代码中显式的指明要连接哪一个节点:但是在HA模 ...
- Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...
- spark上 spark-shell和java -jar访问hdfs路径问题
部署spark集群 使用spark包 spark-1.0.2-bin-hadoop2.tgz 在spark-shell和java -jar访问hadoop hdfs上的文件写法是有区别的 在spark ...
- 配置伪分布模式下的hadoop以及采用fuse-dfs来访问HDFS
实验目标 配置环境的主要目的是得到HDFS的客户端fuse-dfs的IO性能.本来的服务器上没有任何环境,因此安装均是从无到有的.系统是Ubuntu server 14.04 amd64.整个过程参考 ...
- java 程序访问hdfs错误 hadoop2.2.0
很奇怪的问题,程序在eclipse上跑没问题: 这就代码:FileSystem fs = FileSystem.get(URI.create(hdfs_file), conf , "use ...
- 伪分布模式下执行wordcount实例时报错解决办法
问题1.不能分配内存,错误提示如下: FAILEDjava.lang.RuntimeException: Error while running command to get file permiss ...
- HDFS的java接口——简化HDFS文件系统操作
今天闲来无事,于是把HDFS的基本操作用java写出简化程序出来给大家一些小小帮助! package com.quanttech; import org.apache.hadoop.conf.Conf ...
- 【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
阅读目录 ~/.ssh/authorized_keys 把公钥加到用于认证的公钥文件中,authorized_keys是用于认证的公钥文件 方式2: (未测试,应该可用) 基于空口令创建新的SSH密钥 ...
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)
Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...
随机推荐
- Windows Phone中的图形渲染处理
前言 这篇文章主要介绍Windows Phone中XAML的渲染处理过程,你可以根据下文中所提到的内容来优化现有的XAML页面,来提高页面渲染的性能. XAML的渲染包括以下两个阶段: 1. 光 ...
- python之super()函数
python之super()函数 python的构造器奇特, 使用魔方. 构造器内对基类对象的初始化同样也很奇特, 奇特到没有半点优雅! 在构造器中使用super(class, instance)返回 ...
- 【Go】 格式处理
格式化字符串 在golang里面获取时间戳并不难.只要加载time包.time.Now().Unix() fmt.Sprintf("%d",int64),自此,go语言的int转换 ...
- spring中Bean的注入类型
1.属性注入 即通过setXxx()方法注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入是实际应用中最常采用的注入方式. 属性注入要求Bean提供 ...
- 如何在mysql中退出当前窗口界面而不关闭窗口的方法
CTRL+Cexit;quit ;
- 分析 "ADO" "ADODB" "ADODC" 之间的区别与联系
在敲学生信息管理系统的时候,通过查阅了解了一些关于 ADO / ADODB / ADODC / 的简单描述,想想将他们对 比着总结一下更容易理解记忆.尽管都是一些浅显的东西,不过对像我这样的菜鸟们还是 ...
- Notes of the scrum meeting(10/28)
meeting time:4:00~6:00p.m.,October 28th,2013 meeting place:雕刻时光 attendees: 顾育豪 ...
- 面试问到:JDBC、hibernate、ibati
一.JDBC.Connection(连接) 优点:运行高效.快捷. 缺点:代码多.异常多.不支持跨平台. 二.ibatis 1.根据jdbc的基本建立连接. 2.通过anntation+xml.jav ...
- Ffmpeg 定位文件(seek file)
有朋友问到ffmpeg播放文件如何定位问题,我想到应该还有一些新手朋友对这一块比较陌生.ffmpeg定位问题用到seek方法,代码 如下: void SeekFrame(AVFormatContext ...
- 【环境】Linux下连接无线网常用命令
启用/重启/关闭 网络服务 /etc/init.d/networking start /etc/init.d/networking restart /etc/init.d/networking sto ...