欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Spark簡(jiǎn)介以及最詳細(xì)安裝教程

admin
2024年12月11日 9:50 本文熱度 277

spark最近出了2.0版本,其安裝和使用也發(fā)生了些許的變化。筆者的環(huán)境為:centos7. 
該文章主要是講述了在centos7上搭建spark2.0的具體操作和spark的簡(jiǎn)單使用,希望可以給剛剛接觸spark的朋友一些幫助。 
按照慣例,文章的最后列出了一些參考文獻(xiàn),以示感謝。下面我們就來(lái)看一下spark的安裝。

spark的依賴(lài)環(huán)境比較多,需要Java JDK、hadoop的支持。我們就分步驟依次介紹各個(gè)依賴(lài)的安裝和配置。spark2.0運(yùn)行在Java 7+, Python 2.6+/3.4+ , R3.1+平臺(tái)下,如果是使用scala語(yǔ)言,需要 Scala2.11.x版本,hadoop最好安裝2.6以上版本。 由于spark本身是用scala實(shí)現(xiàn)的,所以建議使用scala,本文中的示例也大多是scala語(yǔ)言。當(dāng)然spark也可以很好地支持java\python\R語(yǔ)言。 
spark的使用有這么幾類(lèi):spark shell交互,spark SQL和DataFrames,spark streaming, 獨(dú)立應(yīng)用程序。 
注意,spark的使用部分,不特殊說(shuō)明,都是以hadoop用戶登錄操作的。

1.安裝Java環(huán)境

我的centos7安裝系統(tǒng)的時(shí)候選擇了安裝openJDK的環(huán)境,所以可以直接使用。但這里還是列出jdk的安裝步驟供大家參考。java環(huán)境可以使用Oracle的jdk或者openjdk. 下面的步驟是openjdk的安裝示范。

a.首先檢查是否安裝了jdk, 和版本是否符合要求。

java -version

若安裝了java環(huán)境,但是版本太低,則先卸載原版本,再安裝新版本。 
卸載可參考以下步驟

yum -y remove java-1.7.0-openjdk*
yum -y remove tzdata-java.noarch

b.若未安裝或已卸載,安裝新版本 
查看可用版本

yum -y list java*


以安裝1.7版本為例

yum -y install java-1.7.0-openjdk*

c.配置環(huán)境變量

vi /etc/profile

在文件的最后添加

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk
PATH=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

其中JAVA_HOME是你的java安裝路徑。其中PATH這個(gè)參數(shù)是以冒號(hào):來(lái)分割不同的項(xiàng)的,后面我們hadoop和spark的環(huán)境變量配置也要修改這個(gè)參數(shù)。 
保存退出后,還需要執(zhí)行

source /etc/profile

該文件才可以生效。檢查環(huán)境變量是否配置生效

echo $PATH

2.安裝hadoop

如果你安裝 CentOS 的時(shí)候不是用的 “hadoop” 用戶,那么需要增加一個(gè)名為 hadoop 的用戶。

a.以root身份登錄,添加”hadoop”用戶

useradd -m hadoop -s /bin/bash

密碼輸入兩次,筆者使用”hadoop”作為密碼,比較好記憶。這樣,一個(gè)用戶名為hadoop, 密碼也是hadoop的用戶就添加好了。

b.可為 hadoop 用戶增加管理員權(quán)限,方便部署,避免一些對(duì)新手來(lái)說(shuō)比較棘手的權(quán)限問(wèn)題

visudo

找到 root ALL=(ALL) ALL 這行(應(yīng)該在第98行,可以先按一下鍵盤(pán)上的 ESC 鍵,然后輸入 :98 (按一下冒號(hào),接著輸入98,再按回車(chē)鍵),可以直接跳到第98行 ),然后在這行下面增加一行內(nèi)容:hadoop ALL=(ALL) ALL (當(dāng)中的間隔為tab),如下圖所示: 

c.centos默認(rèn)安裝ssh. 如果你的操作系統(tǒng)中沒(méi)有ssh, 可以自行安裝,最后的參考資料中有ssh的安裝和配置。

