基于Hadoop伪分布式集群搭建Spark

时间:2023-03-09 07:27:19
基于Hadoop伪分布式集群搭建Spark

一、前置安装

1)JDK

2)Hadoop伪分布式集群

二、Scala安装

1)解压Scala安装包

2)环境变量

SCALA_HOME = C:\ProgramData\scala-2.10.6
Path = %SCALA_HOME%\bin

3)测试

基于Hadoop伪分布式集群搭建Spark

三、Spark安装

1)解压Spark安装包

2)环境变量

SPARK_HOME = C:\ProgramData\spark-1.6.-bin-hadoop2.
Path = %SPARK_HOME%\bin

3)测试

基于Hadoop伪分布式集群搭建Spark

http://localhost:4040/jobs/

基于Hadoop伪分布式集群搭建Spark

四、运行wordcounut程序

1)启动Hadoop集群

cd C:\ProgramData\hadoop-2.7.\sbin
C:\ProgramData\hadoop-2.7.\sbin>start-all.cmd
C:\ProgramData\hadoop-2.7.\sbin>jps

2)创建word.txt

基于Hadoop伪分布式集群搭建Spark

3.1)读取Hadoop的HDFS文件运行WordCount

1、上传word.txt到Hdfs

hadoop fs -put C:\Projects\WordCount\word.txt /Demo/word.txt

2、启动spark-shell

3、输入Scala命令

sc.textFile("hdfs://localhost:9000/Demo/word.txt").flatMap(x => x.split("\t")).map(x=>(x,1)).reduceByKey(_+_).collect()

基于Hadoop伪分布式集群搭建Spark

基于Hadoop伪分布式集群搭建Spark

基于Hadoop伪分布式集群搭建Spark

3.2)读取本地文件运行WordCount

1、启动spark-shell

2、输入Scala命令

sc.textFile("file:///C:/Projects/WordCount/word.txt").flatMap(x => x.split("\t")).map(x=>(x,)).reduceByKey(_+_).collect()

基于Hadoop伪分布式集群搭建Spark

基于Hadoop伪分布式集群搭建Spark

五、Spark部署运行

cmd --> spark-submit(无需spark-shell)

spark-submit --executor-memory 1G --num-executors 8 --class main.MrDemo D:\Projects\IdeaProjects\MyTest\out\artifacts\MyTest_jar\MyTest.jar 2018072712

基于Hadoop伪分布式集群搭建Spark

基于Hadoop伪分布式集群搭建Spark

六、Python下Spark开发环境搭建(PySpark)

Bloghttps://www.cnblogs.com/guozw/p/10046156.html

1)安装Anaconda3-2019.03-Windows-x86_64(python 3.7.3)

2)下载spark-2.4.2-bin-hadoop2.7.tgz,解压,然后将spark目录下的pyspark文件夹(C:\ProgramData\spark-2.4.2-bin-hadoop2.7\python\pyspark)复制到python安装目录(C:\ProgramData\Anaconda3\Lib\site-packages)里

注意:Spark与Python版本要对应 - Python 2.7.5/3.5.2 + Spark 2.2.1 (pip install pyspark==2.2.1);Python 3.7.3 + spark-2.4.2-bin-hadoop2.7.tgz (pyspark 2.4.2)

3)安装py4j:Anaconda Prompt --> 安装py4j库

pip install py4j

4)新建一个PYTHONPATH的系统变量

PATHONPATH=%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.9-src.zip

5)PyCharm-->File-->Settings-->Project Interpreter-->Show All-->+-->System Interpreter-->选择:C:\ProgramData\Anaconda3\python.exe

6)PyCharm下编写WordCount测试

1、创建Session

from pyspark.sql import SparkSession
# appName中的内容不能有空格,否则报错
spark = SparkSession.builder.master("local[*]").appName("WordCount").getOrCreate()
#获取上下文
sc = spark.sparkContext

带有空格报错情况如下:

基于Hadoop伪分布式集群搭建Spark

2、创建上下文

# 第一种方式
conf = SparkConf().setAppName('test').setMaster('local')
sc = SparkContext(conf=conf)
# 第二种方式
sc=SparkContext('local','test')

3、实例

# 实例1 - 读取文件并打印
from pyspark import SparkContext, SparkConf conf = SparkConf().setAppName('test').setMaster('local')
sc = SparkContext(conf=conf) rdd = sc.textFile('d:/scala/log.txt')
print(rdd.collect())

基于Hadoop伪分布式集群搭建Spark

# 实例2 - WordCount
import sys
from operator import add
from pyspark import SparkContext if __name__ == "__main__":
sc = SparkContext(appName="PythonWordCount")
lines = sc.textFile('./Word.txt')
counts = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (x, )) \
.reduceByKey(add)
output = counts.collect()
for (word, count) in output:
print("%s: %i" % (word, count))
sc.stop()
基于Hadoop伪分布式集群搭建Spark

问题:

Java.util.NoSuchElementException: key not found: _PYSPARK_DRIVER_CALLBACK_HOST

原因:版本不兼容,PySpark的版本与Spark不匹配

解决:查看Spark版本,例如为2.1.0,则使用Pip安装PySpark时,带上版本号

pip install pyspark==2.1.2 # 皆为2.1版本

✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡Anaconda3.7与Anaconda3.5切换✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡

win+R输入cmd进入命令行,跳转到Anaconda的安装目录,然后执行

cd C:\ProgramData\Anaconda3
cd C:\ProgramData\Anaconda3.5
python .\Lib\_nsis.py mkmenus

基于Hadoop伪分布式集群搭建Spark

然后再点击Anaconda Prompt,即切换到当前Python环境

✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