Spark-Hadoop在Linux节点上以Local模式部署

本文介绍了如何配置和部署local模式的Hadoop和Spark,在进行本文的实验内容之前还需要对部署的节点进行免密登陆配置,因为难度不大(其实是笔者想省些笔墨 ),这个前期工作读者可自行了解并完成,本文的组织安排如以下目录所示:


0. 准备安装文件

在本实验中需要的安装文件有Java、Scala、Hadoop、Spark,其版本号如下图所示:

在这里插入图片描述

上述文件作者已打包在百度网盘中,需要的读者可以自取:

链接:https://pan.baidu.com/s/1lV6RkuCWQ2URvcVl33dEaQ
提取码:h202

Tip:作者安装时的文件目录亦如上图所示,安装包皆在用户根目录下的tarflie目录中,即~\tarflie,后续在输入教程的shell命令时,读者应按自己的真实目录灵活修改安装包所在文件路径


1. 安装Java

(1) 解压JDK,并重命名,具体的shell指令如下

mkdir ~/bigdata #创建一个目录存放大数据相关的组件
tar -zxvf ~/tarfile/jdk-8u251-linux-x64.tar.gz -C ~/bigdata/ #解压jdk
mv ~/bigdata/jdk1.8.0_251 ~/bigdata/java #将解压得到的jdk重命名,方便记忆

(2) 配置环境变量,使用vim ~/.bashrc,添加如下内容:

#JAVA
export JAVA_HOME=/home/ZSX/bigdata/java #jdk解压路径的完整路径,按具体路径修改
export PATH=$PATH:$JAVA_HOME/bin

(3)使用source ~/.bashrc更新环境变量,之后键入java -version查看是否配置成功,如果配置成功,则输出结果如下:

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

2. 安装Scala

(1) 解压scala压缩包,并重命名,具体的shell指令如下

tar -zxvf ~/tarfile/scala-2.12.12.tgz -C ~/bigdata/ #解压scala压缩包
mv ~/bigdata/scala-2.12.12/ ~/bigdata/scala #重命名scala目录名,方便记忆

(2) 配置环境变量,使用vim ~/.bashrc,添加如下内容:

#SCALA
export SCALA_HOME=/home/ZSX/bigdata/scala
export PATH=$PATH:$SCALA_HOME/bin

(3)使用source ~/.bashrc更新环境变量后,键入scala --version查看是否配置成功,如果配置成功,则输出结果如下:

Scala code runner version 2.12.12 -- Copyright 2002-2020, LAMP/EPFL and Lightbend, Inc.

3. 以Local模式部署Hadoop

(1) 解压hadoop压缩包,并重命名,具体的shell指令如下

tar -zxvf tarfile/hadoop-3.2.2.tar.gz -C ~/bigdata/ #解压hadoop压缩包
mv ~/bigdata/hadoop-3.2.2/ ~/bigdata/hadoop #重命名hadoop目录名,方便记忆

(2) 配置环境变量,使用vim ~/.bashrc,添加如下内容:

#HADOOP
#基础配置
export HADOOP_HOME=/home/ZSX/bigdata/hadoop #此处的路径为hadoop的绝对路径
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

#HDFS用户配置,"ZSX"为作者Linux的用户名,读者根据自己的用户名进行修改
export HDFS_NAMENODE_USER=ZSX
export HDFS_DATANODE_USER=ZSX
export HDFS_SECONDARYNAMENODE_USER=ZSX
export YARN_RESOURCEMANAGER_USER=ZSX
export YARN_NODEMANAGER_USER=ZSX

(3) 使用source ~/.bashrc更新环境变量后,键入hadoop version查看环境变量是否配置成功,如果配置成功,则输出结果如下:

Hadoop 3.2.2
Source code repository Unknown -r 7a3bc90b05f257c8ace2f76d74264906f0f7a932
Compiled by hexiaoqiao on 2021-01-03T09:26Z
Compiled with protoc 2.5.0
From source with checksum 5a8f564f46624254b27f6a33126ff4
This command was run using /home/ZSX/bigdata/hadoop/share/hadoop/common/hadoop-common-3.2.2.jar

(4) 修改hadoop的配置文件,设置hadoop为Local模式:

  • 修改文件~/bigdata/hadoop/etc/hadoop/core-site.xml,内容如下:

    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/ZSX/bigdata/hadoop/tmp</value>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://westgis123:9000</value>
        </property>
    </configuration>
    

    其中hadoop.tmp.dir的取值建议为$HADOOP_HOME/tmpfs.defaultFS的取值必须为主机加端口号,上述代码块的倒数第三行中,westgis123为主机名,9000为端口号,该参数常用的端口号为8020或9000。

  • 修改文件~/bigdata/hadoop/etc/hadoop/hdfs-site.xml,内容如下:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/home/ZSX/bigdata/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/home/ZSX/bigdata/hadoop/tmp/dfs/data</value>
        </property>
        <property>
        <name>dfs.namenode.http-address</name>
        <value>westgis123:9870</value>
        </property>
    </configuration>
    

    其中dfs.replication的取值为HDFS上文件的备份数,因为本实验使用了Local模式,所以取值为1;dfs.namenode.name.dirdfs.namenode.data.dir分别为NN和DN的存储路径,建议取$HADOOP_HOME/tmp/dfs/name$HADOOP_HOME/tmp/dfs/data

  • 修改文件~/bigdata/hadoop/etc/hadoop/hadoop-env.sh,添加内容如下:

    export JAVA_HOME=/home/ZSX/bigdata/java
    

Tips:上述文件修改完成后,则可进行下一步配置操作,需要注意的是:在配置完全分布式hadoop集群时,通常还需要再修改$HADOOP_HOME/etc/hadoop目录下的workers、mapred-site.xml、yarn-site.xml等文件,但因为此处仅配置单机模式,无需修改上述文件,直接使用默认参数即可。例如workers默认取值为localhost,当然,如果/etc/hosts内没有对localhost的映射,仍需修改为hostname。

(5)使用hadoop namenode -format格式化NameNode

(6)启动HDFS,并使用jps查看程序是否启动成功,依次键入命令如下:

 start-dfs.sh
 start-yarn.sh
 jps

当jps的输出结果中包含NameNode、DataNode、SecondaryNameNode、NodeManger和ResourceManager的守护进程时,则hadoop单节点部署成功:

30704 NameNode
31459 NodeManager
31334 ResourceManager
31031 SecondaryNameNode
31800 Jps
30829 DataNode

此时可以使用以下命令关停hadoop集群:

stop-dfs.sh
stop-yarn.sh

4. 以Local模式部署Spark

(1) 解压hadoop压缩包,并重命名,具体的shell指令如下

tar -zxvf tarfile/spark-3.1.1-bin-hadoop3.2.tgz -C ~/bigdata/ #解压
mv ~/bigdata/spark-3.1.1-bin-hadoop3.2 ~/bigdata/spark #重命名spark目录名

(2) 配置环境变量,使用vim ~/.bashrc,添加如下内容:

export SPARK_HOME=/home/ZSX/bigdata/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

(3)生产Spark配置文件,并修改,命令如下:

cd $SPARK_HOME/conf
cp workers.template workers #生成从节点配置文件
echo `hostname` > workers #将主机名覆盖到从节点配置文件
cp spark-env.sh.template spark-env.sh #生成Spark核心配置文件
vim spark-env.sh

执行到vim spark-env.sh时,需要修改spark-env.sh的内容如下:

#PART1 Spark底层依赖组件的绝对路径 读者根据自己具体的路径更换取值
export JAVA_HOME=/home/ZSX/bigdata/java
export SCALA_HOME=/home/ZSX/bigdata/scala
export HADOOP_HOME=/home/ZSX/bigdata/hadoop
export HADOOP_CONF_DIR=/home/ZSX/bigdata/hadoop/etc/hadoop
export YARN_CONF_DIR==/home/ZSX/bigdata/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/home/ZSX/bigdata/hadoop/bin/hadoop classpath)

#PART2 Spark横向通信的配置,包括主机号和一系列端口,读者结合自身情况更换
export SPARK_MASTER_HOST=westgis123
export SPARK_MASTER_PORT=7077
export SPARK_PID_DIR=/home/ZSX/bigdata/spark/data/pid
export SPARK_HISTORY_OPTS=" 
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://westgis123:9000/directory 
-Dspark.history.retainedApplications=30"

(4) 启动Spark,并用jps查看守护进程是否启动,如果配置成功,则使用jps查看守护进程时可以看到Master和Worker的守护进程,具体的命令如下:

start-master.sh
start-workers.sh
jps

(5) 如果Spark启动成功,则可进一步提交例子程序查看是否部署成功,代码如下:

run-example \ #运行案例程序的命令
--master spark://westgis123:7077 \ #指定master的url
SparkPi 10 #运行例子程序的名字和参数

当运行结果中包含Pi is roughly 3.140919140919141时,则说明Spark的单节点模式已部署成功,开发者可基于当前的环境进行其它Spark应用程序的开发,本实验圆满完成。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值