使用Spark 3版本
  • PDF

使用Spark 3版本

  • PDF

可在VPC环境下使用。

用户可以任意配置Spark运行环境。

本指南介绍在Cloud Hadoop安装Spark 3版本后,配置Spark运行环境的方法。

前期操作

此示例假设在已应用于客户端的环境下运行进行介绍。
如果是使用Server配置客户端的情况,请进行以下前期操作1~4。

1. 确认服务器和集群之间的通信

确认服务器和集群之间可否进行通信。
服务器需注册于已配置Cloud Hadoop集群的ACG中。
关于ACG的详细内容,请参考ACG设置

2. 注册Cloud Hadoop集群主机名和IP信息

/etc/hosts中注册Cloud Hadoop集群的主机名和私有IP信息。
关于访问和使用Ambari UI的详细内容,请参考Ambari UI
hadoop-chadoop-use-ex2_0-1_zh

  • 如何在/etc/hosts中注册Cloud Hadoop集群的主机名和私有IP信息如下。
# root用户
# echo 'IP               主机名'      >>/etc/hosts
echo  '1**.**.*.*  e-001-*****-**'  >> /etc/hosts
echo  '1**.**.*.*  m-001-*****-**'  >> /etc/hosts
echo  '1**.**.*.*  m-002-*****-**'  >> /etc/hosts
echo  '1**.**.*.*  d-001-*****-**' >> /etc/hosts
echo  '1**.**.*.*  d-002-*****-**' >> /etc/hosts

3. 配置Hadoop客户端

Spark中使用Hadoop的环境变量,因此无需配置Hadoop客户端。
可通过简单的repo设置和yum命令安装hadoop-client包。

安装hadoop-client包的方法如下。

  1. 请使用以下命令配置/etc/yum.repos.d/ambari-hdp-1.repo文件。

    $ cat /etc/yum.repos.d/ambari-hdp-1.repo
    [HDP-3.1-repo-1]
    name=HDP-3.1-repo-1
    baseurl=http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.0.0
    path=/
    enabled=1
    gpgcheck=0
    [HDP-3.1-GPL-repo-1]
    name=HDP-3.1-GPL-repo-1
    baseurl=http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.1.0.0
    path=/
    enabled=1
    gpgcheck=0
    [HDP-UTILS-1.1.0.22-repo-1]
    name=HDP-UTILS-1.1.0.22-repo-1
    baseurl=http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
    path=/
    enabled=1
    
  2. 使用以下命令,确认在/usr/hdp/current/下方是否创建了hadoop-client。

    $ yum clean all 
    $ yum install hadoop-client
    $ curl -u $AMBARI_ID:$AMBARI_PASS -H "X-Requested-By: ambari" -X GET http://$AMBARI_URI:8080/api/v1/clusters/$CLUSTER_NAME/services/HDFS/components/HDFS_CLIENT?format=client_config_tar > hdfs_client_conf.tar.gz
    $ tar -xvf hdfs_client_conf.tar.gz
    $ cp ~hdfs_client_conf/conf/* /usr/hdp/current/hadoop-client/conf/
    

4. 确认是否安装JDK、Python 3

需要提前安装JDK和Python 3。
上一版本的Spark可以使用Python 2,但从Spark 3.0.0起只能使用Python 3。

运行以下命令安装Python 3。

$ yum install -y python3

应用Spark 3.0.1版本

1. 下载Spark包

使用以下命令,在服务器中下载拟用Spark包后解压。

  • Spark 3.0.1下载页面:https://archive.apache.org/dist/spark/spark-3.0.1/
  • 由于在已配置Hadoop客户端的环境下运行,因此请下载Pre-built with user-provided Apache Hadoop(spark-3.0.1-bin-without-hadoop.tgz)后在任意目录进行解压。
    hadoop-chadoop-use-ex2_1-1_zh
$ wget https://archive.apache.org/dist/spark/spark-3.0.1/spark-3.0.1-bin-without-hadoop.tgz
$ tar xvfz spark-3.0.1-bin-without-hadoop.tgz

2. 设置Spark环境变量

使用以下命令设置Spark环境变量后,在解压的包中复制并粘贴hadoop jar。

# 明示解压的Spark目录。
$ SPARK_HOME=/path/to/spark-3.0.1-bin-without-hadoop
$ SPARK_CONF_DIR=/path/to/spark-3.0.1-bin-without-hadoop/conf


# 复制配置文件
$ cp /usr/hdp/current/spark2-client/conf/* $SPARK_CONF_DIR/


# 将Hadoop相关的jar复制到Spark jars目录中。
$ cp -n /usr/hdp/current/spark2-client/jars/hadoop-*.jar $SPARK_HOME/jars

在运行Spark-Submit的位置设置以下环境变量。

$ export SPARK_HOME=/path/to/spark-3.0.1-bin-without-hadoop
$ export SPARK_CONF_DIR=/path/to/spark-3.0.1-bin-without-hadoop/conf
$ export SPARK_SUBMIT_OPTS="-Dhdp.version=3.1.0.0-78"
$ export PATH=$SPARK_HOME/bin:$PATH
$ export SPARK_DIST_CLASSPATH=`$HADOOP_COMMON_HOME/bin/hadoop classpath`

3. 确认驱动

使用以下命令,确认是否以安装版本信息正常驱动。
若显示内容和下方界面相同,即为可使用Spark 3.0.1的状态。

$ pyspark --version

hadoop-chadoop-use-ex2_1-2_zh

4. 授予所有者权限

使用以下命令,在/user下方创建用户专用文件夹后授予所有者权限。
Spark Job必须在用户账户{USER}文件夹位于HDFS的/user下方时才能正常运行z。

以下示例为用户是sshuser的情况。

$ sudo -u hdfs hadoop fs -mkdir /user/sshuser
$ sudo -u hdfs hadoop fs -chown -R sshuser:hdfs /user/sshuser/

5. 运行PySpark、spark-shell

PySpark和spark-shell的运行方法如下。

  1. 运行PySpark时,添加以下选项后运行。

    $ pyspark --conf spark.driver.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
    --conf spark.yarn.am.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
    --conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro \
    --conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro
    
  2. 还可以使用以下命令运行spark-shell。

    spark-shell --conf spark.driver.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
    --conf spark.yarn.am.extraJavaOptions=-Dhdp.version=3.1.0.0-78 \
    --conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro \
    --conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/usr/hdp:/usr/hdp:ro
    --conf spark.kerberos.access.hadoopFileSystems=hdfs://<明示要使用的名称节点>
    

本文对您有帮助吗?

What's Next