Hadoop文件系统是一个抽象的概念,hdfs仅仅是Hadoop文件系统的其中之一。

就hdfs而言,访问该文件系统有两种方式:(1)利用hdfs自带的命令行方式,此方法类似linux下面的shell命令;(2)利用hdfs的java接口,通过编写java程序来实现。

操作环境:hadoop-1.0.4,java1.7.0_65,Ubuntu 14.04.1 LTS

  1. import java.io.InputStream;
  2. import java.net.URI;
  3.  
  4. import org.apache.hadoop.conf.Configuration;
  5. import org.apache.hadoop.fs.FSDataInputStream;
  6. import org.apache.hadoop.fs.FileSystem;
  7. import org.apache.hadoop.fs.Path;
  8. import org.apache.hadoop.io.IOUtils;
  9.  
  10. public class FileSystemCat {
  11.  
  12. public static void main(String[] args) throws Exception {
  13. String uri = args[0];
  14. Configuration conf = new Configuration();
  15. FileSystem fs = FileSystem.get(URI.create(uri), conf);
  16. InputStream in = null;
  17. try {
  18. in = fs.open(new Path(uri));
  19. IOUtils.copyBytes(in, System.out, 4096, false);
  20. } finally {
  21. IOUtils.closeStream(in);
  22. }
  23. }
  24.  
  25. }

气死我了,这个程序都还没运行成功。

一开始,搞不清楚到底需要import那些类,  关于代码中的类需要import哪些package,可以查这个API文档:http://hadoop.apache.org/docs/current/api/index.html

现在能javac编译成功了,但用hadoop filename  还是不能运行,报错提示:

hadoop FileSystemCat hdfs://conf.sh
Error: Could not find or load main class FileSystemCat

气死我了!!!!!!!!!!!!!!!!!!!!!!1

-----------------------------------

我想一定是关于java程序运行,以及classpath的问题,,,,,我需要搞清楚!21:28:54   2014-10-23

------------------------------

问题搞定了,hadoop-env.sh这个文件里面有个CLASSPATH的参数设置,这个设置值要和javac编译生成的.class文件一致  2014-10-23 23:59:53

今天发现,在没有启动hadoop的情况下,居然可以直接启动hbase    2014-10-28  11:12:29

用javac FileSystemCat.java时,会出现很多报错,

  1. stu@master:~$ javac FileSystemCat.java
  2. FileSystemCat.java:4: error: package org.apache.hadoop.conf does not exist
  3. import org.apache.hadoop.conf.Configuration;
  4. ^
  5. FileSystemCat.java:5: error: package org.apache.hadoop.fs does not exist
  6. import org.apache.hadoop.fs.FSDataInputStream;
  7. ^
  8. FileSystemCat.java:6: error: package org.apache.hadoop.fs does not exist
  9. import org.apache.hadoop.fs.FileSystem;
  10. ^
  11. FileSystemCat.java:7: error: package org.apache.hadoop.fs does not exist
  12. import org.apache.hadoop.fs.Path;
  13. ^
  14. FileSystemCat.java:8: error: package org.apache.hadoop.io does not exist
  15. import org.apache.hadoop.io.IOUtils;
  16. ^
  17. FileSystemCat.java:17: error: cannot find symbol
  18. Configuration conf = new Configuration();
  19. ^
  20. symbol: class Configuration
  21. location: class FileSystemCat
  22. FileSystemCat.java:17: error: cannot find symbol
  23. Configuration conf = new Configuration();
  24. ^
  25. symbol: class Configuration
  26. location: class FileSystemCat
  27. FileSystemCat.java:18: error: cannot find symbol
  28. FileSystem fs = FileSystem.get(URI.create(uri), conf);
  29. ^
  30. symbol: class FileSystem
  31. location: class FileSystemCat
  32. FileSystemCat.java:18: error: cannot find symbol
  33. FileSystem fs = FileSystem.get(URI.create(uri), conf);
  34. ^
  35. symbol: variable FileSystem
  36. location: class FileSystemCat
  37. FileSystemCat.java:21: error: cannot find symbol
  38. in = fs.open(new Path(uri));
  39. ^
  40. symbol: class Path
  41. location: class FileSystemCat
  42. FileSystemCat.java:22: error: cannot find symbol
  43. IOUtils.copyBytes(in, System.out, 4096, false);
  44. ^
  45. symbol: variable IOUtils
  46. location: class FileSystemCat
  47. FileSystemCat.java:24: error: cannot find symbol
  48. IOUtils.closeStream(in);
  49. ^
  50. symbol: variable IOUtils
  51. location: class FileSystemCat
  52. 12 errors
  53. stu@master:~$

  这时需要在编译的时候,把hadoop里面的相应jar文件设置为classpath参数,即如下就对了:

  1. stu@master:~$ javac -classpath /home/stu/hadoop-1.0.4/hadoop-core-1.0.4.jar FileSystemCat.java

  然后把生成的FileSystemCat.java复制到 hadoop-env.sh里面设定的文件夹下即可。

