Java接口对Hadoop集群的操作

Java接口对Hadoop集群的操作

首先要有一个配置好的Hadoop集群

这里是我在SSM框架搭建的项目的测试类中实现的

一、windows下配置环境变量

下载文件并解压到C盘或者其他目录。

链接:http://pan.baidu.com/s/1jHHPElg 密码:aufd

配置环境变量

1.配置HADOOP_HOME

2.配置PATH

在PATH中添加

%HADOOP_HOME%\bin
  • 1

3.配置HADOOP_USER_NAME

这是Hadoop集群的用户名

HADOOP_USER_NAME root
  • 1

二、Maven处理依赖jar包

    <!--hadoop依赖-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.7.4</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

三、创建测试类
package com.mavenssmlr.hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * java接口对Hadoop进行操作
 * 1.配置环境变量:HADOOP_HOME
 * HADOOP_USER_NAME
 * Created by shirukai on 2017/11/2.
 */

@RunWith(SpringJUnit4ClassRunner.class)
//告诉junit spring配置文件
@ContextConfiguration({"classpath:spring/spring-dao.xml"})
public class TestHadoop {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 连接Hadoop
     */
    public FileSystem connectHadoop() {
        String nameNodeUrl = "hdfs://10.110.13.243:9000";
        String nameNodeName = "fs.defaultFS";
        FileSystem fs = null;
        Configuration configuration = new Configuration();
        try {
            configuration.set(nameNodeName, nameNodeUrl);
            fs = FileSystem.get(configuration);
            logger.info("连接成功:Path={}", fs.getFileStatus(new Path("/")));
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return fs;
    }

    /**
     * 创建目录
     *
     * @throws Exception 异常
     */
    @Test
    public void mkdirFolder() throws Exception {
        FileSystem fs = connectHadoop();
        String folderName = "/input";
        fs.mkdirs(new Path(folderName));
    }

    /**
     * 上传文件到Hadoop
     *
     * @throws Exception 异常
     */
    @Test
    public void uploadFile() throws Exception {
        FileSystem fs = connectHadoop();
        //定义本地上传的文件路径
        String localFilePath = "D://Hadoop//upload//";
        //定义上传文件
        String fileName = "user.xlsx";
        //定义要上传到的文件夹
        String uploadFolder = "/input/";

        InputStream in = new FileInputStream(localFilePath + fileName);
        OutputStream out = fs.create(new Path(uploadFolder + fileName));

        IOUtils.copyBytes(in, out, 4096, true);

    }

    /**
     * 从Hadoop获取文件
     *
     * @throws Exception 异常
     */
    @Test
    public void getFileFromHadoop() throws Exception {
        FileSystem fs = connectHadoop();
        //定义要下载路径
        String downloadPath = www.meiwanyule.cn "/input/";
        //定义要下载的文件名
        String downloadFileName = "user.xlsx";
        //定义要保存的路径
        String savePath = "D://www.mhylpt.com Hadoop//download//" + downloadFileName;

        InputStream in = fs.open(new Path(downloadPath + downloadFileName));
        OutputStream out = new FileOutputStream(savePath);
        IOUtils.copyBytes(in, out, 4096, true);
    }

    /**
     * 删除文件
     * delete(path,boolean)
     * boolean如果为true,将进行递归删除,子目录及文件都会删除
     * false 只删除当前
     *
     * @throws Exception
     */
    @Test
    public void deleteFile() throws Exception {
        FileSystem fs = connectHadoop(www.dongfan178.com);
        //要删除的文件路径
        String deleteFilePath = "/inputuser.xlsx";
        Boolean deleteResult = fs.delete(new Path(deleteFilePath), true);
        logger.info("删除文件:={}", deleteResult);
    }

    /**
     * 遍历指定目录下所有的文件
     * @throws Exception 异常
     */
    @Test
    public void getAllFile()throws Exception{
        FileSystem fs = connectHadoop();
        //定义要获取的目录
        String getPath = "/";
        FileStatus[] statuses = fs.listStatus(new Path(getPath));
        for (FileStatus file: statuses
             ) {
            logger.info("fileName={www.taohuayuan178.com}",file.getPath().getName());
        }
    }

    @Test
    public void otherOption(www.yongshiyule178.com) throws Exception{
        FileSystem fs = connectHadoop();
    }

}

原文地址:https://www.cnblogs.com/qwangxiao/p/9311374.html

时间: 2024-11-02 01:36:47

Java接口对Hadoop集群的操作的相关文章

使用HDFS客户端java api读取hadoop集群上的信息

本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.2</version> <scope>provided</scope> </dependency> 2.配置文

使用JAVA API获取hadoop集群的FileSystem

所需要配置的参数:  Configuration conf = new Configuration();   conf.set("fs.defaultFS", "hdfs://hadoop2cluster");   conf.set("dfs.nameservices", "hadoop2cluster");   conf.set("dfs.ha.namenodes.hadoop2cluster", &qu

搭建Hadoop集群 (三)

通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种Debug方式 Hadoop在Eclipse上的Debug方式 一般来说, Debug最多的应用场景是调试MR中的代码逻辑, 还有部分是调试main方法中的某些代码逻辑. 无论是Standalone, Pesudo-Distributed, 还是Fully-Distributed Mode, 都可以d

二、Hadoop集群

目的 准备工作 安装 在非保护模式下运行Hadoop 配置Hadoop的守护进程环境 在非保护模式下配置Hadoop守护进程 Hadoop的支架意识 监视健康状态的节点管理器 slaves文件 日志 操纵Hadoop集群 启动Hadoop 关闭Hadoop web接口 目的 这篇文档描述了如何安装.配置和管理从几个节点到几千个节点的Hadoop集群. 为了玩好Hadoop,你应该首先试着在单个机器上安装它(参考单个节点的建立). 准备工作 从Apache所维护的镜像文件中下载一个稳定版本的Had

三节点Hadoop集群搭建

1. 基础环境搭建 新建3个CentOS6.5操作系统的虚拟机,命名(可自定)为masternode.slavenode1和slavenode2.该过程参考上一篇博文CentOS6.5安装配置详解 2.Hadoop集群搭建(以下操作中三个节点相同的地方就只给出主节点的截图,不同的才给出所有节点的截图)   2.1 系统时间同步 使用date命令查看当前系统时间 系统时间同步 [[email protected] ~]# cd /usr/share/zoneinfo/ [[email protec

3-3 Hadoop集群完全分布式配置部署

Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指定3服务器台以下信息: hostname IP mask gateway DNS 备注 master 172.17.138.82 255.255.255.0 172.17.138.1 202.203.85.88 服务器1 slave1 172.17.138.83 255.255.255.0 172.

hadoop集群配置和在windows系统上运用java操作hdfs

安装 配置 概念 hadoop常用shell命令 使用java操作hadoop 本文介绍hadoop集群配置和在windows系统上运用java操作hdfs 安装 http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.1/ sudo apt-get install ssh sudo apt-get install rsync mkdir /usr/local/hadoop tar -zxvf hadoop-3.1.1.tar.gz -C

Java之美[从菜鸟到高手演变]之eclipse连接hadoop集群

作者:二青个人站点:zhangerqing.cn    邮箱:[email protected]    微博:http://weibo.com/xtfggef 准备工具: Ubuntu 14.10 desktop 64 bit eclipse 4.3 kepler jee version hadoop 2.6.0 hadoop eclipse plugin 2.6.0 起初我是打算用win7做实验,后来遇到一个null pointer的问题很奇怪,在网上找了很多资料都不起作用,有些问题很像,单用

通过eclipse方法来操作Hadoop集群上cassandra数据库(包括创建Keyspace对象以及往数据库写入数据)

(1)下载cassandra,我所用版本为apache-cassandra-2.0.13-bin.tar.gz(hadoop版本为1.0.1),将其上传到hadoop集群,然后解压,tar -xzf apache-cassandra-2.0.13-bin.tar.gz; 并改名为 cassandra,放在目录/usr/下面,然后修改几个文件: vim cassandra.yaml  按照下面的字段修改 data_file_directories: - /usr/cassandra/data #