zoukankan      html  css  js  c++  java
  • HDFS初次编程

    hadoop是用Java语言实现的开源软件框架,可以支持多种语言,我学习的时候用得自然就是Java了。

    在开始编程之前需要做一些配置工作:

    Hadoop开发:Hadoop为HDFS和Mapreduce提供了基础的支持,叫hadoop common。Hadoop有一个专门的common jar包,需要导入这个包。

    路径:(安装位置)/hadoop(安装之后整个文件夹,一般格式为hadoop+版本号)/share/hadoop

    首先新建一个Java Project,右键项目选择Properties---->Java Build Path---->Libraries---->Add External JARs

    导入如下所示jar包:

    接下来就可以具体编程了。

    编程实例:

    检测伪分布式文件系统HDFS上到底存不存在一个test.txt文件?

    1. 把配置文件放到当前Java工程目录下,即把core-site.xml和hdfs-site.xml(/hadoop/etc/hadoop/)放到项目的bin文件夹下面。

    若是缺少该步,运行时会出现错误:

    2 编写代码如下:

     1 import org.apache.hadoop.conf.Configuration;
     2 import org.apache.hadoop.fs.FileSystem;
     3 import org.apache.hadoop.fs.Path;
     4 
     5 public class first {
     6     public static void main(String args[]){
     7         try{
     8             String filename = "hdfs://localhost:9000/user/hadoop/test.txt";
     9             
    10             Configuration conf = new Configuration();
    11             FileSystem fs = FileSystem.get(conf);
    12             if(fs.exists(new Path(filename))){
    13                 System.out.println("File exists");
    14             }
    15             else{
    16                 System.out.println("File dose not exist");
    17             }
    18             
    19         }
    20         catch(Exception e){
    21             e.printStackTrace();
    22         }
    23     }
    24 }

    启动hadoop:

    在这过程中也是遇到了一系列错误,首先是:

    错误原因是缺少包,简单粗暴的解决办法是把common中lib下的所有包都导进去。

     再次运行,又出错:

    解决办法为在项目的src文件下面创建一个log4j.properties文件,内容为:

    # Configure logging for testing: optionally with log file
    log4j.rootLogger=WARN, stdout
    # log4j.rootLogger=WARN, stdout, logfile
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.logfile=org.apache.log4j.FileAppender
    log4j.appender.logfile.File=target/spring.log
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

    再运行,继续出错,"Class org.apache.hadoop.hdfs.DistributedFileSystem not found":

    又是缺少包,仍然是粗暴添加包,把hdfs中的所有jar包添加进去即可。

    最后,终于成功了!

  • 相关阅读:
    js基础整理总结
    pyinstaller打包django项目成exe以及遇到的一些问题
    Django对接SQL Server服务
    死锁
    python 之路
    Python注释
    Django2.1迁移数据库出错
    一行 Python 代码实现并行
    【转载】Python 类定义与对象
    关于盒模型布局在UC上的兼容处理
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/10214799.html
Copyright © 2011-2022 走看看