centos7离线安装spark2.4.7及基本pyspark运行示例

1.安装原因

公司最有在搞一个项目,项目中的etl沿用了旧版本的etl,而旧版本的etl是通过pyspark做的,略坑的是旧版的pyspark用的python依赖的是centos7自带的,也就是python2.7,作为曾经被python2.7一通好坑的我,想着说啥得把python版本换了,因为低版本的python2.7官方都早已不维护了,缺少sparksql中各种api以及python里的api,总之我是不换不行了。由于以后的实施环境都是内网,所以不能采用在线安装方式,所以这里需要离线安装python3.6.11和spark2.4.7

 

2.前置环境

公司的大数据集群环境采用的是ambari管理,这里我直接调用就可,在这里提前说一下,ambari安装集群是方便,但是当你遇到坑的时候真的是一头包(仅仅吐槽)

已有组件:

1.hadoop 3.1.1.3.1.0.0-78(基于ambari)

2.jdk1.8.0_144

3.配置了master到slave的免密登录,单向免密登录

集群环境,三台机器,相信通过名字大家就能知道他们是干嘛的

192.168.23.2  master.hdp2.com

192.168.23.3  slave.hdp3.com

192.168.23.4  slave.hdp4.com

 

3.安装python3.6.11

安装python是通过make&&install离线安装

1.python安装前置小条件(仅仅针对我们环境,如果你们碰不到这个问题,可以忽略这个前置条件,我所遇到的是如果没自己手动安装这两个组件,那么在安装python的时候会提示你缺少zlib工具,其实不影响python的使用,但是看到报错就是不开心)

zip-3.0-11.el7.x86_64.rpm     

zlib-devel-1.2.7-18.el7.x86_64.rpm

安装命令:rpm  -ivh XXX.rpm

这两个包,我们的基础环境缺少这两个组件,在centos系统下需要手动安装他们两个,如果是ubantu系统,他们的名字就不是这个了,它们都可以zlib的官方查看到

2.安装python3.6.11

有情提示:我把所有的需要的这些个都拷贝在服务器的/usr/pyspark_package路径下

Python-3.6.11.tgz 

安装命令如下:

tar -xvf  Python-3.6.11.tgz      

cd  /usr/pyspark_package/Python-3.6.11

./configure   --prefix=/usr/local/python3.6 (注意这一步中的路径需要提前建好)

make  (编译)

make&&make install  (安装)

别忘了更改环境变量呀,友情提示:python3.6下的bin中已经将python替换为python3,所以当你更改好环境变量后,重新source /etc/profile后 应该输入python3 --version来查看版本,而不是python --version

PYTHON_HOME=/usr/local/python3.6

export PYTHON_HOME

PATH=$PATH:$PYTHON_HOME/bin:$PATH

 

4.安装spark2.4.7-bin-hadoop2.7

spark-2.4.7-bin-hadoop2.7.tgz

1.tar -xvf spark-2.4.7-bin-hadoop2.7.tgz    解压路径为/usr/pyspark_package/spark-2.4.7-bin-hadoop2.7

2.解压后你需要关注以下几个路径,这几个路径在下面会用到
bin   (pyspark提交任务脚本所在)

conf  (spark的基本配置文件所在)

jars (spark运行过程中需要的jar的路径,和你java项目中的lib一个意思)

python   (spark和flink等计算引擎是scala开发的,而我们写的是python代码,所以会有个中间转换的把python解析成jvm能跑起来的,这个工具就是py4j,这个工具就在python/lib中,后面会说到)

sbin   (spark集群启停脚本所在)

3.修改spark-en.sh文件    这个文件在conf路径下,是通过cp spark-en.sh.template  spark-en.sh的来的,在其中增加如下配置,我的spark是即将在yarnclient执行的所以相信你能明白下面的配置的意思 

export SPARK_HOME=/usr/pyspark_package/spark-2.4.7-bin-hadoop2.7          

export JAVA_HOME=/usr/local/jdk1.8.0_144                                                             

export HADOOP_HOME=/usr/hdp/3.1.0.0-78/hadoop

 

export SPARK_MASTER_IP=192.168.23.2

export SPARK_MASTER_PORT=7077

export SPARK_MASTER_WEBUI_PORT=7070

#export SPARK_WORKER_CORES=2

#export SPARK_WORKER_MEMORY=9096m

#export SPARK_WORKER_INSTANCES=2

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_YARN_USER_ENV="CLASSPATH=$HADOOP_HOME/etc/hadoop"      

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

4.修改slaves文件,这个文件在conf路径下,通过cp slaves.template slaves得到,需要增加如下配置

slave.hdp3.com

slave.hdp4.com

5.修改spark-defaults.conf,这个文件在conf路径下,通过copy spark-default.conf.template spark.default.conf得来,我是通过yarn作为spark的资源管理器,所以我增加了这个配置,这里指明hadoop

的版本号,否则在启动的时候会出错,如果你不需要集群yarn模式运行,那么请忽略,配置如下

spark.driver.extraJavaOptions -Dhdp.version=3.1.1.3.1.0.0-78

spark.yarn.am.extraJavaOptions -Dhdp.version=3.1.1.3.1.0.0-78

spark.yarn.historyServer.address=192.168.23.2:18080

spark.history.ui.port=18080

7.修改pyspark文件,文件在bin路径下,增加如下配置,将spark调用的python调整为python3,也就是我们自己安装的python3

export PYSPARK_PYTHON=python3

8.还记得我们上面提到过的py4j么,把py4j的东西弄到python3.6的安装路径下,我对应的就是之前   --prefixi那个参数所对应的 /usr/local/python3.6/lib/python3.6/site-package里,方式如下

py4j.zip和python.zip这两个文件在spark的python/lib路径下

分别 unzip 他们,把两个解压后的文件夹丢到自定义安装的python里   /usr/local/python3.6/lib/python3.6/site-package(这里)

9.修改hdfs的文件权限

实际上这是hdfs的问题和spark关系不大,主要是因为hdfs的用户默认不包括root在内,所以当我们通过spark去搞事情的时候,有时候会把文件放到 hdfs的  /user/root路径下,为了省事儿,赋予个权限吧

su - hdfs

hdfs dfs -mkdir /user/root

hdfs dfs -chown root:root /user/root

到了这一步 spark就算是可算装完了,注意哦,你需要操作的是三个节点,所以这些配置什么的你也要同步到其他节点上,但是要注意域名之类的别弄错了

 

5.启停spark,并测试

sbin路径还记得嘛

./start-all.sh   启动spark集群脚本

./stop-all.sh   停止集群脚本

不用担心spark的启动后端口问题,spark的启动脚本中会自动增加端口号的

 

启动spark后,你可以把某个jar或者某个py文件提交给spark通过yarnclient进行基本的计算了,在这里我就不拿自己的py脚本了,而是直接跑spark自带的示例wordcount吧

spark的bin路径

./spark-submit

 --master yarn

--deploy-mode client

--num-executors 20

--executor-memory 8g

--executor-cores 2

--conf spark.yarn.executor.memoryoverhead=4096    /usr/pyspark_package/spark-2.4.7-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.4.7.jar

 

http://192.168.23.2:8080/    这是我们的ambari集群地址

http://192.168.23.2:50070/  这个是hdfs 

http://192.168.23.2:8081/     这个是你亲爱的spark的地址了,当你启动spark后,你就可以访问它了

http://192.168.23.2:8088/     任务是spark以yarn方式运行的,所以我们可以访问hadoop下的记录

 

6.小优化

spark在运行的时候,不知你发现没有,你每次跑任务的时候,好像总有个把spark的jar传到hdfs缓存的过程,这个大约耗费十几到几十秒钟,有些讨厌对吧,所以我们在spark的配置文件直接指定会好很多

1.在spark的jars路径下 

zip spark.zip

2.在hdfs上创建路径

hdfs dfs -mkdir /spark-yarn-jars

3.把压缩后的zip文件上传至hdfs

hdfs dfs -put spark.zip /spark-yarn-jars/

4.在spark-default.conf中添加

spark.yarn.archive  hdfs://master.hdp2.com:8020/spark-yarn-jars/spark.zip    (如果是子节点那么就是  spark.yarn.archive  hdfs://slave.hdp2.com:8020/spark-yarn-jars/spark.zip,分别对应自己的就可以)

 


写在后面的话:这里涉及到的各种包,我不知道怎么传到csdn,可联系525711580,当然这只是针对当前版本的,希望对你有所帮助,安装过程里面涉及到环境变量的我没细化,但我想你一定可以自己搞定的。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值