搭建 Spark 单机伪分布式环境

 

一、安装前准备

  1. VM虚拟机安装Centos 7操作系统。
  2.  安装 JDK

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

查看jdk安装路径并配置系统路径

rpm -ql java-1.8.0-openjdk

 

  1. 下载 Hadoop 安装包

下载 Hadoop-2.7.7 安装包,解压至/home/hj/hadoop-2.7.7 文件夹。(hj可替换成自己创建的新文件夹)

 

  1. 下载 Spark 安装包

下载 spark-2. 4.7-bin-hadoop2.7. tar 安装包。并解压至/home/hj/spark- 2.4.7-bin-hadoop2.7 文件夹。

 

二、安装 Hadoop

  1. 下载 Hadoop 安装包

下载 Hadoop-2.7.7 安装包,解压至/home/hj/hadoop-2.7.7 文件夹。

 

  1. 配置环境变量。

使用命令vi  /etc/profile打开/etc/profile,在文件末尾写入

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/

export HAD00P_H0ME=/home/hj/hadoop-2.7.7/

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

输入命令:source /etc/profile使环境变量生效。

输入命令java -version以及hadoop version查看java环境变量以及hadoop环

境变量是否配置正确。

 

  1. 输入命令cd $HADOOP_HOME/etc/hadoop/,进入hadoop配置文件所在的目录,
  2. 使用 命令vi hadoop-env.sh  mapred-env.sh  yarn-env.sh,
  3. 在这三个文件末尾添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/

 

以yarn-env.sh为例:

 

4.配置 core-site.xml.

使用命令 vi  core-site.xml,在〈configuration>之间插入 以下内容:

 fs.defaultFS

 hdfs://localhost:8020

 

 

 hadoop.tmp.dir

 /home/hj/tmp

其中第一个 property 是配置默认文件系统所在的位置,将其中主机名替换为自 己的主机名称(<主机名〉为/etc/hostname文件中定义的主机名)。

第二个 property 是配置 hadoop 临时目录所在位置。使用命令 mkdir -p /home/hj/tmp创建临时目录。

  1. 配置 hdfs-site.xml.在〈configuration>之间插入以下内容:

dfs.replication

 1

 

该property是配置分布式文件系统对于每个文件块的副本数量设置,默认为3,而 在伪分布式环境下设置为 1,因为只有一个节点。

  1. 将 mapred-site.xml.template 复制一份为 mapred-site.xml,再配置 mapred-site.xml.在之间插入以下内容:

mapreduce.framework.name

yarn

该 property 是配置进行 mapreduce 计算任务的框架,设置为 yarn。

 

 

 

  1. 配置 yarn-site.xml.在〈configura ti on>〈/configura tion> 之间插入以下内容:

〈property>

〈name>yarn.nodemanager.aux-services〈/name>

〈value>mapreduce_shuffle〈/value>

〈/property>

〈property>

〈name>yarn.resourcemanager.hostname〈/name>

localhost〈/value〉

〈/property>

  1. 第一个 property 配置的是 mapreduce 使用混洗重组模式,第二个 property 指定了 yarn框架中资源管理者的主机名,因为就一个节点,所以设置为当前主机名。

 

  1. 配置本机 ssh 免密登录
  1. 安装 ssh 服务端。命令: yum install openssh-server。

 

 

  1. 安装 ssh 客户端。命令: yum install openssh-client

 

  1. 配置ssh免密登录。进入当前用户的home目录,生成本机秘钥。

命令:

cd

ssh-keygen -t rsa -P “”

 

  1. 将公钥追加到 authorized_keys 文件中。

(首次创建.ssh目录和authorized_keys文件。

创建.ssh目录:

mkdir ~/.ssh

设置正确的权限:

chmod 700 ~/.ssh

创建authorized_keys文件:

touch ~/.ssh/authorized_keys)

命令: cat .ssh/id_rsa.pub >> .ssh/authorized_keys 然后赋予 authorized_keys 文件权限。

命令: chmod 600 .ssh/authorized_keys

  1. 输入命令 ssh localhost 查看 ssh 是否配置成功。

 

输入命令exit退出ssh当前登录。

 

  1.  使用命令 hdfs namenode -format 对 namenode 进行格式化。若格式化成功,则

/home/hj/tmp (第4步创建的hdfs临时目录下会生成一个新目录dfs;否 则,即为失败,应往回检查是否哪里设置错误。

 

 

  1. 使用命令start-all.sh开启所有节点(伪分布式只有本机一个节点)及节点所开 启的所有服务,并使用 jps 查看该节点的对应服务是否开启成功。如果现实一下内容, 则证明配置成功。

 

  1. 上传文件至 hdfs

(1) 在hdfs文件系统中创建目录/test/input。

命令:hdfs dfs -mkdir -p /test/input,使用命令 hdfs dfs -ls / 查看目录是 否创建成功。

 

(2) 在/home/〈用户名>/目录中新建一个文件input.txt,输入内容如下所示:

CHZU

Chuzhou University

Big Data

(3) 将创建的inpu t.txt上传至hdfs中的/t es t/input目录下。

命令: hdfs dfs -put /home/hj/input.txt /test/input 使用命令 hdfs dfs -cat /test/input/input.txt 查看是否上传成功。

 

  1. 使用 hadoop 自带的 WordCount 程序对 input.txt 文件进行单词计数。命令:

(1) yarn jar /home/hj/hadoop-2.7. 7/share/hadoop/mapreduce/hadoop- mapreduce-examples-2.7.7.jar wordcount /test/input /test/output

参数 wordcount 为该 jar 包的主类名 /test/input 为输入文件夹(是文件夹,不 是文件!!!) /test/output 为输出文件夹(是文件夹,不是文件!!!并且,在执行此 命令之前,hdfs中不能有/test/ou tput目录!!!)

 

三、安装 Spark

  1. 将〈Spark 解压路径〉/conf/spark-env. sh.template 复制为 conf/spark-env.sh,在 spark-env.sh文件末尾添加如下所示的内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/

export HADOOP_HOME=/home/hj/hadoop-2.7.7

export HADOOP_CONF_DIR=/home/hj/hadoop-2.7.7/etc/hadoop

export SPARK_MASTER_IP=192.168.238.111

export SPARK_LOCAL_IP=192.168.238.111

JAVA_HOME:Java 的安装路径;

HADOOP_HOME:Hadoop 的安装路径;

HADOOP_CONF_DIR: Hadoop 配置文件路径

SPARK_MASTER_IP:Spark 主节点的 IP 或机器名

SPARK_LOCAL_IP:Spark 本地的 IP 或机器名

  1. 切换到〈Spark解压路径>/sbin目录下,启动集群。

命令:./start-all.sh

 

  1. 通过 jps 查看进程,即有 Master 也有 Worker 进程,说明启动成功。

 

 

  1. 使用 SparkPi 来计算 Pi 的值。

 

 

由于计算 Pi 采用随机数,所以每次计算结果也会有差异。

 

 

 

5. 运行字数统计程序

(1) 启动 spark-shell。

命令:/bin/spark-shell

 

 

(2)执行字数统计

在 Spark-shell 中输入以下代码:

sc.textFile("/test/input/input.txt").flatMap(_.split("

")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/test/output1")

 

查看运行结果,命令:hdfs dfs -cat /test/output1/part-00000

 

 

  1. 查看 job 监控界面