如何在 Windows 上安装配置 Spark

环境

  • CPU: Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
  • MEM: 16.0 GB
  • System: Windows 10 Professional Edition
  • Spark: 2.4.0
  • Scala: 2.11.12

从 2.0 版开始,Spark 默认使用 Scala 2.11 构建。Scala 2.10 用户应该下载 Spark 源包并使用 Scala 2.10 支持构建。

JDK 配置

关于 JDK 的安装教程,可以点击这里查看。

请注意 hadoop 不能识别空格,如果你安装在 C:\Program Files\Java\jdk1.8.0_191 这里,你需要将环境变量修改成 C:\Progra~1\Java\jdk1.8.0_191

Hadoop

下载

首先点击这里,进入 Hadoop 官网下载页面。

在 windows 下,我们需要 hadoop.dll 和 winutils.exe,hadoop.dll 防止报 nativeio 异常、winutils.exe 没有的话报空指针异常
可以点击这里进行下载

Hadoop下载页面

选择 3.0.3 版本进行下载,然后点击 binary 地址进行下载

Hadoop镜像选择页面

选中官方推荐的地址即可下载,其他地址也可用(建议采用迅雷等下载工具下载,速度比较会快很多)

配置

Hadoop放置目录

将 Spark 解压到常用软件的目录下,比如我就保存在 D:\Programs\hadoop-3.0.3 这里,并修改了文件名,方便查看

接下来需要进行环境变量配置,变量如下:

变量名 变量值
HADOOP_HOME D:\Programs\hadoop-3.0.3
Path %HADOOP_HOME%\bin
Path %HADOOP_HOME%\sbin

注意:path 进行添加,而不是新建

环境变量修改后,我们需要对 Hadoop 进行参数配置,我配置的是单节点,所以不需要配置 hosts

首先打开 D:\Programs\hadoop-3.0.3\etc\hadoop 这个目录,分别编辑下面几个文件,根据个人需求更改参数:

core-site.xml

1
2
3
4
5
6
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
参数 属性值 解释
fs.defaultFS hdfs://localhost:9000 hdfs 调用端口

hdfs-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/D:/Programs/hadoop-3.0.3/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/D:/Programs/hadoop-3.0.3/data/datanode</value>
</property>
</configuration>
参数 属性值 解释
dfs.replication 1 分片数量,伪分布式将其配置成 1 即可
dfs.permissions false 是否打开权限检查系统
dfs.namenode.name.dir file:/D:/Programs/hadoop-3.0.3/data/namenode 命名空间和事务在本地文件系统永久存储的路径
dfs.datanode.data.dir file:/D:/Programs/hadoop-3.0.3/data/datanode DataNode 在本地文件系统中存放块的路径

yarn-site.xml

1
2
3
4
5
6
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
参数 属性值 解释
yarn.nodemanager.aux-services mapreduce_shuffle NodeManager 上运行的附属服务。需配置成 mapreduce_shuffle,才可运行 MapReduce 程序
yarn.nodemanager.auxservices.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler 是否打开权限检查系统
yarn.resourcemanager.address ${yarn.resourcemanager.hostname}:8032 ResourceManager 对客户端暴露的地址。客户端通过该地址向 RM 提交应用程序,杀死应用程序等
yarn.resourcemanager.scheduler.address ${yarn.resourcemanager.hostname}:8030 ResourceManager 对 ApplicationMaster 暴露的访问地址。ApplicationMaster 通过该地址向 RM 申请资源、释放资源等。
yarn.resourcemanager.resource-tracker.address ${yarn.resourcemanager.hostname}:8031 ResourceManager 对 NodeManager 暴露的地址.。NodeManager 通过该地址向 RM 汇报心跳,领取任务等
yarn.resourcemanager.admin.address ${yarn.resourcemanager.hostname}:8033 ResourceManager 对管理员暴露的访问地址。管理员通过该地址向 RM 发送管理命令等
yarn.resourcemanager.webapp.address ${yarn.resourcemanager.hostname}:8088 ResourceManager 对外 web ui 地址。用户可通过该地址在浏览器中查看集群各类信息
yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler 启用的资源调度器主类。目前可用的有 FIFO、Capacity Scheduler 和 Fair Scheduler
yarn.resourcemanager.resource-tracker.client.thread-count 50 处理来自 NodeManager 的 RPC 请求的 Handler 数目
yarn.resourcemanager.scheduler.client.thread-count 50 处理来自 ApplicationMaster 的 RPC 请求的 Handler 数目
yarn.scheduler.minimum-allocation-mb/yarn.scheduler.maximum-allocation-mb 1024/8192 单个可申请的最小 / 最大内存资源量。比如设置为 1024 和 3072,则运行 MapRedce 作业时,每个 Task 最少可申请 1024MB 内存,最多可申请 3072MB 内存
yarn.scheduler.minimum-allocation-vcores/yarn.scheduler.maximum-allocation-vcores 1/32 单个可申请的最小 / 最大虚拟 CPU 个数。比如设置为 1 和 4,则运行 MapRedce 作业时,每个 Task 最少可申请 1 个虚拟 CPU,最多可申请 4 个虚拟 CPU
yarn.resourcemanager.nodes.include-path/yarn.resourcemanager.nodes.exclude-path NodeManager 黑白名单。如果发现若干个 NodeManager 存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效
yarn.resourcemanager.nodemanagers.heartbeat-interval-ms 1000 NodeManager 心跳间隔

HDFS 初始化

首先需要根据 hdfs-site.xml 的配置路径,创建文件夹

然后使用下面的命令初始化 hdfs

1
hdfs namenode -format

HDFS format

格式化完毕后,如图所示,则表示初始化成功

启动 Hadoop

初始化完毕后,我们就可以使用下面的命令启动 hadoop 了

1
2
start-dfs
start-yarn

hadoop运行图

如图所示,启动 hadoop 后会弹出 4 个窗口

hadoop运行图

可以访问 http://localhost:8088 查看所有任务的运行情况

hadoop运行图

可以访问 http://localhost:9870 查看 Hadoop 集群 (虽然只有一个节点) 运行情况

至此整个 hadoop 就搭建好了

测试 Hadoop 例子

我们可以使用一个简单的例子来测试一下 hadoop 是否能够正常运行

我们从 hadoop 安装文件夹,启动一个终端,使用下面的命令,计算 pi 值

1
hadoop jar .\share\hadoop\mapreduce\hadoop-mapreduce-examples-3.0.3.jar pi 10 10

hadoop pi值计算

如图所示,我们计算量比较少导致不够精确,但是已经可以成功运算出 pi 值了

Spark

下载

首先点击这里,进入 Spark 官网下载页面。

Spark下载页面

选择下载版本,以及 Hadoop 版本,然后点击 tgz 地址进行下载

Spark镜像选择页面

选中官方推荐的地址即可下载,其他地址也可用(建议采用迅雷等下载工具下载,速度比较会快很多)

配置

Spark放置目录

将 Spark 解压到常用软件的目录下,比如我就保存在 D:\Programs\spark-2.4.0 这里,并修改了文件名,方便查看

接下来需要进行环境变量配置,变量如下:

变量名 变量值
SPARK_HOME D:\Programs\spark-2.4.0
Path %SPARK_HOME%\bin

注意:path 进行添加,而不是新建

下面我们来验证一下看 spark 是否能正常启动

在控制台输入 spark-shell

spark-shell

情况如图表示,则说明我们已经将 spark 安装配置完毕了