d.安裝hadoop 
去官網(wǎng)下載hadoop的安裝包,下載時(shí)請(qǐng)下載 hadoop-2.x.y.tar.gz 這個(gè)格式的文件,這是編譯好的,另一個(gè)包含 src 的則是 Hadoop 源代碼,需要進(jìn)行編譯才可使用。 
下載時(shí)強(qiáng)烈建議也下載 hadoop-2.x.y.tar.gz.mds 這個(gè)文件,該文件包含了檢驗(yàn)值可用于檢查 hadoop-2.x.y.tar.gz 的完整性,否則若文件發(fā)生了損壞或下載不完整,Hadoop 將無(wú)法正常運(yùn)行。 
校驗(yàn)一下下載文件是否完整

cat hadoop-2.6.4.tar.gz.mds | grep 'MD5' # 列出md5檢驗(yàn)值
md5sum hadoop-2.6.4.tar.gz | tr "a-z" "A-Z"

 
我們選擇將 Hadoop 安裝至 /usr/local/ 中:

sudo tar -zxf hadoop-2.6.4.tar.gz -C /usr/local    # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop            # 將文件夾名改為hadoop
sudo chown -R hadoop:hadoop ./hadoop 

Hadoop 解壓后即可使用。輸入如下命令來(lái)檢查 Hadoop 是否可用,成功則會(huì)顯示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

 
Hadoop 默認(rèn)模式為非分布式模式,無(wú)需進(jìn)行其他配置即可運(yùn)行。非分布式即單 Java 進(jìn)程,方便進(jìn)行調(diào)試。 
現(xiàn)在我們可以執(zhí)行例子來(lái)感受下 Hadoop 的運(yùn)行。Hadoop 附帶了豐富的例子(運(yùn)行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。 
 
在此我們選擇運(yùn)行 grep 例子,我們將 input 文件夾中的所有文件作為輸入,篩選當(dāng)中符合正則表達(dá)式 dfs[a-z.]+ 的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù),最后輸出結(jié)果到 output 文件夾中

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 將配置文件作為輸入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*    

執(zhí)行信息會(huì)很多,最后結(jié)果如下圖所示: 

注意,Hadoop 默認(rèn)不會(huì)覆蓋結(jié)果文件,因此再次運(yùn)行上面實(shí)例會(huì)提示出錯(cuò),需要先將 ./output 刪除。

3.spark的安裝

a.先到官網(wǎng)下載安裝包 

注意第二項(xiàng)要選擇和自己hadoop版本相匹配的spark版本,然后在第4項(xiàng)點(diǎn)擊下載。若無(wú)圖形界面,可用windows系統(tǒng)下載完成后傳送到centos中。 

b.安裝spark

sudo tar -zxf ~/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-1.6.0-bin-without-hadoop/ ./spark
sudo chown -R hadoop:hadoop ./spark          # 此處的 hadoop為用戶名

c.配置spark 
安裝后,需要在 ./conf/spark-env.sh 中修改 Spark 的 Classpath,執(zhí)行如下命令拷貝一個(gè)配置文件:

cd /usr/local/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

編輯 ./conf/spark-env.sh(vim ./conf/spark-env.sh) ,在最后面加上如下一行:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

保存后,Spark 就可以啟動(dòng)了。


4.spark的簡(jiǎn)單使用

在 ./examples/src/main 目錄下有一些 Spark 的示例程序,有 Scala、Java、Python、R 等語(yǔ)言的版本。我們可以先運(yùn)行一個(gè)示例程序 SparkPi(即計(jì)算 π 的近似值),執(zhí)行如下命令:

cd /usr/local/spark
./bin/run-example SparkPi

執(zhí)行時(shí)會(huì)輸出非常多的運(yùn)行信息,輸出結(jié)果不容易找到,可以通過(guò) grep 命令進(jìn)行過(guò)濾(命令中的 2>&1 可以將所有的信息都輸出到 stdout 中,否則由于輸出日志的性質(zhì),還是會(huì)輸出到屏幕中):

cd /usr/local/spark
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"

過(guò)濾后的運(yùn)行結(jié)果如下圖所示,可以得到 π 的 近似值 : 

如果是Python 版本的 SparkPi, 則需要通過(guò) spark-submit 運(yùn)行:

./bin/spark-submit examples/src/main/python/pi.py

 

5.spark的交互模式

