㈠ 如何安裝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