暂无说说

pyspark之pyspark2.x环境搭建

spark jiajun 2个月前 (10-09) 51次浏览 0个评论 扫描二维码

 

软件环境

操作系统:centos7

jdk:jdk-8u144

hadoop:hadoop-2.7.2

spark:spark-2.3.2-bin-hadoop2.7

python:Anaconda3-5.3.0

修改/etc/hosts 文件

sudo vi /etc/hosts

在首行添加

192.168.163.103 s103

安装 jdk

jdk 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

解压 jdk

sudo mkdir /soft
sudo chown hadoop:hadoop /soft/
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /soft/
ln -s /soft/jdk1.8.0_144/ /soft/jdk

配置环境变量

sudo vi /etc/profile

增加

export JAVA_HOME=/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin

刷新环境变量

source /etc/profile

检查是否安装成功

java -version

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

配置 ssh 免密登陆

ssh-keygen -t rsa
ssh-copy-id s103

安装 hadoop

需要注意的是,hadoop 版本要和 spark 的版本相一致,在 spark 下载页面有说明,这里选用 spark 版本是 spark-2.3.2-bin-hadoop2.7,因此 hadoop 版本是 2.7.

hadoop 下载地址:https://archive.apache.org/dist/hadoop/common/

解压 hadoop

tar -zxvf hadoop-2.7.2.tar.gz -C /soft/
ln -s /soft/hadoop-2.7.2/ /soft/hadoop

配置环境变量​

sudo vi /etc/profile

添加

export HADOOP_HOME=/soft/hadoop
export LD_LIBRARY_PATH=/soft/hadoop/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

刷新环境变量​

source /etc/profile

配置 hadoop

cd /soft/hadoop/etc/hadoop
vi hadoop-env.sh
改: export JAVA_HOME=${JAVA_HOME}
为: export JAVA_HOME=/soft/jdk

vi core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://s103:9000</value>
</property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/data</value>
    </property>
</configuration>

vi hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
</property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

vi yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>s103</value>
    </property>
</configuration>

格式化 hadoop

hadoop namenode -format

安装 python

sudo yum install -y bzip2
chmod a+x Anaconda3-5.3.0-Linux-x86_64.sh
./Anaconda3-5.3.0-Linux-x86_64.sh

安装过程中,自定义安装路径为:/soft/anaconda

安装 spark

spark 下载地址:http://spark.apache.org/downloads.html

解压

tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /soft/
ln -s /soft/spark-2.3.2-bin-hadoop2.7/ /soft/spark

配置环境变量

sudo vi /etc/profile

添加

export SPARK_HOME=/soft/spark
export PYSPARK_PYTHON=/soft/anaconda/bin/python
export PATH=$PATH:$SPARK_HOME/bin

刷新环境变量

source /etc/profile

配置 jdk

cd /soft/spark/sbin
vi spark-config.sh

末尾增加

export JAVA_HOME=/soft/jdk

测试

命令行测试

在命令行输入pyspark,查看输出是否正确

# pyspark Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 2.3.2
/_/

Using Python version 3.7.0 (default, Jun 28 2018 13:15:42)
SparkSession available as 'spark'

提交 python 程序测试

import pandas as pd 
from pyspark.sql import SparkSession 
spark=SparkSession.builder.appName('my_first_app').getOrCreate() 
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=['row1', 'row2'], columns=['c1', 'c2', 'c3']) 
spark_df=spark.createDataFrame(df) 
spark_df.show() 
print('successful')
exit

附录:pyspark命令及其常用的参数如下:

pyspark --master <master-url>

Spark 的运行模式取决于传递给 SparkContext 的 Master URL 的值。Master URL 可以是以下任一种形式:

* local 使用一个 Worker 线程本地化运行 SPARK(完全不并行)

* local[*] 使用逻辑 CPU 个数数量的线程来本地化运行 Spark

* local[K] 使用 K 个 Worker 线程本地化运行 Spark(理想情况下,K 应该根据运行机器的 CPU 核数设定)

* spark://HOST:PORT 连接到指定的 Spark standalone master。默认端口是 7077.

* yarn-client 以客户端模式连接 YARN 集群。集群的位置可以在 HADOOP_CONF_DIR 环境变量中找到。

* yarn-cluster 以集群模式连接 YARN 集群。集群的位置可以在 HADOOP_CONF_DIR 环境变量中找到。

* mesos://HOST:PORT 连接到指定的 Mesos 集群。默认接口是 5050。

需要强调的是,这里我们采用“本地模式”(local)运行 Spark

在 Spark 中采用本地模式启动pyspark的命令主要包含以下参数:
–master:这个参数表示当前的 pyspark 要连接到哪个 master,如果是 local[*],就是使用本地模式启动 pyspark,其中,中括号内的星号表示需要使用几个 CPU 核心(core);
–jars: 这个参数用于把相关的 JAR 包添加到 CLASSPATH 中;如果有多个 jar 包,可以使用逗号分隔符连接它们;

比如,要采用本地模式,在 4 个 CPU 核心上运行 pyspark:

pyspark --master local[4]

或者,可以在 CLASSPATH 中添加 code.jar,命令如下:

pyspark --master local[4] --jars code.jar 

可以执行“pyspark –help”命令,获取完整的选项列表,具体如下:

pyspark --help

如果在启动 pyspark 时,直接使用

pyspark

该命令省略了参数,这时,系统默认是“bin/pyspark–master local[*]”,也就是说,是采用本地模式运行,并且使用本地所有的 CPU 核心。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址