a.啟動(dòng)spark shell 
Spark shell 提供了簡(jiǎn)單的方式來(lái)學(xué)習(xí) API,也提供了交互的方式來(lái)分析數(shù)據(jù)。Spark Shell 支持 Scala 和 Python,本文中選擇使用 Scala 來(lái)進(jìn)行介紹。

Scala 是一門(mén)現(xiàn)代的多范式編程語(yǔ)言,志在以簡(jiǎn)練、優(yōu)雅及類(lèi)型安全的方式來(lái)表達(dá)常用編程模式。它平滑地集成了面向?qū)ο蠛秃瘮?shù)語(yǔ)言的特性。Scala 運(yùn)行于 Java 平臺(tái)(JVM,Java 虛擬機(jī)),并兼容現(xiàn)有的 Java 程序。

Scala 是 Spark 的主要編程語(yǔ)言,如果僅僅是寫(xiě) Spark 應(yīng)用,并非一定要用 Scala,用 Java、Python 都是可以的。使用 Scala 的優(yōu)勢(shì)是開(kāi)發(fā)效率更高,代碼更精簡(jiǎn),并且可以通過(guò) Spark Shell 進(jìn)行交互式實(shí)時(shí)查詢,方便排查問(wèn)題。

cd /usr/local/spark
./bin/spark-shell

b.spark shell使用小例子 
Spark 的主要抽象是分布式的元素集合(distributed collection of items),稱(chēng)為RDD(Resilient Distributed Dataset,彈性分布式數(shù)據(jù)集),它可被分發(fā)到集群各個(gè)節(jié)點(diǎn)上,進(jìn)行并行操作。RDDs 可以通過(guò) Hadoop InputFormats 創(chuàng)建(如 HDFS),或者從其他 RDDs 轉(zhuǎn)化而來(lái)。

我們從 ./README 文件新建一個(gè) RDD,代碼如下(本文出現(xiàn)的 Spark 交互式命令代碼中,與位于同一行的注釋內(nèi)容為該命令的說(shuō)明,命令之后的注釋內(nèi)容表示交互式輸出結(jié)果):

val textFile = sc.textFile("file:///usr/local/spark/README.md")

代碼中通過(guò) “file://” 前綴指定讀取本地文件。Spark shell 默認(rèn)是讀取 HDFS 中的文件,需要先上傳文件到 HDFS 中,否則會(huì)報(bào)錯(cuò)。 
RDDs 支持兩種類(lèi)型的操作

actions: 在數(shù)據(jù)集上運(yùn)行計(jì)算后返回值 
transformations: 轉(zhuǎn)換, 從現(xiàn)有數(shù)據(jù)集創(chuàng)建一個(gè)新的數(shù)據(jù)集 
下面我們就來(lái)演示 count() 和 first() 操作:

textFile.count()  // RDD 中的 item 數(shù)量,對(duì)于文本文件,就是總行數(shù)
textFile.first() //RDD 中的第一個(gè) item,對(duì)于文本文件,就是第一行內(nèi)容

接著演示 transformation,通過(guò) filter transformation 來(lái)返回一個(gè)新的 RDD,代碼如下:

val linesWithSpark = textFile.filter(line => line.contains("Spark"))   // 篩選出包含 Spark 的行
linesWithSpark.count()       // 統(tǒng)計(jì)行數(shù)

action 和 transformation 可以用鏈?zhǔn)讲僮鞯姆绞浇Y(jié)合使用,使代碼更為簡(jiǎn)潔:

textFile.filter(line => line.contains("Spark")).count() // 統(tǒng)計(jì)包含 Spark 的行數(shù)

6.spark執(zhí)行獨(dú)立程序

a.配置spark和hadoop環(huán)境變量

cd ~
vi /etc/profile

找到PATH參數(shù),在最后添加spark和hadoop的環(huán)境變量,具體到bin即可。注意每條之間使用冒號(hào)隔開(kāi)。如下圖 

修改完成,保存退出,執(zhí)行

source /ect/profile

文件生效。同樣可以使用echo $PATH 來(lái)查看環(huán)境變量是否添加成功。

