IDEA开发hadoop

新建一个项目文件


File- -> new- -> project
注意:java的jdk版本要大于等于1.8
jdk1.8 下载地址: https://www.jb51.net/softs/325375.html

在这里插入图片描述
选择Maven–> next
在这里插入图片描述
name名字取为testHDFS
Location:选择文件保存的位置
Artifactid:组织名字为com.qf

在这里插入图片描述


编写pom.xml文件

写pom.xml一定要连接网络! 写完后点击文件的右上角按钮更新下文件
在这里插入图片描述


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.qf</groupId>
    <artifactId>testHDFS</artifactId>
    <version>1.0-SNAPSHOT</version>

<!--hadoop客户端依赖,该依赖包含hdfs的相关依赖-->
    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.6.1</version>
        </dependency>

<!--单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>

        </dependency>
		<dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
    </dependencies>

<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>


编写主函数

在scr下面的main文件夹里新建一个OperateHDFS.java
在这里插入图片描述

文件内容:

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.Path;
import org.junit.Test;

import java.io.IOException;

public class OperateHDFS {

    @Test
    /*
     写入数据到HDFS文件
     */
    public void writeToHDFS() throws IOException, IOException {
        Configuration conf = new Configuration();
        //这条命令是书上没有的,所以要添加这条命令才能运行
        System.setProperty("HADOOP_USER_NAME", "root");
        conf.set("fs.defaultFS", "hdfs://192.168.154.10:9000");
        FileSystem fs = FileSystem.get(conf);
        Path p = new Path("/1.txt");
        FSDataOutputStream fos = fs.create(p, true, 1024);
        fos.write("hollowed".getBytes());
        fos.close();
    }

    @Test
    /*
      读取HDFS文件
     */
    public void readHDFSFile() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://192.168.154.10:9000");
        FileSystem fs = FileSystem.get(conf);
        Path p = new Path("/2.txt");
        FSDataInputStream fis = fs.open(p);
        byte[] buf = new byte[1024];
        int len = 0;
        while ((len = fis.read(buf)) != -1) {

            System.out.println(new String(buf, 0, len));
        }
    }

    @Test
    /*
      从windows上传文件到HDFS
     */
    public void putFile() throws IOException {
        Configuration conf = new Configuration();
        System.setProperty("HADOOP_USER_NAME", "root");
        conf.set("fs.defaultFS", "hdfs://192.168.154.10:9000");
        FileSystem fs = FileSystem.get(conf);
        Path p = new Path("/");
        Path p2 = new Path("file:///D:/2.txt");
        fs.copyFromLocalFile(p2, p);
        fs.close();
    }
}

上面的地址需要改成自己虚拟机的IP地址


启动集群

启动Hadoop,使用命令start-all.sh
查看集群里有没有/1.txt和/2.txt,如果有的话,查看里面有没有信息

hdfs dfs -cat /1.txt

有内容就要把他删了给他一个空值, 在添加一个文件在根目录

hdfs dfs -rm -r /1.txt

如果没得,添加一个文件进去,如果在Hadoop中有/2.txt文件,要删除.
前面一定要把数据全部清除,特别是/1.txt里面的数据为空
在这里插入图片描述

新建日志配置文件

在resources文件夹里新建一个log4j.properties文件

在这里插入图片描述

### 设置日志级别及日志存储器 ###
#log4j.rootLogger=DEBUG, Console
### 设置日志级别及日志存储器 ###
log4j.rootLogger=info,consolePrint,errorFile,logFile
#log4j.rootLogger=DEBUG,consolePrint,errorFile,logFile,Console
###  输出到控制台 ###
log4j.appender.consolePrint.Encoding=UTF-8
log4j.appender.consolePrint=org.apache.log4j.ConsoleAppender
log4j.appender.consolePrint.layout=org.apache.log4j.PatternLayout
log4j.appender.consolePrint.layout.ConversionPattern=%d %p [%c] - %m%n
### 输出到日志文件 ###
log4j.appender.logFile.Encoding=UTF-8
log4j.appender.logFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logFile.File=D:/RUN_Data/log/journal_ok.log
log4j.appender.logFile.Append=true
log4j.appender.logFile.Threshold=info
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 保存异常信息到单独文件 ###
log4j.appender.errorFile.Encoding=UTF-8
log4j.appender.errorFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorFile.File=D:/RUN_Data/log/journal_error.log
log4j.appender.errorFile.Append=true
log4j.appender.errorFile.Threshold=ERROR
log4j.appender.errorFile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.com.journal.dao=DEBUG,TRACE
log4j.logger.com.journal.dao.IFollowDao=DEBUG

上传文件

在自己的电脑D盘创建一个文本文档2.txt,在里面添加你想写的内容然后执行(点击旁边的绿色运行按钮)

在这里插入图片描述

在执行 OperateHDFS
在这里插入图片描述
在这里插入图片描述
当出现文件的内容时就成功了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值