㈠ 如何安装Spark amp;TensorflowOnSpark
安装JAVA和Hadoop
这里提供一个很好的教程,就是又好用,又好看的教程。
按照这个教程来,基本上就没有太多坑地完成安装。不过也要注意一些点。
spark从master发送命令的时候好像是按照路径寻找文件,因此你一定一定要把集群上所有的计算机的用户名都配置成一样的,比如我的都叫ubuntu,而文中的都叫hadoop,这里你要注意,如果你不跟着教程也叫hadoop的话,注意识别里面有一些命令或者路径你是不能直接复制的,而是把里面的hadoop改成你的用户名,比如在伪分布式配置core-site.xml的时候里面路径,你要改成你的实际路径才可以。
就是在按照教程配置了JAVA_HOME之后还会出现找不到JAVA_HOME的情况,应该修改hadoop/etc/hadoop/hadoop-env.sh中的JAVA_HOME的内容为绝对路径即可。
2.另外那个ssh免密登录可以不用这个,因为要搭建的是真集群的,所以这个用不着,搭好了再告诉你。这里如果不设置的话在启动hadoop的时候可能会报错
在分布式下,可能会出现这种很奇怪的情况:Live nodes只有一个(应该有俩),而且你每次刷新竟然都不一样。这样的解决方法是修改hdfs-site.xml,讲data.dir改成不一样的就可以了。
集群管理器如果是新手的话建议直接使用standalone模式(如果你不知道啥是集群管理器的话,那就更这么建议了[微笑]),也就是spark自带的集群管理器,这就意味着上边那个教程里的“启动yarn”这一节你就完全可以跳过了。
然后就没什么坑了,bulabula配置好,你就拥有的伪分布式的Hadoop了,你就已经向spark迈进了一大步了。
上面那个是伪分布式的搭建,如果是想要真的分布式的话(分布式就是多台计算机的意思啦),需要看一下这个教程
照着这个教程完全修改一波,而且是每个计算机都要做相同的修改,另外这里有个小坑(也坑了我一晚上),就是如果按照最上面那个教程里搭伪分布式的话,core-site.xml这个文件的这个属性
要从localhost:9000改成master:9000
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>1234
安装scala和Spark
搭建好了上边的来我们进行下一个教程[微笑]
1. 安装scala最好选择一个2.10.X,这样对spark支持比较好,不会出现一些幺蛾子。这有个教程,应该是可以的
2. 安装spark大概是这里面最简单的事了吧点这里下载spark。鉴于我们已经安装好了hadoop,所以我们就下载一个不需要hadoop的spark包,就是这个with user-provided Hadoop这个
我用的是1.6.0好像大家用这个的比较多,最新的已经到2.1.x了。
解压到你想安装的目录
sudo tar -zxf ~/下载/spark-1.6.0-bin-without-hadoop.tgz -C /usr/local/cd /usr/localsudo mv ./spark-1.6.0-bin-without-hadoop/ ./sparksudo chown -R hadoop:hadoop ./spark # 此处的 hadoop 为你的用户名1234
之后很重点的一步是修改spark-env.sh的内容,好像要改好多好多。。。
cd /usr/local/sparkcp ./conf/spark-env.sh.template ./conf/spark-env.shvim conf/spark-enf.sh123
这里是我的spark-env.sh的一些配置
export HADOOP_HOME=/home/ubuntu/workspace/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport HADOOP_HDFS_HOME=/home/ubuntu/workspace/hadoopexport SPARK_DIST_CLASSPATH=$(/home/ubuntu/workspace/hadoop/bin/hadoop classpath)export JAVA_HOME=/home/ubuntu/workspace/jdk/export SCALA_HOME=/home/ubuntu/workspace/scalaexport SPARK_MASTER_IP=192.168.1.129export SPARK_WORKER_MEMORY=1Gexport SPARK_MASTER_PORT=7077export SPARK_WORKER_CORES=1export SPARK_WORDER_INSTANCES=2export SPARK_EXECUTOR_INSTANCES=2123456789101112131415161718
属性不明白的可以打开spark-env.sh,里面前面又好多注释,讲各种属性的意思。(ps:这里有个SPARK_DIST_CLASSPATH一定要照着改对,否则会运行不起来)
这是给力星大大的教程写得很好。
3. 分布式spark部署
重点来了,当然,教程在这里
这里好像没什么坑,但是好像我记得刚开始的时候别的机器上的worker老是启动不起来,但是忘记是什么原因了,可能是免密登录没设置还是怎么的。
照着教程完成了之后,你就获得了spark的集群辣,撒花~(≧▽≦)/~
ps:这里还有个搭建standalone集群的简单介绍,Spark的Standalone模式安装部署
安装TensorflowOnSpark
这个真是说难也难,说简单真是巨简单,因为步骤github上已经写得好好的了,但是,有些坑,确实会把人坑死的。
雅虎开源的TensorflowOnSpark
1. 啥?你说全是英文看不懂,好吧我也看不懂,不过你想安装TensorflowOnSpark的话,应该拉到底点这里的wiki site
然后你打开个就看见了和网站上差不多的美妙结果。
==============2017.4.15更新==================
今天在运行程序的时候发生了莫名其妙的bug,主要症状就是task会卡在某个地方不再进行了,点进去看详细的task会发现是在某个slave上的某个task卡住了,调试无果。关机重启之后再次运行不再卡顿,原因大概是系统要求的资源没有达到,以后遇到这种情况,建议重新调小运行需要的cpu数量以及内存数量等资源配置选项再试试,实在不行就关机重启,一般都可以解决
==============2017.7.28更新====================
又踩到一个坑是,还是在识别的时候可能会卡住,可能是因为其他的worker中的namenode忘记format了。
另外还有识别的准确率很低的问题,可能是因为python找不到Jar包了,使用以下方法可以:
原来python在写hdfs文件的时候,找不到对应的jar包,在提交的时候添加如下的配置信息
--conf spark.executorEnv.LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/amd64/server"
--conf spark.executorEnv.CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath --glob):${CLASSPATH}" 12
这里致谢评论区中的“她说巷尾的樱花开了 2017-07-13 10:10发表 [回复]“ 提供解决方法
相关链接:
利用IDEA查看和修改spark源码
修改spark源码并编译部署
㈡ 有没有Python写的spark连接Hbase的例子
没有sprak写得连接hbase的例子
spark编程python实例
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[])
1.pyspark在jupyter notebook中开发,测试,提交
1.1.启动
IPYTHON_OPTS="notebook" /opt/spark/bin/pyspark11
下载应用,将应用下载为.py文件(默认notebook后缀是.ipynb)
在shell中提交应用
wxl@wxl-pc:/opt/spark/bin$ spark-submit /bin/spark-submit /home/wxl/Downloads/pysparkdemo.py11
!
3.遇到的错误及解决
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[*])
d*
3.1.错误
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[*])
d*
ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PySparkShell, master=local[*]) created by <mole> at /usr/local/lib/python2.7/dist-packages/IPython/utils/py3compat.py:28811
3.2.解决,成功运行
在from之后添加
try:
sc.stop()
except:
pass
sc=SparkContext('local[2]','First Spark App')1234512345
贴上错误解决方法来源StackOverFlow
4.源码
pysparkdemo.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from pyspark import SparkContext"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"try:\n",
" sc.stop()\n",
"except:\n",
" pass\n",
"sc=SparkContext('local[2]','First Spark App')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = sc.textFile(\"data/UserPurchaseHistory.csv\").map(lambda line: line.split(\",\")).map(lambda record: (record[0], record[1], record[2]))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total purchases: 5\n"
]
}
],
"source": [
"numPurchases = data.count()\n",
"print \"Total purchases: %d\" % numPurchases"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
pysparkdemo.py
# coding: utf-8
# In[1]:
from pyspark import SparkContext
# In[2]:
try:
sc.stop()
except:
pass
sc=SparkContext('local[2]','First Spark App')
# In[3]:
data = sc.textFile("data/UserPurchaseHistory.csv").map(lambda line: line.split(",")).map(lambda record: (record[0], record[1], record[2]))
# In[4]:
numPurchases = data.count()
print "Total purchases: %d" % numPurchases
# In[ ]:
㈢ 如何运行含spark的python脚本
2~spark$ bin/spark-submit first.py
-----------first.py-------------------------------
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
lines = sc.textFile("first.py")
pythonLines = lines.filter(lambda line: "Python" in line)
print "hello python"
print pythonLines.first()
print pythonLines.first()
print "hello spark!"
---------------------------------------------------
hello python
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines = lines.filter(lambda line: "Python" in line)
hello spark!
到spark的安装目录下/bin 下面 spark-submit ***.py 即可
㈣ 机器学习实践:如何将Spark与Python结合
可以学习一下林大贵这本书,从头到尾教你如何使用python+spark+hadoop实现常用的算法训练和部署。
《Python+Spark2.0+Hadoop机器学习与大数据实战_林大贵》
链接:https://pan..com/s/1VGUOyr3WnOb_uf3NA_ZdLA
提取码:ewzf
㈤ intellij idea 怎么编写python程序打包发送到spark
,客户端和虚拟集群中hadoop、spark、scala的安装目录是一致的,这样开发的spark应用程序的时候不需要打包spark开发包和scala的库文件,减少不必要的网络IO和磁盘IO。当然也可以不一样,不过在使用部署工具spark-submit的时候需要参数指明classpath。
1:IDEA的安装
官网jetbrains.com下载IntelliJ IDEA,有Community Editions 和& Ultimate Editions,前者免费,用户可以选择合适的版本使用。
根据安装指导安装IDEA后,需要安装scala插件,有两种途径可以安装scala插件:
启动IDEA -> Welcome to IntelliJ IDEA -> Configure -> Plugins -> Install JetBrains plugin... -> 找到scala后安装。
启动IDEA -> Welcome to IntelliJ IDEA -> Open Project -> File -> Settings -> plugins -> Install JetBrains plugin... -> 找到scala后安装。
㈥ Spark的四种运行模式
介绍
本地模式
Spark单机运行,一般用于开发测试。
Standalone模式
构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。
Spark on Yarn模式
Spark客户端直接连接Yarn。不需要额外构建Spark集群。
Spark on Mesos模式
Spark客户端直接连接Mesos。不需要额外构建Spark集群。
启动方式: spark-shell.sh(Scala)
spark-shell通过不同的参数控制采用何种模式进行。 涉及两个参数:
对于Spark on Yarn模式和Spark on Mesos模式还可以通过 –deploy-mode参数控制Drivers程序的启动位置。
进入本地模式:
进入Standalone模式:
备注:测试发现MASTER_URL中使用主机名替代IP地址无法正常连接(hosts中有相关解析记录),即以下命令连接不成功:
./spark-shell --master spark://ctrl:7077 # 连接失败
Spark on Yarn模式
备注:Yarn的连接信息在Hadoop客户端的配置文件中指定。通过spark-env.sh中的环境变量HADOOPCONFDIR指定Hadoop配置文件路径。
Spark on Mesos模式:
启动方式: pyspark(Python)
参数及用法与Scala语言的spark-shell相同,比如:
㈦ 如何在pycharm中配置Spark
打开pycharm,导入已有的或者新建工程。
创建新的run configurition。
选择edit configurition。
设置环境,创建PYTHONPATH和SPARK_HOME
配置路径,都可以在Spark安装路径下找到:
选择 File->setting->你的project->project structure
右上角Add content root添加:py4j-some-version.zip和pyspark.zip的路径(这两个文件都在Spark中的python文件夹下,自己找一下)
保存,ok
㈧ 如何运行含spark的python脚本
1、Spark脚本提交/运行/部署1.1spark-shell(交互窗口模式)运行Spark-shell需要指向申请资源的standalonespark集群信息,其参数为MASTER,还可以指定executor及driver的内存大小。sudospark-shell--executor-memory5g--driver-memory1g--masterspark://192.168.180.216:7077spark-shell启动完后,可以在交互窗口中输入Scala命令,进行操作,其中spark-shell已经默认生成sc对象,可以用:valuser_rdd1=sc.textFile(inputpath,10)读取数据资源等。1.2spark-shell(脚本运行模式)上面方法需要在交互窗口中一条一条的输入scala程序;将scala程序保存在test.scala文件中,可以通过以下命令一次运行该文件中的程序代码:sudospark-shell--executor-memory5g--driver-memory1g--masterspark//192.168.180.216:7077
㈨ 如何在ipython或python中使用Spark
在ipython中使用spark
说明:
spark 1.6.0
scala 2.10.5
spark安装路径是/usr/local/spark;已经在.bashrc中配置了SPARK_HOME环境变量。
方法一
/usr/local/Spark/bin/pyspark默认打开的是Python,而不是ipython。通过在pyspark文件中添加一行,来使用ipython打开。
cp pyspark ipyspark
vi ipyspark
# 在最前面添加
IPYTHON=1
# 启动
ipyspark
方法二:
通过为spark创建一个ipython 配置的方式实现。
# 为spark创建一个ipython 配置
ipython profile create spark
# 创建启动配置文件
cd ~/.config/ipython/profile_spark/startup
vi 00-pyspark-setup.py
在00-pyspark-setup.py中添加如下内容:
import os
import sys
# Configure the environment
if 'SPARK_HOME' not in os.environ:
os.environ['SPARK_HOME'] = '/srv/spark'
# Create a variable for our root path
SPARK_HOME = os.environ['SPARK_HOME']
# Add the PySpark/py4j to the Python Path
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "pyspark"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "lib", "py4j-0.9-src.zip"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))
启动ipython
ipython –profile spark
测试程序
在ipython中输入一下命令,如果下面的程序执行完后输出一个数字,说明正确。
from pyspark import SparkContext
sc = SparkContext( 'local', 'pyspark')
def isprime(n):
"""
check if integer n is a prime
"""
# make sure n is a positive integer
n = abs(int(n))
# 0 and 1 are not primes
if n < 2:
return False
# 2 is the only even prime number
if n == 2:
return True
# all other even numbers are not primes
if not n & 1:
return False
# for all odd numbers
for x in range(3, int(n**0.5)+1, 2):
if n % x == 0:
return False
return True
# Create an RDD of numbers from 0 to 1,000,000
nums = sc.parallelize(xrange(1000000))
# Compute the number of primes in the RDD
print 逗Result: 地, nums.filter(isprime).count()
方法三
将上面的程序放入test.py文件,执行命令python test.py。发现错误。因为没有将pyspark路径加入PYTHONPATH环境变量。
在~/.bashrc或/etc/profile中添加如下内容:
# python can call pyspark directly
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/pyspark:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
执行如下命令:
# 使配置生效
source ~/.bashrc
# 测试程序
python test.py