# Extra Java CLASSPATH elements. Optional.
export HADOOP_CLASSPATH=/home/stu/myclass

Hadoop Java API 操作 hdfs--1的更多相关文章

  1. Hadoop Java API操作HDFS文件系统(Mac)

    1.下载Hadoop的压缩包 tar.gz   https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/ 2.关联jar包 在 ...

  2. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...

  3. 使用Java Api 操作HDFS

    如题 我就是一个标题党  就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Ma ...

  4. hadoop学习笔记(五):java api 操作hdfs

    HDFS的Java访问接口 1)org.apache.hadoop.fs.FileSystem 是一个通用的文件系统API,提供了不同文件系统的统一访问方式. 2)org.apache.hadoop. ...

  5. 使用java api操作HDFS文件

    实现的代码如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import ...

  6. Hadoop之HDFS(三)HDFS的JAVA API操作

    HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...

  7. HDFS 05 - HDFS 常用的 Java API 操作

    目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...

  8. JAVA API 实现hdfs文件操作

    java api 实现hdfs 文件操作会出现错误提示: Permission denied: user=hp, access=WRITE, inode="/":hdfs:supe ...

  9. hadoop的API对HDFS上的文件访问

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

随机推荐

  1. pandas的分布式执行框架之modin

    Scale your pandas workflows by changing one line of code       To use Modin, replace the pandas impo ...

  2. Linux输入法问题

    本篇博文简单介绍一下介绍Linux输入相关问题及解决方案 关于Invalid UTF-8参见https://www.baidu.com/link?url=QDh2Fa1uJcmyiaKZBzAFkNn ...

  3. [物理学与PDEs]第2章第4节 激波 4.2 熵条件

    1.  R.H. 条件仅仅给出了越过激波时的能量守恒定律, 即热力学第一定律; 但客观的流体运动过程还需满足热力学第二定律, 即越过激波是个熵增过程: $$\bex S_1>S_0\quad(0 ...

  4. [物理学与PDEs]第1章第2节 预备知识 2.3 Faraday 电磁感应定律

    1.  Faraday 电磁感应定律: 设 $l$ 为任一闭曲线, 则 $$\bex \oint_l{\bf E}\cdot\rd {\bf l} =-\int_S \cfrac{\p {\bf B} ...

  5. sublime text3格式化html,css,js代码

    需要安装HTML/CSS/JS prettify插件. 安装步骤:首选项 -> Package Control -> Install Package -> HTML-CSS-JS P ...

  6. Java(6)for循环

    一.for循环的使用场合 1.1.while循环——先判断,再循环 while(1.条件表达式){      //2.循环操作      //3.更改循环条件表达式 } 1.2.do…while——先 ...

  7. vue构造函数(根实例化时和组件实例对象选项)参数:选项详解

    实例选项(即传给构造函数的options):数据,DOM,生命周期钩子函数,资源,组合,其他 数据 data 属性能够响应数据变化,当这些数据改变时,视图会进行重渲染. 访问方式: 1.通过 vm.$ ...

  8. Django REST Framework API Guide 07

    本节大纲 1.Permissions 2.Throttling Permissions 权限是用来授权或者拒绝用户访问API的不同部分的不同的类的.基础的权限划分 1.IsAuthenticated ...

  9. Excel 2010如何打开多个独立窗口?

    https://jingyan.baidu.com/article/86fae346acca7d3c49121ad4.html

  10. vue-地址插件 v-region

    demo地址:https://terryz.gitee.io/vue/#/region/demo