IDEA连接Linux上的Hadoop并对HDFS进行操作

这篇具有很好参考价值的文章主要介绍了IDEA连接Linux上的Hadoop并对HDFS进行操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IDEA连接Linux上的Hadoop并对HDFS进行操作

Windows软件准备

和Linux上版本相同的Hadoop

  • 压缩包解压: 将放在Linux上面的Hadoop压缩包(hadoop_xxxx.tar.gz)放在Windows任意硬盘任意(建议新创建的一个Hadoop文件夹)文件夹, 然后直接进行解压即可, 不需要担心软件的系统适配问题

    IDEA连接Linux上的Hadoop并对HDFS进行操作

  • 配置HADOOP_HOME环境变量及添加binsbin目录的系统路径

    IDEA连接Linux上的Hadoop并对HDFS进行操作

    IDEA连接Linux上的Hadoop并对HDFS进行操作

  • 验证配置是否成功, 在powershell中输入hadoop -version

    显示如下信息即表示配置成功

    IDEA连接Linux上的Hadoop并对HDFS进行操作

与Linux版本相同的Java

  • 同样需要配置环境变量

    IDEA连接Linux上的Hadoop并对HDFS进行操作

Windows的hadoop驱动文件hadoop.dll winutils.exe

  • 在GitHub上面下载, 如果没有对应于自己当前Hadoop的版本, 则选择高一点点的

    • Download-link-Github文章来源地址https://www.toymoban.com/news/detail-485745.html

    • 然后将选择指定的版本中的hadoop.dll文件放到./hadoop/bin/下和C:\Windows\System32\

      IDEA连接Linux上的Hadoop并对HDFS进行操作

      IDEA连接Linux上的Hadoop并对HDFS进行操作

    • winutils.exe文件也放到./hadoop/bin/

      IDEA连接Linux上的Hadoop并对HDFS进行操作

      并为该文件配置环境变量添加系统路径

      IDEA连接Linux上的Hadoop并对HDFS进行操作

配置Linux使用Hadoop的用户名的环境变量HADOOP_USER_NAME

即在Linux中如果使用Hadoop的用户是hadoop, 则在环境变量配置的变量值中填入hadoop

IDEA连接Linux上的Hadoop并对HDFS进行操作

IDEA中的操作

安装big data tools插件

IDEA连接Linux上的Hadoop并对HDFS进行操作

安装好之后, 右侧边栏会出现Big Data Tools的选项框

点击选项框, 在左上角的+中选择添加HDFS

IDEA连接Linux上的Hadoop并对HDFS进行操作

然后进行如下操作

IDEA连接Linux上的Hadoop并对HDFS进行操作

出现hdfs连接不上的情况

第一种错误-HADOOP_HOMEError

出现HADOOP_HOME相关问题, 如果按照预先安装中的四个步骤应该没有这个问题

如果真的还有问题, 那只能再去Google

第二种错误-connectionError Error

显示本机无法连接到Linux, connectionError

使用telnet进行测试

telnet <Linux-IP> 9000

因为Hadoop服务的默认端口是9000, 这个是在core-site.xml中手动指定的

如果上述命令执行过之后显示连接不成功, 那么就是端口的监听问题

问题原因

因为当前Hadoop的9000端口仅允许本地访问,需要更改为允许远程访问

IDEA连接Linux上的Hadoop并对HDFS进行操作

解决方法

core-site.xml文件中更改fs.defaultFS属性的值为Linux服务器的IP地址,例如hdfs://192.168.1.100:9000,然后重启Hadoop服务以使更改生效。

IDEA连接Linux上的Hadoop并对HDFS进行操作

重启Hadoop步骤(假设已经为Hadoop中的bin和sbin目录配置了环境变量):

  • stop-all.sh

  • start-all.sh

  • jps查看相关进程以确认启动成功

另外,确保防火墙设置允许来自Windows机器的流量通过9000端口。

完成这些步骤后,就能够从Windows机器上的IDE中成功连接到Linux服务器上的Hadoop并对HDFS进行操作。

IDEA连接Linux上的Hadoop并对HDFS进行操作

然后即可连接成功

IDEA连接Linux上的Hadoop并对HDFS进行操作

创建maven项目

新建项目即可

IDEA连接Linux上的Hadoop并对HDFS进行操作

删除相关无用文件和目录

IDEA连接Linux上的Hadoop并对HDFS进行操作

导入hadoop配置文件到resources中

