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的更多相关文章

  1. HA模式下的java api访问要点

    在非HA架构的HDFS中,客户端要通过java接口调用HDFS时一般是在JobRunner的类中按照下面的方式: 因为nodename只有一个节点所以会在代码中显式的指明要连接哪一个节点:但是在HA模 ...

  2. Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统

    前言 我们知道HDFS集群中,所有的文件都是存放在DN的数据块中的.那我们该怎么去查看数据块的相关属性的呢?这就是我今天分享的内容了 一.HDFS中数据块概述 1.1.HDFS集群中数据块存放位置 我 ...

  3. spark上 spark-shell和java -jar访问hdfs路径问题

    部署spark集群 使用spark包 spark-1.0.2-bin-hadoop2.tgz 在spark-shell和java -jar访问hadoop hdfs上的文件写法是有区别的 在spark ...

  4. 配置伪分布模式下的hadoop以及采用fuse-dfs来访问HDFS

    实验目标 配置环境的主要目的是得到HDFS的客户端fuse-dfs的IO性能.本来的服务器上没有任何环境,因此安装均是从无到有的.系统是Ubuntu server 14.04 amd64.整个过程参考 ...

  5. java 程序访问hdfs错误 hadoop2.2.0

    很奇怪的问题,程序在eclipse上跑没问题: 这就代码:FileSystem fs = FileSystem.get(URI.create(hdfs_file),  conf , "use ...

  6. 伪分布模式下执行wordcount实例时报错解决办法

    问题1.不能分配内存,错误提示如下: FAILEDjava.lang.RuntimeException: Error while running command to get file permiss ...

  7. HDFS的java接口——简化HDFS文件系统操作

    今天闲来无事,于是把HDFS的基本操作用java写出简化程序出来给大家一些小小帮助! package com.quanttech; import org.apache.hadoop.conf.Conf ...

  8. 【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式

    阅读目录 ~/.ssh/authorized_keys 把公钥加到用于认证的公钥文件中,authorized_keys是用于认证的公钥文件 方式2: (未测试,应该可用) 基于空口令创建新的SSH密钥 ...

  9. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)

    Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...

随机推荐

  1. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  2. Start my cnBlogs

    Compared to CSDN blog, althought it's my first time to use CNBlog,i felt it makes me more comfortabl ...

  3. EntityFramework Add方法与Attach区别

    一 先发问. 问题:在使用EF过程中,能否有一个方法可以直接执行传入的SQL语句.纠结的只找到了调用存储过程的方法,难道要SqlHelper.cs?    二 友情提示 本文内容参考自MSDN. 三 ...

  4. UVA 10954 Add All 哈夫曼编码

    题目链接: 题目 Add All Time Limit:3000MS Memory Limit:0KB 问题描述 Yup!! The problem name reflects your task; ...

  5. UVA 1175 Ladies' Choice 稳定婚姻问题

    题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...

  6. C# IL DASM 使用

    IL DASM反编译工具 使用C#的猿人或多或少都会对微软的IL反编译工具(ildasm.exe)有所认识.我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改.感觉他还是很强大. IL ...

  7. 用hibernate自动创建mysql表,添加失败org.hibernate.exception.SQLGrammarException

    今天遇到了一个很坑人的问题,从昨晚一直搞到今天早上,终于发现了,先整理下: [背景]:利用hibernate自动给mysql创建一个表,然后为表里面添加一行记录,非常的简单(当然其中还涉及到sprin ...

  8. [转载]关于C++ const 的全面总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类 ...

  9. MATLAB——PLOT绘图

    MATLAB——PLOT绘图 格式化绘图: 1.color: b g  r c m y k w blue green red  cyan magenta yellow black white 2.ty ...

  10. VisionTimer BUG && Start

    void Start() { vp_Timer.In(0.0f, delegate() { Debug.Log("Start"); }, 10, 1.0f); } Version ...