b.安裝sbt 
SBT(Simple Build Tool)即簡(jiǎn)單構(gòu)造工具,它是用scala寫(xiě)的,具有強(qiáng)大的依賴(lài)管理功能,所有任務(wù)的創(chuàng)建都支持Scala,可連續(xù)執(zhí)行命令。可以在工程的上下文里啟動(dòng)REPL。 
一般來(lái)說(shuō),使用 Scala 編寫(xiě)的程序需要使用 sbt 進(jìn)行編譯打包,相應(yīng)的,Java 程序使用 Maven 編譯打包,而 Python 程序通過(guò) spark-submit 直接提交。但是scala也可以使用maven來(lái)打包,不過(guò)配置起來(lái)較為復(fù)雜。這里就不再贅述了。 
到官網(wǎng)下載安裝包(http://www.scala-sbt.org/)。安裝到/usr/local/sbt文件夾中

sudo mkdir /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt      # 此處的 hadoop 為你的用戶名
cd /usr/local/sbt

接著在 /usr/local/sbt 中創(chuàng)建 sbt 腳本(vim ./sbt),添加如下內(nèi)容:

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

注意這里的最后一行的 dirname 0,號(hào)來(lái)號(hào)號(hào)來(lái)西執(zhí)dirname0,它是被倒引號(hào)括起來(lái)的,不是單引號(hào)。被倒引號(hào)括起來(lái)的東西表示要執(zhí)行的命令。dirname0 只能用在腳本中,在命令行中是無(wú)效的,它的意思是去當(dāng)前腳本所在位置的路徑。 
 
很明顯。這里你要檢查/usr/local/sbt 夾下sbt-launch.jar這個(gè)文件是否存在。因?yàn)楣P者和網(wǎng)上眾多教程都提到了,因?yàn)榫W(wǎng)絡(luò)的原因,sbt下載的時(shí)候,這個(gè)依賴(lài)包有可能缺失。如果沒(méi)有,請(qǐng)自行下載(http://pan.baidu.com/s/1gfHO7Ub)

c.構(gòu)建scala工程目錄 
sbt打包scala是有固定工程目錄結(jié)構(gòu)的。

cd ~
mkdir ./sparkapp        # 創(chuàng)建應(yīng)用程序根目錄
mkdir -p ./sparkapp/src/main/scala     # 創(chuàng)建所需的文件夾結(jié)構(gòu)

d.編寫(xiě)?yīng)毩⒊绦?nbsp;
這里我們借用官網(wǎng)上的一個(gè)小的demo.

cd ~
cd sparkapp/src/main/scala
vi SimpleApp.scala

文件內(nèi)容為程序主體

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
}

e.添加配置文件

cd ~
cd sparkapp/
vi simple.bat

文件添加下面內(nèi)容

name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"

 
*注意,這里的scalaVersion和spark-core后面的版本號(hào)都要換成你自己的。 
這兩個(gè)版本號(hào),在啟動(dòng)spark的時(shí)候有顯示。如下圖* 

至此為止,檢查一下工程目錄結(jié)構(gòu)

cd ~
cd sparkapp
find .

f.使用sbt打包scala程序

cd ~
cd sparkapp/
sbt package

第一次打包時(shí)間很長(zhǎng),需要下載各種依賴(lài)包,所以請(qǐng)耐心等待。生成的jar包位置在~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 

g.提交編譯后的程序

cd ~
cd /usr/local/spark
./bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

輸出信息較多,可使用grep過(guò)濾結(jié)果

.bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"

到此為止,本文就結(jié)束了,關(guān)于文章中沒(méi)有介紹的spark SQL和DataFrames,大家有興趣的可以到下面列出的參考文獻(xiàn)中查找。

按照慣例,列出參考文獻(xiàn)供大家參考: 
1.http://spark.apache.org/docs/latest/building-spark.html 
2.http://spark.apache.org/docs/latest/quick-start.html 
3.http://spark.apache.org/docs/latest/programming-guide.html 
4.http://www.importnew.com/4311.html 
5.http://www.scala-sbt.org/ 
6.http://blog.csdn.net/czmchen/article/details/41047187 
7.http://blog.csdn.net/zwhfyy/article/details/8349788 
8.http://jingyan.baidu.com/article/948f59242c231fd80ff5f9ec.html 
9.http://dblab.xmu.edu.cn/blog/install-hadoop/ 
10.http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/ 
11.http://dblab.xmu.edu.cn/blog/install-hadoop-in-centos/


該文章在 2024/12/11 9:50:19 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved