技术标签: 大数据环境搭建 spark Spark环境搭建 Spark搭建 pyspark环境配置 # Spark
虚拟机安装
虚拟机软件:VMware
操作系统 :Ubuntu1804
参考:https://blog.csdn.net/tangyi2008/article/details/120311293
JDK1.8
Hadoop安装
版本:2.7.7
参考:https://blog.csdn.net/tangyi2008/article/details/121908766
Spark官网的Download界面https://spark.apache.org/downloads.html可选版本较少,比较这里打开的网页,只有三个版本可选。
可以在下载页面的下方进入它的release archives:https://archive.apache.org/dist/spark/ 选择想要的版本。
这里以2.4.8版本为例,我们下载的安装文件应该是形如:spark-2.4.8-bin-xxxxxx.tgz的文件,很多人很困惑如何选择这些版本。
之所以会有这么多版本的选择,是因为Spark需要一些Hadoop客户端的依赖包(需要访问HDFS和YARN), 这些版本主要分为两类:
pre-packaged binary,将Hadoop客户端的依赖包编译到所下载的压缩包当中,比如spark-2.4.8-bin-hadoop2.6.tgz 和spark-2.4.8-bin-hadoop2.7.tgz ,
“Hadoop free” binary,需要自己通过配置 SPARK_DIST_CLASSPATH
变量,以便可以包含指定版本的Hadoop的相关jar包,比如:spark-2.4.8-bin-without-hadoop-scala-2.12.tgz、spark-2.4.8-bin-without-hadoop.tgz 。
我们这里选择“Hadoop free” binary形式的spark-2.4.8-bin-without-hadoop.tgz进行下载,直接使用浏览器下载过慢,可以使用迅雷加速下载,也可以去后面的网盘资源进行下载。
这里约定虚拟机主机名为node1
,用户名为xiaobai
, 安装路径为/home/xiaobai/opt
,如果不是,请自行修改相应配置文件。
将下载好的安装包上传至虚拟机(当然你也可以直接在虚拟机中下载,省得上传文件)
tar -xvf spark-2.4.8-bin-without-hadoop.tgz -C ~/opt
cd ~/opt
ln -s spark-2.4.8-bin-without-hadoop spark
ls ~/opt/spark
vi ~/.bashrc
修改 .bashrc 文件,在文件末尾添加Spark的PATH路径
export SPARK_HOME=/home/xiaobai/opt/spark
export PATH=$SPARK_HOME/bin:$PATH
运行下面的命令使配置生效
source ~/.bashrc
因为我们下载的是“Hadoop free” 版本,所以要配置SPARK_DIST_CLASSPATH
变量才能正常运行。
cd ~/opt/spark/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
在文件末尾添加配置如下信息
export SPARK_DIST_CLASSPATH=$(/home/xiaobai/opt/hadoop/bin/hadoop classpath)
这一步可选,将日志级别调整至WARN级别,不至于看到过多的无效打印信息
cd ~/opt/spark/conf
cp log4j.properties.template log4j.properties #日志配置文件
vi log4j.properties
修改如下配置:
log4j.rootCategory= WARN, console
日志也可以通过代码进行调整,假设SparkContext对象为sc,则可以通过方法setLogLevel进行级别调整
sc.setLogLevel("WARN")
到此,Spark安装完成,此时便可使用Spark的local模式了。
我们下载的Spark版本是基于scala 2.11.12,这时会报如下错误,但不影响使用.
[ERROR] Failed to construct terminal; falling back to unsupported
java.lang.NumberFormatException: For input string: "0x100"
可以修改环境变量TERM
的值为xterm-color
解决:
vi ~/.bashrc
在文件末尾添加
export TERM=xterm-color
使配置生效
source ~/.bashrc
使用如下命令进入scala交互界面:
spark-shell
var r = sc.parallelize(Array(1,2,3,4))
r.map(_*10).collect()
如果是ubuntu18+版本,系统已经默认安装Python3;在ubuntu16以前,系统默认安装python2
为了避免Python环境带来不必要的麻烦,这里将介绍两种安装Python环境的方式,建议选择安装Anaconda的方式。
所谓的Python环境主要包括Python解释器、Scripts目录(包含比如pip.exe)以及Lib目录(标准库和包安装目录site-pakages),在指定Python环境时,其实主要就是指定运行哪个目录下的Python解释器。
在安装之前,要注意python的版本问题,比如在使用Python3.8版本时,运行pyspark会出现如下错误,本文将安装Python 3.6版本。
安装官方的Python
(1)安装所需依赖
sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
(2)去官网下载对应版本源代码,这里以3.6.15为例
https://www.python.org/downloads/source/
wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tar.xz
(3)安装Python
tar -xvf Python-3.6.15.tar.xz
cd Python-3.6.15
./configure --prefix=/opt/python3 --enable-optimizations
sudo make && make install
注意,如果在安装过程中出现如下错误
subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1
可以执行以下命令解决
rm -rf /usr/bin/lsb_release
(4)设置环境变量
为了使用刚才安装的Python版本,可以将包含python解释器的目录加入到path路径的最前面,所以在.bashrc
的文件末尾添加如下设置,并使用source ~/.bashrc
使配置生效。
export PATH=/opt/python3/bin:$PATH
安装Anaconda
(1)下载相应版本的Anaconda
可以在网页https://repo.anaconda.com/archive/上选择相应版本进行下载,这里将下载Anaconda3-5.1.0-Linux-x86_64.sh
,其python对应版本为3.6。
cd ~/soft
wget https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh
(2)安装anaconda
bash Anaconda3-5.1.0-Linux-x86_64.sh
然后一路回车,等出现接受许可界面,输入yes
接收许可。
接着可以配置anacoda的安装目录,这里配置的安装目录是:/home/xiaobai/opt/anaconda3
然后配置是否自动配置PATH路径,这里输入的yes
,让其自动配置
最后提示是否安装VSCode,这里输入的no
,拒绝安装。
(3)使配置生效
刚才在安装过程中已经自动配置了PATH路径,可以查看添加的配置内容:
tail ~/.bashrc
source ~/.bashrc
注意,这里的Pyspark指的是在使用python编程时需要使用的pyspark模块,类似Mysql与pymysql的关系。
可以使用pip在线安装或者基于Spark的环境配置PYTHONPATH环境变量,建议选择后者。
sudo apt install python3-pip #安装pip3
sudo pip install pyspark==2.4.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
vi ~/.bashrc
在.bashrc
的文件末尾添加如下设置,并使用source ~/.bashrc使配置生效。
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:SPARK_HOME/python/lib/pyspark.zip:$PATHONPATH
export PYSPARK_PYTHON=python3
注意:
py4j-0.10.7-src.zip
一定要与$SPARK_HOME/python/lib
目录下的实际文件名一致,设置好后可以通过命令python -c "import sys; print(sys.path)"
查看Python的Import Path。
这里配置Standalone模式,为了方便初学者,这里只配置一台从节点,所以将其称为"伪Standalone模式"
cd ~/opt/spark/conf
vi spark-env.sh
添加如下配置信息
export SPARK_MASTER_HOST=node1 #设置主节点地址
export SPARK_WORKER_MEMORY=2g #设置节点内存大小,此处为4G。
export SPARK_WORKER_CORES=2 #设置节点参与计算的核心数
export SPARK_WORKER_INSTANCES=1 #设置节点实例数
export JAVA_HOME=/home/xiaobai/opt/jdk
export HADOOP_CONF_DIR=/home/xiaobai/opt/hadoop/etc/hadoop
vi slaves
配置从节点信息
node1
~/opt/spark/sbin/start-all.sh
可以使用
start-master.sh
、start-slave.sh
和start-slaves.sh
分别启动Master节点,本机slave节点和所有slave节点此外,还会经常用到historysever,会用到脚本:
start-history-server.sh
,需要在spark-env.sh
中配置SPARK_HISTORY_OPTS
参数:SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
jps
node1:8080
pyspark --master spark://node1:7077
运行测试代码
r = sc.parallelize(range(10))
r.map(lambda x:x*2).collect()
~/opt/spark/sbin/stop-all.sh
可以使用
stop-master.sh
、stop-slave.sh
和stop-slaves.sh
分别停止Master节点,本机slave节点和所有slave节点
安装jupyter(如果在安装python时安装的anaconda,则不需要再安装jupyter, 因为anaconda本身包含了jupyter)
sudo pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
启动jupyter进入交互界面
jupyter notebook
或者
jupyter lab
尝试运行代码
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster('local').setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///home/xiaobai/opt/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))
vi wordcount.py
编写代码:
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("My App")
sc = SparkContext(conf = conf)
logFile = "file:///home/xiaobai/opt/spark/README.md"
logData = sc.textFile(logFile, 2).cache()
numAs = logData.filter(lambda line: 'a' in line).count()
numBs = logData.filter(lambda line: 'b' in line).count()
print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))
spark-submit wordcount.py
请确保已开启master和worker
spark-submit --master spark://node1:7077 wordcount.py
spark-submit --master yarn wordcount.py
注意:
因为我们采用的是伪分布式,主机内存可能不够,可能导致如下错误
ERROR TransportClient: Failed to send RPC RPC 6184886792270084293 to /192.168.206.129:56372: java.nio.channels.ClosedChannelException
可以修改Hadoop的yarn-site.xml配置,然后重启YARN即可。
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
spark-submit常用参数,可以使用help命令查看:
spark-submit --help
常用参数:
Options: --master MASTER_URL spark://host:port, mesos://host:port, yarn, k8s://https://host:port, or local (Default: local[*]). --deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or on one of the worker machines inside the cluster ("cluster"), (Default: client). --class CLASS_NAME Your application's main class (for Java / Scala apps). --name NAME A name of your application. --jars JARS Comma-separated list of jars to include on the driver and executor classpaths. --packages Comma-separated list of maven coordinates of jars to include on the driver and executor classpaths. Will search the local maven repo, then maven central and any additional remote repositories given by --repositories. The format for the coordinates should be groupId:artifactId:version
链接:https://pan.baidu.com/s/1u3Qbj2VQ8UbuSuGQOWjWCg
提取码:nuli
文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动
文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别
文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进
文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代
文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗
文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字
文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos
文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。
文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计
文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出
文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行
文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex