小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

windows上配置hadoop并通过idea连接本地spark和服务器spark

大数据,hadoop,windows,大数据 额外说明

收录于:17天前

hadoop下载与安装

请注意,这是在 Windows 上运行 Hadoop。如果你只是通过idea远程连接虚拟机上的Hadoop,请跳过。

hadoop下载官网

清华大学镜像下载

进入官网,点击Binary download,运行在Windows上。在 Apache 中下载东西时,通常有二进制版本和源版本。 Binary是编译过的,可以直接使用,而source是还没有编译过的源代码,需要自己编译。

在这里插入图片描述

镜像下载
在这里插入图片描述
选择合适的版本
在这里插入图片描述

解压

在这里插入图片描述
hadoop是分布式的,有datanode和namenode两个节点,需要新建目录代替

在这里插入图片描述

配置环境变量

一定要配置好hadoop的环境变量,否则启动时会出现如下错误:

在这里插入图片描述

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

bin目录包含hadoop信息启动命令,sbin目录包含hadoop集群启动命令。 bin和sbin不需要配置。只需切换到相应目录并启动cmd即可。

修改配置文件

  1. 修改windows系统启动类 hadoop-env.cmd

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

将%JAVA_HOME%替换为java环境变量的路径。
将Program Files替换为PROGRA~1

在这里插入图片描述

  1. 修改配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)

在这里插入图片描述

  • 核心站点.xml

在这里插入图片描述

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
  • hdfs-site.xml

在这里插入图片描述

  	<property>
		    <name>dfs.replication</name>
		    <value>1</value>
	  </property>


  <!--namenode 存放name table(fsimage)本地目录(需要修改)-->
    <property>
		<name>dfs.namenode.name.dir</name>
		<value>D:\SoftWares\Apache\apache-hadoop-3.2.3\hadoop-3.2.3\data\namenode</value>
	</property>


  <!--datanode存放block本地目录(需要修改)-->
  <property>
		<name>dfs.datanode.data.dir</name>
		<value>D:\SoftWares\Apache\apache-hadoop-3.2.3\hadoop-3.2.3\data\datanode</value>
	</property>

  • mapred-site.xml

在这里插入图片描述

<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
  • 纱线站点.xml

在这里插入图片描述

     <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>

初始化与启动

注意如果配置了环境变量可以直接运行命令,如果没有配置环境变量,则切换到对于目录在启动cmd。路径为~\hadoop-3.2.3\bin

输入hadoop version检查是否安装成功

在这里插入图片描述

输入hadoop namenode -format初始化hadoop

在这里插入图片描述
在这里插入图片描述
出现下面且\data\namenodecurrent目录·即为初始化成功。

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

数据目录是自定义目录

在cmd中执行start-all.cmd 命令,启动Hadoop,路径:~\hadoop\hadoop-3.2.3\sbin

在这里插入图片描述

如果sbin没有配置环境变量,则需要切换到对应目录。还可以为sbin配置环境变量。

在这里插入图片描述
输入start-all.sh启动:
在这里插入图片描述

运行成功后会出现四个窗口,分别是:yarn-resourcemanager、yarn-nodemanager、hadoop-namenode、hadoop-datanode。

在这里插入图片描述

参考自:windows下安装Hadoop就是这么简单

java.net.URISyntaxException: Illegal character in opaque part at index 2: D:\SoftWares\Apache\apache-hadoop-3.2.3\hadoop-3.2.3\data\namenode

信息: 没有运行的带有指定标准的任务。

如果出现上面两个错误则说明namenode的配置有问题。转到hdfs-site.xml

在这里插入图片描述

/是linux系统的路径配置,\是windows系统的路径配置,但要用\\

在这里插入图片描述
之后就可以正常启动了。

Could not locate Hadoop executable: D:\SoftWares\Apache\apache-hadoop-3.2.3\hadoop-3.2.3\bin\winutils.exe -see https://wiki.apache.org/hadoop/WindowsProblems

hadoop/bin 目录中缺少 winutils.exe 和 hadoop.dll

下载链接

下载后复制到bin目录下:

在这里插入图片描述

这两个文件必须由虚拟机和窗口都上传。

启动spark

Hadoop安装在Windows上,但一般不需要启动。如果需要使用MapReduce或者Spark计算框架,可以直接调用。

切换目录到hadoop安装目录的bin目录:

在这里插入图片描述
在这里插入图片描述
这些都是相关的命令,其中cmd后缀的是windows环境的,没有后缀名的默认是.sh为linux系统的命令。以spark为例,双击spark-shell.com启动scala版的spark:

在这里插入图片描述
双击pyspark.cmd启动python版的spark:

在这里插入图片描述

如果能够正常启动,则可以调用该接口进行1相关1计算。连续按两次Ctrl+C可停止服务。

idea连接本地spark

配置好上面的环境后通过idea创建scala项目。可参考sbt编程语言scala构建工具配置及项目构建(含网盘下载)

  1. 创建scala项目

  2. pom导入spark依赖

在这里插入图片描述

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.13</artifactId>
      <version>3.3.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-sql_2.13</artifactId>
      <version>3.3.1</version>
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-streaming_2.13</artifactId>
      <version>3.3.1</version>
      <scope>provided</scope>
    </dependency>

依赖需要根据版本对应,否则会出现冲突。

Maven地址:https://mvnrepository.com/

在这里插入图片描述

注意这里的spark必须和虚拟机上的一致。

  1. 编写连接测试代码

抱歉,小编还在学习阶段。这部分还没有成功。有些问题还没有解决。由于时间有限,我暂时转用Java语言。我会跟进新的 Scala 语言。

scala和java的maven版本的依赖是一样的,接口也可以共享。

class sparkConnect {
    

    sparkConnect() {
    
		
		//配置本地spark并命名
        JavaSparkContext sc = new JavaSparkContext("local", "thisSpark");
        List<Integer> list = new ArrayList<Integer>();
        list.add(1); list.add(2); list.add(3);

        //内存中获取数据常见rdd
        JavaRDD<Integer> rdd = sc.parallelize(list);

        //rdd计算
        JavaRDD<Integer> listPlus = rdd.map(y->y+5);
		
		//打印
        System.out.println("list is:" + list);
        System.out.println("listPlus is:"+ listPlus);
        System.out.println("the relation is list plus five = listPlus");


    }

    public static void main(String[] args) {
    
        sparkConnect sparkConnect = new sparkConnect();
    }

Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

运行上述的测试代码会报错,未能加载winutils.exe文件,可是在之前的配置中已经添加了该引用,这是由于Windows环境变量默认识别cmd命令的,其他的无法执行,例如在redis中,光使用redis-server就是出现该系统不支持一个道理。

解决办法是给这个exe单独配置环境变量

在这里插入图片描述

在这里插入图片描述
在此之前一定要确认环境变量无误

在这里插入图片描述

配置之后就可以运行测试项目了。可以是小编这里又遇到了一个问题,配置了winutils.exe还是无法找到。如下图:

在这里插入图片描述
在调试的过程中发现启动的spark版本是2.4.4也就是pom中加载的版本,而本地的spark版本是3.3.1的版本不一致,匹配不了。

在这里插入图片描述
修改pom的文件版本,注意与本地对应

在这里插入图片描述

修改后就可以成功启动了:
在这里插入图片描述

如上图所示,本地saprk连接已经实现,可以通过java独立参考程序调用spark。

class sparkConnect {
    

    sparkConnect() {
    

        JavaSparkContext sc = new JavaSparkContext("local", "thisSpark");
        List<Integer> list = new ArrayList<Integer>();
        list.add(1); list.add(2); list.add(3);

        //内存中获取数据常见rdd
        JavaRDD<Integer> rdd = sc.parallelize(list);

        //rdd计算
        JavaRDD<Integer> listPlus = rdd.map(y->y+5);

        System.out.println("list is:" + list);
        System.out.println("listPlus is:"+ listPlus);
        System.out.println("the relation is list plus five = listPlus");


    }

    public static void main(String[] args) {
    
        sparkConnect sparkConnect = new sparkConnect();
    }

}

回顾测试代码,这已经是调用spark实现简单计算最精简的步骤了。创建的sc对象可交互式的sc是等效的。如下:

在这里插入图片描述
它们的区别在于一个是Java语言的调用对象,一个是Scala的调用对象。

idea远程连接spark

远程连接spark首先要了解Spark部署方法这边文章讲的很详细,感谢作者!

在这里插入图片描述

JavaSparkContext sc = new JavaSparkContext("local", "thisSpark");

构造方法中第一个参数是主机,第二个参数是名称,关键就在于local参数,来看一段scala连接的代码:

 def main(args: Array[String]): Unit = {
    
    val spark = SparkSession
      .builder
      .appName("Spark Pi")
      .master("spark://172.21.212.114:7077")
      .config("spark.jars","E:\\work\\polaris\\polaris-spark\\spark-scala\\target\\spark-scala-1.0.0.jar")
      .config("spark.executor.memory","2g")
      .config("spark.cores.max","2")
      .config("spark.driver.host", "172.21.58.28")
      .config("spark.driver.port", "9089")
      .getOrCreate()

注意设置主控参数。由于该库是公共的,Java也可以尝试一下:

切换到spark的conf目录查看默认配置

在这里插入图片描述
查看运行节点在
在这里插入图片描述

JavaSparkContext sc = new JavaSparkContext("spark://192.168.223.128:7077", "thisSpark");

我尝试了很多种写法,包括http、仅IP、还有spark开头的,但都没有成功。所以远程连接失败,老大知道怎么连接。

. . .

相关推荐

额外说明

jQuery和AngularJS的区别浅析

JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持

额外说明

HackTheGame 游戏指南

写在前面 游戏链接 链接: 百度网盘 请输入提取码 提取码:bu1w HackTheGame游戏的玩法: 您将扮演一个黑客的角色,接受各种各样的任务,在不被发现的情况下,使用一些工具入侵他人的电脑,服务器并完成窃取资料,粉碎文件,植入病毒等操作.您有一共

额外说明

leetcode每日一题:455.分发cookie

系列:贪心算法 语言:java 题目来源:Leetcode455. 分发饼干 题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;

额外说明

leetcode61(旋转链表:链表操作)

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 题解:链表操作 这道题的本质其实是将链表末尾的倒数K个数截断,然后接到链表的

额外说明

Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

常用的两款AI可视化交互应用比较: Gradio Gradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,想要快速部署应用的开发者。 Streamlit S

额外说明

vue中transition动画的使用

1.vue文件 说明:加name属性 <transition name="sort"> <div class="sort" v-show="show"> <div class="all-sort

额外说明

Python 第七节 第一课

[toc] 嵌套函数 ( 内部函数 ) 嵌套函数:     在函数内部定义的函数 ! 执行结果: 上面程序中, f2() 就是定义在 f1 函数内部的函数. f2() 的定义和调用都在 f1() 函数内部.   一般在什么情况下使用嵌套函数?  1. 封

额外说明

Python 第四节 第十课

[toc] 双分支选择结构 双分支选择结构的语法格式如下: if  条件表达式:     语句 1 / 语句块 1 else:     语句 2 / 语句块 2 三元条件运算符 Python 提供了三元运算符, 用来在某些简单的双分支赋值的情况. 三元条

额外说明

将MySQL数据库转为SQL脚本文件

文章目录 一、提出任务 二、完成任务 (一)利用命令将数据库导出为SQL脚本 (二)利用NaviCat将数据库导出为SQL脚本 1、下载NaviCat 2、授权为可执行文件 3、启动NaviCat 5、创建数据库连接 6、打开需要转储的数据库 7、转储为

额外说明

JAVA WEB2——Servlet

JAVA WEB2——Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Servlet就是运行在服务器上的Java类。 Servlet用

ads via 小工具