Windows安装Hadoop3.x及在Windows环境下本地开发

news/2024/5/20 2:57:48 标签: hadoop, hdfs, yarn, windows

Windows安装Hadoop3.x及在Windows环境下本地开发

下载安装

官网:https://hadoop.apache.org/

访问:https://archive.apache.org/dist/hadoop/common/ 下载hadoop.tar.gz并解压到指定目录

访问https://github.com/cdarlint/winutils选择合适版本对应的winutils.exe和hadoop.dll

winutils.exe和hadoop.dll拷贝到Hadoop/bin目录下和 C:\Windows\System32目录下(可选尝试,非必须),最后重启电脑。

配置环境变量

HADOOP_HOME:D:\Development\Hadoop

HADOOP_USER_NAME:root

Path:%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin;

配置Hadoop

检查adoop-env.cmd文件JDK的配置,通常无需改动

set JAVA_HOME=%JAVA_HOME%

core-site.xml

<configuration>
	<property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>D:\Development\Hadoop\data\tmp</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>D:\Development\Hadoop\data\namenode</value>
    </property>
	<property>
        <name>dfs.datanode.data.dir</name>
        <value>D:\Development\Hadoop\data\datanode</value>
    </property>	
	<property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
	   <name>dfs.permissions.enabled</name>
	   <value>false</value>
	</property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>
    </property>
</configuration>

格式化NameNode : hdfs namenode -format

2022-04-15 21:21:54,046 INFO snapshot.SnapshotManager: SkipList is disabled
2022-04-15 21:21:54,063 INFO util.GSet: Computing capacity for map cachedBlocks
2022-04-15 21:21:54,063 INFO util.GSet: VM type       = 64-bit
2022-04-15 21:21:54,064 INFO util.GSet: 0.25% max memory 889 MB = 2.2 MB
2022-04-15 21:21:54,064 INFO util.GSet: capacity      = 2^18 = 262144 entries
2022-04-15 21:21:54,108 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
2022-04-15 21:21:54,109 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
2022-04-15 21:21:54,109 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
2022-04-15 21:21:54,133 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
2022-04-15 21:21:54,133 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
2022-04-15 21:21:54,139 INFO util.GSet: Computing capacity for map NameNodeRetryCache
2022-04-15 21:21:54,139 INFO util.GSet: VM type       = 64-bit
2022-04-15 21:21:54,140 INFO util.GSet: 0.029999999329447746% max memory 889 MB = 273.1 KB
2022-04-15 21:21:54,140 INFO util.GSet: capacity      = 2^15 = 32768 entries
2022-04-15 21:22:03,246 INFO namenode.FSImage: Allocated new BlockPoolId: BP-9220273-192.168.179.1-1650028923233
2022-04-15 21:22:03,275 INFO common.Storage: Storage directory D:\Development\Hadoop\data\namenode has been successfully formatted.
2022-04-15 21:22:03,330 INFO namenode.FSImageFormatProtobuf: Saving image file D:\Development\Hadoop\data\namenode\current\fsimage.ckpt_0000000000000000000 using no compression
2022-04-15 21:22:03,560 INFO namenode.FSImageFormatProtobuf: Image file D:\Development\Hadoop\data\namenode\current\fsimage.ckpt_0000000000000000000 of size 391 bytes saved in 0 seconds .
2022-04-15 21:22:03,602 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2022-04-15 21:22:03,616 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Coding/192.168.179.1
************************************************************/

hadoop_112">启动hadoop集群

进入Hadoop解压目录的sbin目录,执行start-all,将启动以下组件
在这里插入图片描述
jps查看进程

D:\Development\Hadoop\sbin>jps
10016 DataNode
12592 NodeManager
13748 ResourceManager
8904 NameNode
1436 Jps

访问测试

访问http://localhost:9870
在这里插入图片描述
访问http://localhost:8088/cluster
在这里插入图片描述

Bug反馈记录

场景

由于重新安装系统,使用Windows11,安装Hadoop环境时参考上述安装配置步骤,最后发现HDFS相关组件无法启动,YARN相关组件正常启动。

看错误日志进行排查,结果未能发现有效问题,且网络搜索没有发现有效线索。断断续续折腾3次,后来在Hadoop的pull request处发现一个线索,执行winutils.exe文件是否报错,需要不报错、闪退即可。果断试试,发现还真存在该问题。

在这里插入图片描述

解决方案

方案A

缺少MSVCR100.dll文件安装即可,记得360管家的人工服务里有修复服务

在这里插入图片描述
尝试了多个修复,依旧不行。

在这里插入图片描述

在这里插入图片描述
方案B

在360软件管家下载微软VC++运行库合集安装即可,
在这里插入图片描述
在这里插入图片描述

安装后,又提示安装如下图所示的东西,安装后重启电脑,启动Hadoop成功。

在这里插入图片描述

Windows本地开发

添加依赖

 <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs-client</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

上传文件到HDFS

上传wordcount.txt文件到HDFS

The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

在这里插入图片描述

创建Job

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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCountJob {
    public static void main(String[] args) throws Exception {
        //获取配置文件
        Configuration configuration = new Configuration(true);
        //本地模式运行
        configuration.set("mapreduce.framework.name", "local");
        //创建任务
        Job job = Job.getInstance(configuration);
        //设置任务主类
        job.setJarByClass(WordCountJob.class);
        //设置任务
        job.setJobName("wordcount-" + System.currentTimeMillis());
        //设置Reduce的数量
        job.setNumReduceTasks(2);
        //设置数据的输入路径
        FileInputFormat.setInputPaths(job, new Path("/wordcount/wordcount.txt"));
        //设置数据的输出路径
        FileOutputFormat.setOutputPath(job, new Path("/wordcount/wordcount_" + System.currentTimeMillis()));
        //设置Map的输入的key和value类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        //设置Map和Reduce的处理类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);
        //提交任务
        job.waitForCompletion(true);
    }
}

创建Mapper

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    //创建对象
    private IntWritable one = new IntWritable(1);

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String valueString = value.toString();
        //切分字符串
        String[] values = valueString.split(" ");
        //向context添加数据
        for (String val : values) {
            context.write(new Text(val), one);
        }
    }
}

创建Reducer

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;
import java.util.Iterator;

public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        //获取迭代器对象
        Iterator<IntWritable> iterator = values.iterator();
        // 相同单词计数累加
        int count = 0;
        while (iterator.hasNext()) {
            count += iterator.next().get();
        }
        //输出数据
        context.write(key, new IntWritable(count));
    }
}

添加配置文件

在资源resources目录,添加Hadoop相关配置文件

yarn-site.xml

core-site.xml

hdfs-site.xml

mapred-site.xml

执行Job

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/876153.html

相关文章

java.lang.UnsatisfiedLinkError: no xxx in java.library.path排查办法

遇到问题&#xff1a; 今天在用户现场使用JNI调用同事封装好的DLL时&#xff0c;出现报错 java.lang.UnsatisfiedLinkError: no xxx in java.library.path 从字面上的理解是没有加载到这个DLL文件。 问题排查&#xff1a; 加载代码如下&#xff1a; System.loadLibrary(&q…

【漏洞】log4j2远程执行代码复现实操代码例子

如何复现log4j2远程执行代码漏洞漏洞原理漏洞复现漏洞范围漏洞原理 1.攻击伪装一个请求体,里面含有JNDI可执行的服务,我这里主要是试了LDAP与RMI两种,请求URL如下: LADP: ${jndi:ldap://127.0.0.1:1389/hello}RMI: ${jndi:rmi://127.0.0.1:1389/hello} 2.在应用程序恰巧输出了…

【Git迁移】三行命令迁移Git包含提交历史,分支,tag标签等全部信息

问题描述&#xff1a; 公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中&#xff0c;其中需要包含全部的提交纪录&#xff0c;已有的全部分支与全部打tag标签&#xff0c;目前此工作已全部迁移完毕&#xff0c;特此记录一下操作步骤 环境描述&#xff1…

分布式存储系统HDFS之Java API操作

分布式存储系统HDFS之Java API操作安装HadoopHDFS架构设计API操作添加依赖获取FileSystem遍历所有文件文件权限问题创建文件夹及文件删除文件夹及文件文件上传文件下载小文件合并安装Hadoop Docker安装Hadoop Linux服务器搭建Hadoop3.X完全分布式集群环境 HDFS架构设计 HDFS…

kubernetes之常用Pod控制器的使用

Pod控制器概述 pod的创建方式分为两类 自主式pod&#xff1a;直接创建出来的Pod&#xff0c;这种pod删除后就没有了&#xff0c;也不会重建控制器创建的pod&#xff1a;通过控制器创建的pod&#xff0c;这种pod删除了之后还会自动重建 Pod控制器分类 ReplicationController&…

解决Maven无法解析依赖、相关依赖爆红、Maven构建报错:Failed to read artifact descriptor for jar、Could not find artifact

场景描述解决方案下载依赖包多次失败导致后续依赖下载停止检查Idea的Maven配置删除项目信息使用脚本清除下载失败的依赖检查Mavn镜像仓库配置检查依赖坐标是否正确下载依赖安装到本地重新下载Maven场景描述 Maven提示无法解析依赖相关依赖爆红Maven构建报错&#xff1a;Failed…

Kubernetes之Service的使用

Service概述 kubernetes提供了Service资源&#xff0c;Service对提供同一个服务的多个pod进行聚合&#xff0c;并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到pod服务。 Service实现核心其实是kube-proxy服务进程&#xff0c;每个Node节点上都运行着一个kub…

Java开发者在Linux环境安装各类开发工具汇总

Linux服务器安装常用软件安装Git简单安装编译安装安装Maven下载、解压、重命名修改配置文件配置环境变量免密登录配置修改/etc/hosts文件生成公匙和私匙将公匙发送到其他节点免密登录测试安装JDK卸载自带jdk下载与安装配置环境变量验证分发JDK到其他节点安装Zookeeper下载与安装…