从Linux中的./hadoop/etc/hadoop/目录中取出core-site.xmlhdfs-site.xml文件放入idea的resources目录中

IDEA连接Linux上的Hadoop并对HDFS进行操作

配置pom.xml文件

hadoop-client中将版本改为自己的hadoop版本

<?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>org.example</groupId>
	<artifactId>JavaHadoopProJectS</artifactId>
	<version>1.0-SNAPSHOT</version>

	<packaging>jar</packaging>

	<dependencies>
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-client</artifactId>
			<version>2.10.2</version>
		</dependency>

        <!--解决关于slf4j的mutiple bindings问题 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>org.hhrz.mapreduce.demo.JobMain</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

PS:我在上述文件中加入了以下关于slf4j冲突所以去除依赖的语句

如果你没有该冲突问题, 并且该语句让你的程序运行出了问题, 你可以将其去掉

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

编写WordCount代码进行测试

在其中对hadoop.dll文件的路径设置HADOOP_USER_NAMEvalue值设置做自己的更改

package hadoop;
import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.log4j.BasicConfigurator;

public class WordCount {
    public static class Map extends Mapper<Object,Text,Text,IntWritable>{
        private static IntWritable one = new IntWritable(1);
        private Text word = new Text();
        public void map(Object key,Text value,Context context) throws IOException,InterruptedException{
            StringTokenizer st = new StringTokenizer(value.toString());
            while(st.hasMoreTokens()){
                word.set(st.nextToken());
                context.write(word, one);
            }
        }
    }

    public static class Reduce extends Reducer<Text,IntWritable,Text,IntWritable>{
        private static IntWritable result = new IntWritable();
        public void reduce(Text key,Iterable<IntWritable> values,Context context) throws IOException,InterruptedException{
            int sum = 0;
            for(IntWritable val:values){
                sum += val.get();
            }
            result.set(sum);
            context.write(key, result);
        }
    }

    static {
        try {
            // 填入自己的文件的路径
            System.load("E:\\Hadoop\\hadoop-2.10.2\\hadoop-2.10.2\\bin\\hadoop.dll");//建议采用绝对地址,bin目录下的hadoop.dll文件路径
        } catch (UnsatisfiedLinkError e) {
            System.err.println("Native code library failed to load.\n" + e);
            System.exit(1);
        }
    }

    public static void main(String[] args) throws Exception{
        BasicConfigurator.configure(); //自动快速地使用缺省Log4j环境。
        
        // 填入自己的环境变量中配置的value值
        System.setProperty("HADOOP_USER_NAME", "value");
        
        Configuration conf = new Configuration();
        String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
        if(otherArgs.length != 2){
            System.err.println("Usage WordCount <int> <out>");
            System.exit(2);
        }
        Job job = new Job(conf,"word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(Map.class);
        job.setCombinerClass(Reduce.class);
        job.setReducerClass(Reduce.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

返回Linux中在hdfs中创建输入文件和输出目录

基本命令

  • hadoop fs -mkdir /data 创建输入目录

  • hadoop fs -mkdir /out 创建输出目录

  • hadoop fs -put test.txt /data 上传测试文件到data目录

  • hadoop fs -cat /data/test.txt 显示test.txt文件中的内容

    test file
    hello world
    

可在Big Data Tools中看到文件树

IDEA连接Linux上的Hadoop并对HDFS进行操作

指定程序在HDFS中的输入输出路径

编辑配置中进行设置

IDEA连接Linux上的Hadoop并对HDFS进行操作

空格为分割指定输入输出路径

IDEA连接Linux上的Hadoop并对HDFS进行操作

执行程序 查看输出结果

输出语句有几十行 最后几行程序输出如下

IDEA连接Linux上的Hadoop并对HDFS进行操作

同时查看侧边栏中的HDFS 可看到out目录中已经出现了输出结果

IDEA连接Linux上的Hadoop并对HDFS进行操作

参考文档

win10下IDEA连接虚拟机上的HDFS实现文件操作

利用IDEA通过创建Maven项目来实现hadoop相关项目

在windows系统中安装配置hadoop环境变量

idea连接本地虚拟机Hadoop集群运行wordcount

Windows下IntelliJ IDEA远程连接服务器中Hadoop运行WordCount

hadoop 9000端口只能本地127.0.0.1访问解决方案

hadoop.dll Download

Download-link-Github

到了这里,关于IDEA连接Linux上的Hadoop并对HDFS进行操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java通过JDBC连接mysql8.0数据库,并对数据库中的表进行增删改查操作

    目录 一、JDBC简介 二、添加依赖 三、JDBC操作数据库的步骤 四、JDBC操作数据库——增删改查 (一)新增数据 (二)删除数据 (三)修改数据 (四)查询数据 (五)多表连接查询         Java数据库连接,(Java Database Connectivity,简称JDBC)是java语言中用来规范客户端程序如何来访问数

    2024年02月03日
    浏览(149)
  • Hadoop 使用Linux操作系统与Java熟悉常用的HDFS操作

    注意看评论区获取完整代码资料 目录 一、实验目的 二、实验平台 三、实验步骤 理解HDFS在Hadoop体系结构中的角色; 熟练使用HDFS操作常用的Shell命令; 熟悉HDFS操作常用的Java API。 操作系统:Linux(建议Ubuntu16.04); Hadoop版本:2.7.1; JDK版本:1.8或以上版本; Java IDE:Eclipse。

    2024年02月03日
    浏览(53)
  • 微信小程序获取元素节点并对其进行操作

    1.封装获取元素的方法 utils.js 2.页面js中引入 3.页面js中使用

    2024年02月16日
    浏览(47)
  • Eclipse连接Hadoop(HDFS)

    1、在Windows机上下载安装好WinSCP软件。 2、打开WinSCP,新建会话,配置信息如下(用户名和密码都是hadoop): 3、点击登入,将hadoop-eclipse-plugin-2.6.0.jar拖到虚拟机的/home/hadoop/eclipse/plugins文件夹下: 4、可以看到该文件上传到虚拟机成功。 1、首先打Eclipse,按Window—Show View—Ot

    2023年04月16日
    浏览(37)
  • 【Hadoop-HDFS】HDFS常用操作命令

    hadoop fs -ls / 普通创建: hadoop fs -mkdir /xiaolin 递归创建: hadoop fs -mkdir -p /xiaolin/xiaoyin mkdir xuan.txt hadoop fs -moveFromLocal xuan.txt /xiaolin hadoop fs -copyFromLocal xuan.txt / hadoop fs -put xuan.txt / 文件名称相同时覆盖hdfs上的文件: -f hadoop fs -put -f xuan.txt / hadoop fs -copyToLocal /xiaolin ./ hadoop fs -get

    2024年02月05日
    浏览(52)
  • Hadoop -HDFS常用操作指令

    path 指定目录路径 -h 人性化显示文件size -R 递归查看指定目录及其子目录 -f 覆盖目标文件(已存在下) -p 保留访问和修改时间,所有权和权限。 localsrc 本地文件系统(客户端所在机器 ) dst 目标文件系统(HDFS) 下载文件到本地文件系统指定目录,localdst必须是目录 -f 覆盖目

    2024年02月10日
    浏览(44)
  • 【Hadoop】HDFS API 操作大全

    🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 🍁🪁🍁 🪁🍁🪁🍁 感谢点赞和关注 ,

    2024年02月07日
    浏览(42)
  • Hadoop HDFS的API操作

    hadoop的 Windows依赖文件夹,拷贝hadoop-3.1.0到非中文路径(比如d:)。 配置HADOOP_HOME环境变量 配置Path环境变量。 不能放在包含有空格的目录下,cmd 输入hadoop显示此时不应有 hadoop-3.0.0bin。我放在E:Program Files (x86) hadoop-3.0.0bin中,就出现错误 验证Hadoop环境变量是否正常。双击

    2024年02月05日
    浏览(45)
  • idea连接linux远程docker详细教程操作

    3-1:关闭防火墙 3-2:防火墙开放端口 添加 --permanent永久生效,没有此参数重启后失效 重新载入 查看所有打开的端口: 4-1:如果docker启动了执行命令 4-2:执行启动命令 4-3:通过docker启动状态可以查看是否读取了配置文件和开启了监听2375端口 4-4:通过curl http://docker宿主机

    2024年02月11日
    浏览(41)
  • 【Hadoop】-HDFS的Shell操作[3]

    目录 前言 一、HDFS集群启停命令 1.一键启停脚本可用 2.独立进程启停可用  二、文件系统操作命令 1、创建文件夹 2、查看指定目录下内容 3、上传文件到HDFS指定目录下  4、查看HDFS文件内容 5、下载HDFS文件 6、拷贝HDFS文件 7、追加数据到HDFS文件中 8、HDFS数据移动操作 9、HDFS数

    2024年04月26日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包