spark編譯安裝
A. 如何在windows下安裝配置pyspark notebook
第一步:安裝anaconda
anaconda自帶一系列科學計算包
接著配置環境變數:如我安裝在D盤下
B. 在linux下怎麼安裝spark
在windows下安裝軟體大家都覺得很容易,只要雙擊setup或是install的圖標,然後跟著向導一步一步的按提示做就可以了,但是在linux下安裝軟體就不像windows下那樣容易了,有時你找到的是沒有編譯過的軟體源碼,那就更加的麻煩了,這里就介紹一下如何安裝linux的軟體啦! linux下的軟體一般都是經過壓縮的,主要的格式有這幾種:rpm、tar、tar.gz、tgz等。所以首先拿到軟體後第一件事就是解壓縮。 一、在xwindow下以rpm格式的軟體安裝比較容易,只要在把滑鼠移到文件上單擊右鍵,在彈出的菜單里會有專門的三項(只有在右鍵單擊rpm文件才會出現)show info,upgrade和install,這三項的意思大家都很清楚了,我就不多說了。rpm格式說了,接著就是tar,tar.gz,tgz等,在xwindow下雙擊這些格式的文件就會自動解壓縮的,是解壓縮而不是像rpm那樣有install選項的,install文件會在你解壓縮後才出現,不過這里我要先說一下,在你雙擊install前建議先好好看一下readme,因為你所要安裝這些軟體可能是沒有編譯的,所以看一下會比較好。 二、說完了xwindow下的安裝和解壓縮,接著說在文本模式下如何解壓縮和安裝,還有編譯源碼了。首先說rpm的,以root身份登陸後(用其他的身份登陸也可以但有些軟體就不能被安裝)鍵入rpm -i你所要解壓縮的文件+擴展名(當然是rpm)也不是很難吧,這里我要說的是「-i」意思是install,如果你想要卸載或是要執行其他的指令就打rpm --help,看電腦給你的提示吧,為了照顧那些E文不太好的人我這里就寫幾個常用的參數:-e:卸載相關的應用程序,-U(注意是大寫):升級軟體包, -pql:列出rpm軟體包的相關信息,-qf:查找指定文件屬於哪個軟體包。至於那些其他格式的軟體則可以用gunzip,gzip,tar和unzip等指令來解壓縮,然後再運行install。通過解包後會得到一些文件,然後進入剛才解壓縮後文件目錄用「ls -F -color」指令看一下所得到的文件,一般有兩種情況:第一種是文件為已經編譯好的程序(無須再編譯了)用上面的察看文件命令會以帶「*」標記的亮綠色顯示;第二種則是需要由你自己編譯的源代碼。得到的是源代碼的話,就需要我們自己編譯來得到可運行的程序。編譯源代碼聽到編譯是不是就嚇到你了呢,其實說穿了也就加上幾句話而已,對初學者是有些困難想用好的操作系統就需要學習嘛,等你學會了在MM前露一手的時候想想吧……,在編譯之前先要認真的閱讀一下readme文檔,老鳥們就不需要了吧,等你閱讀完了以後就執行 ./configure make make install(只有Root身份才能執行此命令),編譯完成之後便會在當前目錄或src子目錄下得到軟體的可執行程序。 介紹完了,大家是不是覺的RPM的軟體安裝比較容易一點呢,但我個人意見初學者還是多選擇RPM格式以外的軟體,因為通過編譯軟體的源碼可以為你以後編譯內核打下一定的基礎。
C. 如何在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
D. Spark sql 到底怎麼搭建起來
1、spark1.0的包編譯時指定支持hive: ./make-distribution.sh --hadoop 2.3.0-cdh5.0.0 --with-yarn --with-hive --tgz
2、安裝完spark1.0;
3、安裝與hadoop對應的CDH版本的hive;
Spark SQL 支持Hive案例:
1、將hive-site.xml配置文件拷貝到$SPARK_HOME/conf下
hive-site.xml文件內容形如:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop000:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
2、啟動spark: spark-shell
案例來源於spark官方文檔: http://spark.apache.org/docs/latest/sql-programming-guide.html
//創建hiveContext
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
// 隱式轉換
import hiveContext._
//創建hive表
hql("CREATE TABLE IF NOT EXISTS hive.kv_src (key INT, value STRING)")
//載入數據到hive表
hql("LOAD DATA LOCAL INPATH '/home/spark/app/spark-1.0.0-bin-2.3.0-cdh5.0.0/examples/src/main/resources/kv1.txt' INTO TABLE hive.kv_src")
//通過hql查詢
hql("FROM hive.kv_src SELECT key, value").collect().foreach(println)
E. 如何在windows7下安裝spark
其實,我想說,起初學習Hadoop的一些經驗對現在學習和理解spark有了很大的幫助,尤其反反復復幾次Hadoop的配置,現在linux基礎指令和spark安裝,比較順手了,出錯了也知道哪裡遺漏了。
肯定第一步是配置spark環境:包括linux系統的安裝,java,ssh,Hadoop,Scala,spark的安裝與環境變數設置。雖說簡單,但對於初學者說,尤其是沒有使用過linux系統的,還是有些挑戰。其中遺漏一些細節問題,都會出錯。
第二步:java學習。會java的可以忽略,不會的建議還是學習下java,雖說可以跳過java直接學習Scala,但是Scala畢竟和java聯系密切,教材中也經常拿Scala和Java做比較。掌握Java基礎就行,最差就是能看懂吧。。
第三步:Hadoop學習。HDFS,MR計算框架,必須得知道吧。spark也是需要在HDFS上進行數據獲取的,學習Hadoop才能知道其不足,明白spark的優勢,為什麼Hadoop必死。在hdfs的操作指令也必須掌握。能會寫MapRece程序就再好不過了。(我還不會。。。)
第四步:Scala學習。函數式編程,重點明白這個吧。一些trait什麼的使用,會java了這些都是小菜,本質一樣,表達方式不同而已。所以。再次強調要學習JAVA。對我來說,不需要深入學習Scala編程,只需能看懂,而且會使用Scala操作RDD就行。後面的復雜高級編程我沒學,以後用到再看。
第五步:就是spark學習。當然,最好學習spark的方式就是看官方文檔,讀源碼,看博客(博客寫的都太簡單,沒有特別深入的),看RDD的論文,作業如何調度,什麼什麼的。對於英語水平不高,閱讀官方文檔略困難的童鞋,推薦某研究院的spark官方文檔中文翻譯,還是很全的。不推薦買國內的書看,想看度娘參考下就行了,所以。英語也得提升啊。
F. debian sparkr怎麼配置環境變數
1. SparkR的安裝配置
1.1. R與Rstudio的安裝
1.1.1. R的安裝
我們的工作環境都是在Ubuntu下操作的,所以只介紹Ubuntu下安裝R的方法:
1) 在/etc/apt/sources.list添加源
deb http://mirror.bjtu.e.cn/cran/bin/linux/ubuntu precise/,
然後更新源apt-get update;
2) 通過apt-get安裝:
sudo apt-get install r-base
1.1.2. Rstudio的安裝
官網有詳細介紹:
http://www.rstudio.com/procts/rstudio/download-server/
sudo apt-get install gdebi-core
sudo apt-get install libapparmor1 # Required only for Ubuntu, not Debian
wget http://download2.rstudio.org/rstudio-server-0.97.551-amd64.deb
sudo gdebi rstudio-server-0.97.551-amd64.deb
1.2. rJava安裝
1.2.1. rJava介紹
rJava是一個R語言和Java語言的通信介面,通過底層JNI實現調用,允許在R中直接調用Java的對象和方法。
rJava還提供了Java調用R的功能,是通過JRI(Java/R Interface)實現的。JRI現在已經被嵌入到rJava的包中,我們也可以單獨試用這個功能。現在rJava包,已經成為很多基於Java開發R包的基礎功能組件。
正是由於rJava是底層介面,並使用JNI作為介面調用,所以效率非常高。在JRI的方案中,JVM通過內存直接載入RVM,調用過程性能幾乎無損耗,因此是非常高效連接通道,是R和Java通信的首選開發包。
1.2.2. rJava安裝
1) 配置rJava環境
執行R CMD javareconf
root@testnode4:/home/payton# R CMD javareconf
2) 啟動R並安裝rJava
root@testnode4:/home/payton# R
> install.packages("rJava")
1.3. SparkR的安裝
1.3.1. SparkR的代碼下載
從網頁下載代碼SparkR-pkg-master.zip https://github.com/amplab-extras/SparkR-pkg
1.3.2. SparkR的代碼編譯
1) 解壓SparkR-pkg-master.zip,然後cd SparkR-pkg-master/
2) 編譯的時候需要指明Hadoop版本和Spark版本
SPARK_HADOOP_VERSION=2.4.1 SPARK_VERSION=1.2.0 ./install-dev.sh
至此,單機版的SparkR已經安裝完成。
1.3.3. 分布式SparkR的部署配置
1) 編譯成功後,會生成一個lib文件夾,進入lib文件夾,打包SparkR為SparkR.tar.gz,這個是分布式SparkR部署的關鍵。
2) 由打包好的SparkR.tar.gz在各集群節點上安裝SparkR
R CMD INSTALL SparkR.tar.gz
至此分布式SparkR搭建完成。
2. SparkR的運行
2.1. SparkR的運行機制
SparkR是AMPLab發布的一個R開發包,為Apache Spark提供了輕量的前端。SparkR提供了Spark中彈性分布式數據集(RDD)的API,用戶可以在集群上通過R shell交互性的運行job。SparkR集合了Spark 和R的優勢,下面的這3幅圖很好的闡釋了SparkR的運行機制。
2.2. 用SparkR 進行數據分析
2.2.1. SparkR基本操作
首先介紹下SparkR的基本操作:
第一步,載入SparkR包
library(SparkR)
第二步,初始化Spark context
sc <- sparkR.init(master=" spark://localhost:7077"
,sparkEnvir=list(spark.executor.memory="1g",spark.cores.max="10"))
第三步,讀入數據,spark的核心是Resilient Distributed Dataset (RDD),RDDS可以從Hadoop的InputFormats來創建(例如,HDFS文件)或通過轉化其它RDDS。例如直接從HDFS讀取數據為RDD的示例如下:
lines <- textFile(sc, "hdfs://sparkR_test.txt")
另外,也可以通過parallelize函數從向量或列表創建RDD,如:
rdd <- parallelize(sc, 1:10, 2)
到了這里,那麼我們就可以運用RDD的動作(actions)和轉換(transformations)來對RDD進行操作並產生新的RDD;也可以很容易地調用R開發包,只需要在集群上執行操作前用includePackage讀取R開發包就可以了(例:includePackage(sc, Matrix));當然還可以把RDD轉換為R語言格式的數據形式來對它進行操作。
具體可參見如下兩個鏈接:
http://amplab-extras.github.io/SparkR-pkg/
https://github.com/amplab-extras/SparkR-pkg/wiki/SparkR-Quick-Start
那麼下面我們就通過兩個示例來看下 SparkR是如何運行的吧。
2.2.2. SparkR使用舉例
1) Example1:word count
# 載入SparkR包
library(SparkR)
# 初始化 Spark context
sc <- sparkR.init(master="spark://集群ip:7077"
,sparkEnvir=list(spark.executor.memory="1g",spark.cores.max="10"))
# 從HDFS上讀取文件
lines <- textFile(sc, "hdfs://集群ip:8020/tmp/sparkR_test.txt")
# 按分隔符拆分每一行為多個元素,這里返回一個序列
words<-flatMap(lines,function(line) {strsplit(line,"\\|")[[1]]})
# 使用 lapply 來定義對應每一個RDD元素的運算,這里返回一個(K,V)對
wordCount <-lapply(words, function(word) { list(word, 1L) })
# 對(K,V)對進行聚合計算
counts<-receByKey(wordCount,"+",2L)
# 以數組的形式,返回數據集的所有元素
output <- collect(counts)
# 按格式輸出結果
for (wordcount in output) {
cat(wordcount[[1]], ": ", wordcount[[2]], "\n")
}
2) Example2:logistic regression
# 載入SparkR包
library(SparkR)
# 初始化 Spark context
sc <- sparkR.init(master="集群ip:7077",
appName='sparkr_logistic_regression',
sparkEnvir=list(spark.executor.memory='1g',
spark.cores.max="10"))
# 從hdfs上讀取txt文件, 該RDD由spark集群的4個分區構成
input_rdd <- textFile(sc,
"hdfs://集群ip:8020/user/payton/german.data-numeric.txt",
minSplits=4)
# 解析每個RDD元素的文本(在每個分區上並行)
dataset_rdd <- lapplyPartition(input_rdd, function(part) {
part <- lapply(part, function(x) unlist(strsplit(x, '\\s')))
part <- lapply(part, function(x) as.numeric(x[x != '']))
part
})
# 我們需要把數據集dataset_rdd分割為訓練集(train)和測試集(test)兩部分,這里
# ptest為測試集的樣本比例,如取ptest=0.2,即取dataset_rdd的20%樣本數作為測試
# 集,80%的樣本數作為訓練集
split_dataset <- function(rdd, ptest) {
#以輸入樣本數ptest比例創建測試集RDD
data_test_rdd <- lapplyPartition(rdd, function(part) {
part_test <- part[1:(length(part)*ptest)]
part_test
})
# 用剩下的樣本數創建訓練集RDD
data_train_rdd <- lapplyPartition(rdd, function(part) {
part_train <- part[((length(part)*ptest)+1):length(part)]
part_train
})
# 返回測試集RDD和訓練集RDD的列表
list(data_test_rdd, data_train_rdd)
}
# 接下來我們需要轉化數據集為R語言的矩陣形式,並增加一列數字為1的截距項,
# 將輸出項y標准化為0/1的形式
get_matrix_rdd <- function(rdd) {
matrix_rdd <- lapplyPartition(rdd, function(part) {
m <- matrix(data=unlist(part, F, F), ncol=25, byrow=T)
m <- cbind(1, m)
m[,ncol(m)] <- m[,ncol(m)]-1
m
})
matrix_rdd
}
# 由於該訓練集中y的值為1與0的樣本數比值為7:3,所以我們需要平衡1和0的樣本
# 數,使它們的樣本數一致
balance_matrix_rdd <- function(matrix_rdd) {
balanced_matrix_rdd <- lapplyPartition(matrix_rdd, function(part) {
y <- part[,26]
index <- sample(which(y==0),length(which(y==1)))
index <- c(index, which(y==1))
part <- part[index,]
part
})
balanced_matrix_rdd
}
# 分割數據集為訓練集和測試集
dataset <- split_dataset(dataset_rdd, 0.2)
# 創建測試集RDD
matrix_test_rdd <- get_matrix_rdd(dataset[[1]])
# 創建訓練集RDD
matrix_train_rdd <- balance_matrix_rdd(get_matrix_rdd(dataset[[2]]))
# 將訓練集RDD和測試集RDD放入spark分布式集群內存中
cache(matrix_test_rdd)
cache(matrix_train_rdd)
# 初始化向量theta
theta<- runif(n=25, min = -1, max = 1)
# logistic函數
hypot <- function(z) {
1/(1+exp(-z))
}
# 損失函數的梯度計算
gCost <- function(t,X,y) {
1/nrow(X)*(t(X)%*%(hypot(X%*%t)-y))
# 定義訓練函數
train <- function(theta, rdd) {
# 計算梯度
gradient_rdd <- lapplyPartition(rdd, function(part) {
X <- part[,1:25]
y <- part[,26]
p_gradient <- gCost(theta,X,y)
list(list(1, p_gradient))
})
agg_gradient_rdd <- receByKey(gradient_rdd, '+', 1L)
# 一次迭代聚合輸出
collect(agg_gradient_rdd)[[1]][[2]]
}
# 由梯度下降演算法優化損失函數
# alpha :學習速率
# steps :迭代次數
# tol :收斂精度
alpha <- 0.1
tol <- 1e-4
step <- 1
while(T) {
cat("step: ",step,"\n")
p_gradient <- train(theta, matrix_train_rdd)
theta <- theta-alpha*p_gradient
gradient <- train(theta, matrix_train_rdd)
if(abs(norm(gradient,type="F")-norm(p_gradient,type="F"))<=tol) break
step <- step+1
}
# 用訓練好的模型預測測試集信貸評測結果(「good」或「bad」),並計算預測正確率
test <- lapplyPartition(matrix_test_rdd, function(part) {
X <- part[,1:25]
y <- part[,26]
y_pred <- hypot(X%*%theta)
result <- xor(as.vector(round(y_pred)),as.vector(y))
})
result<-unlist(collect(test))
corrects = length(result[result==F])
wrongs = length(result[result==T])
cat("\ncorrects: ",corrects,"\n")
cat("wrongs: ",wrongs,"\n")
cat("accuracy: ",corrects/length(y_pred),"\n")
G. 如何安裝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
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
cd /usr/local/sparkcp ./conf/spark-env.sh.template ./conf/spark-env.shvim conf/spark-enf.sh123
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
--conf spark.executorEnv.LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/amd64/server"
--conf spark.executorEnv.CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath --glob):${CLASSPATH}" 12
安裝scala和Spark
搭建好了上邊的來我們進行下一個教程[微笑]
1. 安裝scala最好選擇一個2.10.X,這樣對spark支持比較好,不會出現一些幺蛾子。這有個教程,應該是可以的
2. 安裝spark大概是這裡面最簡單的事了吧點這里下載spark。鑒於我們已經安裝好了hadoop,所以我們就下載一個不需要hadoop的spark包,就是這個with user-provided Hadoop這個
我用的是1.6.0好像大家用這個的比較多,最新的已經到2.1.x了。
解壓到你想安裝的目錄
之後很重點的一步是修改spark-env.sh的內容,好像要改好多好多。。。
這里是我的spark-env.sh的一些配置
屬性不明白的可以打開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包,在提交的時候添加如下的配置信息
這里致謝評論區中的「她說巷尾的櫻花開了 2017-07-13 10:10發表 [回復]「 提供解決方法
相關鏈接:
利用IDEA查看和修改spark源碼
修改spark源碼並編譯部署