Spark新手入門——3.Spark集群(standalone模式)安裝


歡迎大家關注我的公眾號,“互聯網西門二少”,我將繼續輸出我的技術干貨~

主要包括以下三部分,本文為第三部分:

一. Scala環境准備 查看
二. Hadoop集群(偽分布模式)安裝 查看
三. Spark集群(standalone模式)安裝

Spark集群(standalone模式)安裝

若使用spark對本地文件進行測試學習,可以不用安裝上面的hadoop環境,若要結合hdfs使用spark,則可以參考上面的步驟搭建hadoop。

1. 下載安裝包並解壓(如:~/tools/spark-2.3.1-bin-hadoop2.7);

2. 啟動服務
a.啟動master

./sbin/start-master.sh

b.啟動slaves
  可先登陸 http://localhost:8080/ ,獲取“Spark URL”

./sbin/start-slave.sh <spark://xxxx-xxx:7077>

 

3. 開發測試程序
下面開發一個超級簡單的rdd任務,邏輯(統計hdfs文件中包含單詞form的行及行數,並將結果保存到hdfs)參考官網

a. 使用第一講中准備好的Scala環境,創建一個scala maven project:mvn-rdd-test

b. 編寫代碼

 
         
package com.person.test
 
import org.apache.spark.{SparkConf,SparkContext}  object MvnRddTest { def main(args: Array[String]): Unit = { val dataPath = "hdfs://localhost:9000/usr/test/LICENSE.txt" val resultPath = "hdfs://localhost:9000/usr/test/result"
val sc = new SparkContext(new SparkConf().setAppName("Mvn-Rdd-Test"))
try{ val accm = sc.longAccumulator("LineAccumulator") val rdd = sc.textFile(dataPath,2) val sparkDs = rdd.filter( line => if(line.contains("form")){ accm.add(1) true } else false ) sparkDs.saveAsTextFile(resultPath) println(s"Lines that contains 'form' number is: ${accm.value}") }catch { case e:Exception => e.printStackTrace() }finally { sc.stop() } } }

注:運行該示例需要上傳一份文件到(二)的hdfs中,例中的LICENSE.txt來自hadoop安裝包。

c. 打含依賴項的jar包
pom.xml配置:

    <groupId>com.person.test</groupId>
    <artifactId>mvn-rdd-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <!-- spark core -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.3.1</version>
        </dependency>

        <!-- hdfs tool -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-assembly</artifactId>
            <version>0.8.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!-- build java -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.person.test.MvnRddTest</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- build scala -->
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

 

雙擊Maven Projects-->mvn-rdd-test-->Lifecycle-->package即可完成打包,“mvn-rdd-test-1.0-SNAPSHOT-jar-with-dependencies.jar”即為包含依賴項的包。
注:pom中引入的這兩個build插件是必須的,分別用於build java和scala。

d. 測試:

./bin/spark-submit --master spark://xxxx-xxx:7077 --class com.person.test.MvnRddTest ~/Document/IdeaProjects/mvn-rdd-test/target/mvn-rdd-test-1.0-SNAPSHOT-jar-with-dependencies.jar

可以到hdfs上查看運行結果,終端會打印計數器的值。

注意:使用maven打包,不要使用Build Artifacts方式打包。

參考資料:官方文檔


后續會陸續更新Spark RDD、Spark DataSet、Spark Streaming的用法;

 

-->Spark提高篇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM