Win10部署spark开发环境

通过本文,你将了解到:

  • win上安装包管理神器scoop(附带科学上网)
  • 安装scala maven
  • 启用wsl2,安装Arch子系统
  • 解决wsl2虚拟机ip问题
  • 美化Terminal

Scoop

简介:

​ 对于scoop你可能比较陌生,但是对于包管理器你应该已经了解了相关知识(apt yum pacman 等等)。而在包管理器往往用于linux上,用来管理软件,scoop就是一款在win上的包管理器,它可以解决大多数程序员较为苦恼的开发环境的部署问题。(主要是他能帮我们安装软件的时候自动设置环境变量)。详情见官网

安装前准备

若Powershell或.NET Franmework版本过旧,更新后重启即可。
若不清楚版本号,可Win+R运行powershell,输入以下命令获取版本号。

$PSVersionTable.PSVersion.Major   #查看Powershell版本
$PSVersionTable.CLRVersion.Major  #查看.NET Framework版本

科学上网(v2ray,请自备vemss链接)

下载图形化界面qv2ray

点击链接,下载最新版本(对应自己系统的位数x64或着x32),安装到本地磁盘

下载v2ray核心

同样选择对应版本,在C:/Users/xstar/AppData/Local/qv2ray目录下新建vcore文件夹,将下载的v2ray压缩包的内容解压到该文件夹下

xstar为你的用户名

目录结构如下

tWFDH0.png
入站设置

依次打开首选项->入站设置,监听地址不用动(默认127.0.0.1)

  • 建议scoket为1080端口
  • http为2333端口
导入你的vmess链接
tWFhuR.png
或者导入vmess订阅
tWknaV.png
启动系统代理

开启代理,便可以进行科学上网,有关如何配合浏览器插件做到浏览器热切换代理,请在本站找Manjaro的有关内容

安装scoop

tips:

  • scoop软件都是从git仓库clone下来的,因此需要科学上网
  • scoop安装的软件默认在C:\Users\xstar\scoop\apps下xstar为你的用户名
  • scoop 可以用-g参数为全局安装C:\ProgramData\scoop\apps\
  • scoop只会保留最新版的软件,因此对于scala2.11.12不能用scoop安装
打开powershell分别执行以下两条命令
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex
scoop 帮助文档
Usage: scoop <command> [<args>]

Some useful commands are:

alias       Manage scoop aliases
bucket      Manage Scoop buckets
cache       Show or clear the download cache
checkup     Check for potential problems
cleanup     Cleanup apps by removing old versions
config      Get or set configuration values
create      Create a custom app manifest
depends     List dependencies for an app
export      Exports (an importable) list of installed apps
help        Show help for a command
home        Opens the app homepage
info        Display information about an app
install     Install apps
list        List installed apps
prefix      Returns the path to the specified app
reset       Reset an app to resolve conflicts
search      Search available apps
status      Show status and check for new app versions
uninstall   Uninstall an app
update      Update apps, or Scoop itself
virustotal  Look for app's hash on virustotal.com
which       Locate a shim/executable (similar to 'which' on Linux)

Type 'scoop help <command>' to get help for a specific command.
用scoop安装git busybox sudo
scoop config proxy 127.0.0.1:1080	#为scoop设置代理
scoop install git		#众所周知,强大的版本控制工具
scoop install busybox	#让你在win上使用linux的部分命令,包括netcat(nc)
scoop install sudo		#类似linux的提权,以管理员身份运行命令
为scoop添加extras仓库
scoop bucket add extras

安装maven scala

​ 什么?有了scoop你还在为安装maven发愁么?一条命令轻松搞定scoop install maven,下面讲一下maven换源,以及IDEA整合maven。

maven设置

用你的编辑器(记事本)打开C:\Users\xstar\scoop\apps\maven\3.6.3\conf\settings

  • 设置本地仓库位置,这里建议保存到C盘之外,

    • 直接添加E:\Java\MavenRepository
  • 换阿里云的源

    • 找到mirrors标签,将以下内容复制进该标签内
         <mirror>
            <id>aliyunmaven</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/public </url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    

IDEA整合maven

打开idea,一次打开以下选项卡

File->New Projects Settings->Setting for New Projects->Maven

  • Maven home directory路径改为C:/Users/xstar/scoop/apps/maven/3.6.3(xstar为你的用户名)

  • USer setting file路径改为C:\Users\xstar\scoop\apps\maven\3.6.3\conf\settings.xml,并勾选override

  • 此时,Local repository应该已经为你设置的本地仓库路径,勾选override

至此,你新建maven项目,便会默认使用你本机安装的maven,而不是idea自带的maven环境

安装scala

此处比较简单,直接下载scala对应版本的msi安装文件,无脑安装即可

scala 2.11.12版本的下载链接

IDEA整合scala

  • 在IDEA安装插件scala
  • 在你新建的maven项目的pom.xml中添加以下内容
    <build>
        <finalName>WordCount</finalName>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 如果你要编写spark的内容,请完成下一步内容

配置winutils

tips:

winutils,是支持在win上跑hadoop的一些静态库,并不是完整的hadoop环境,spark也需要此环境

  • 你可以选择用scoop安装此环境
scoop install hadoop-winutils	#版本较低2.8.1,也就是说如果你要在win上安装hadoop,也只能安装2.8.1版本的hadoop
  • 你可以选择较高版本的winutils手动安装
    • 下载[apache-hadoop-3.1.0-winutils],将此压缩包解压到本地磁盘
    • 添加环境变量直接在,请百度如何添加环境变量,基操不讲
  • 关于要安装hadoop的说明,如果你要在win上安装完整的hadoop环境,在你解压缩玩hadoop后,请用对应版本的winutils覆盖hadoop安装路径下的bin目录

启用wsl2,安装Arch子系统

前提条件

  • win10版本必须2004 的内部版本 19041 及以上
    • win+r输入winver查看你的版本号
    • 若版本号过低,请先升级您的系统
  • 已经打开wsl服务
    • 打开控制面板
    • 选择卸载程序
    • 点击左侧的启用或关闭windows功能
    • 找到适用于windows的linux子系统打勾起启用即可

设置默认启用wsl2

没有特殊说明以下步骤都是管理员身份运行powershell

  • 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 将wsl2设为默认版本
wsl --set-default-version 2
  • 如果你的电脑有使用wsl1的子系统,需要手动为其升级wsl2,若没有请跳过此步骤
#1.查看已安装的子系统
wsl --list --verbose
#为其升级
wsl --set-version <distribution name> <versionNumber>
#distribution name 为你的子系统的名字,第一部中会显示
#versionNumber写2即可

安装Arch或者其他版本的子系统

其他版本

打开win10应用商店,搜索wsl2,安装你想用的即可,比较简单

Arch

我Arch邪教,win10商店没有,但是github上有开源项目,完美支持wsl2

安装步骤
配置
  • 终端输入Arch.exe,修改root密码 passwd

  • 进入Arch后输入EDITOR=vim visudo

    • /%wheel ALL=(ALL) ALL(/是vim里面的搜索模式)
    • 去掉该行注释即可
  • 添加普通用户

    •  # 添加用户
      useradd -m -G wheel -s /bin/bash {username}
      # 修改密码
      passwd {username}
      
      
  • 退出子系统输入exit即可

  • 设置默认登录用户为普通用户

  • 在powershell中输入Arch.exe config --default-user {username}

  • 此后你可以在你的powershell中键入bash 快速进入子系统(前提只安装了一个子系统)

  • 初始化密钥圈

    • >bash
      [user@PC-NAME]$ sudo pacman-key --init
      [root@PC-NAME]$ sudo pacman-key --populate
      
  • 换源

    • sudo vim /etc/pacman.conf
    • 将以下内容添加至末尾
    • shell [archlinuxcn] Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
    • 安装密钥并立即更新系统sudo pacman -Sy archlinuxcn-keyring && sudo pacman -Syyu
  • 安装yay sudo pacman -S yay

  • 解决D-Bus

    • sudo mkdir /run/dbus -p
      sudo dbus-daemon --system
      
  • systemd

  • 安装genie-systemd

    • yay -S genie-systemd
    • genie -s &添加至~/.bashrc

解决wsl2虚拟机ip问题

问题由来

​ wsl2相当于一个虚拟机,每次启动都会为子系统分配一个ip,但是这个ip不是固定的,导致了如果你在子系统部署docker需要经常查看其ip,很不方便。当然如果你需要在局域网内访问wsl2,则需要win端口转发。

​ 目前比较好的解决方案就是go-wsl2-host,这个项目,可以在你每次启动wsl2时,自动把wsl2的ip写入宿主机的hosts,这就保证了每次都可以用同一个hostname访问wsl2

下载wsl2host.exe

建议将其放入C盘,以避免误删

  • 以管理员身份打开cmd,或者powershell,进入wsl2host.exe目录
    • 如果你安装了sudo,那么直接打开cmd或powershell,用sudo提权即可
  • 执行.\wsl2host.exe install
    • Windows Username:
      • 你的win账户名
    • Windows Password:
      • 该账户的密码,注意不是PIN,是密码!

添加启动服务权限

  • windows管理工具-本地安全策略-本地策略-用户分配权限

  • 找到作为服务登录

    tWu5b4.png
  • 然后重启一下,启动wsl2,查看hosts是否有wsl2的

    • cat C:\Windows\System32\drivers\etc\hosts
      

Terminal安装与美化

安装

  • 你可以直接在win10应用商店直接安装
  • 也可以通过scoop安装
scoop install windows-terminal

美化与设置

tips:

以下操作必须以管理员模式打开Powershell,如果询问你yes or no,直接选A,全部yes

  • 安装posh-git (前提你需要git,而且已经安装了git)

    • 安装gitscoop install git
  • Install-Module posh-git -Scope CurrentUser

  • 安装oh-mu-posh

  • Install-Module oh-my-posh -Scope CurrentUser

  • 生成Powershell档案,类似bashrc

    • if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }

    • 编辑$PROFILE,你需要安装vscode或者自己找到该文件用记事本打开。

      • 若安装了vscode

      • code $PROFILE
        
      • # 写入以下文件
        #禁用默认快捷键
        Remove-PSReadlineKeyHandler 'Ctrl+r'
        #导入模块(git)
        Import-Module posh-git
        Import-Module oh-my-posh
        #设置主题
        Set-Theme Paradox
        
  • 允许powershell运行脚本(必须)

    • set-executionpolicy remotesigned
  • 安装字体

    • 下载字体并且安装

    • 打开terminal,点击设置,会弹出json配置文件

    • 该json格式为profiles{defaults,list[powershell,cmd,wsl]},list下面得就是对每一个实例得设置,你可以用icon设置tab列表显示得图片

    • //添加以下代码,到你需要应用这写设置得实例
      “colorScheme": "Campbell",
      
      "useAcrylic": true,
      
      "closeOnExit": false,
      
      "acrylicOpacity": 0.8,
      
      "fontFace": "Delugia Nerd Font",
      
  • 然后重启Termina,大功告成,附我的设置,图片自己下载,路径自己改

"list":
        [
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "PowerShell",
                "commandline": "powershell.exe",
                "useAcrylic": true,
                "closeOnExit": false,
                "acrylicOpacity": 0.7,
                "colorScheme" : "Frost",
                "cursorColor" : "#000000",
                "fontFace": "Delugia Nerd Font",
                "hidden": false,
                "icon": "C:\\Users\\xstar\\AppData\\Local\\Terminal\\Powershell.png"
 
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "命令提示符",
                "acrylicOpacity": 0.7,
                "colorScheme" : "Frost",
                "cursorColor" : "#000000",
                "commandline": "cmd.exe",
                "hidden": false,
                "icon": "C:\\Users\\xstar\\AppData\\Local\\Terminal\\CMD.png"
            },
            {
                "guid": "{a5a97cb8-8961-5535-816d-772efe0c6a3f}",
                "hidden": false,
                "name": "Arch",
                "tabTitle": "Arch",
                "suppressApplicationTitle": true,
                "useAcrylic": true,
                "acrylicOpacity": 0.7,
                "colorScheme" : "Frost",
                "cursorColor" : "#000000",
                "fontFace": "Delugia Nerd Font",
                "source": "Windows.Terminal.Wsl",
                "icon": "C:\\Users\\xstar\\AppData\\Local\\Terminal\\Arch.png"
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]

展示

tvm9YR.png

给Terminal设置快捷键

大部分人用久了linux,都很喜欢用Ctrl+Alt+T打开终端

找到你的Termianl快捷方式右键->属性->快捷方式

在快捷键栏目直接按下Ctrl+Alt+T即可

tve6JI.png

接下来,享受你得windows

完结撒花👏👏