一、首先配置ssh無秘鑰登陸,
先使用這條命令:ssh-keygen,然后敲三下回車;
然后使用cd .ssh進入 .ssh這個隱藏文件夾;
再創建一個文件夾authorized_keys,使用命令touch authorized_keys;
然后使用cat id_rsa.pub > authorized_keys 即可;
最后使用 chmod 600 authorized_keys修改權限就完成了。
二、創建spark項目
idea創建spark項目的過程這里就略過了,具體可以看這里https://www.cnblogs.com/xxbbtt/p/8143441.html
三、在pom.xml加入相關的依賴包
在pom.xml文件中添加:
<properties> <spark.version>2.1.0</spark.version> <scala.version>2.11</scala.version> </properties> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-mllib_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> </dependencies> <build> <plugins> <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> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>
然后等待就好了。。。
四、編寫一個示范程序
創建一個scala類,並寫以下代碼,也可以是其他的,這里只是測試而已
object first { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("wordcount") val sc = new SparkContext(conf) val input = sc.textFile("/home/cjj/testfile/helloSpark.txt") val lines = input.flatMap(line => line.split(" ")) val count = lines.map(word => (word, 1)).reduceByKey { case (x, y) => x + y } val output = count.saveAsTextFile("/home/cjj/testfile/helloSparkRes") } }
這里使用了Spark實現的功能是,計算helloSpark.txt這個文件各個單詞出現的次數,並保存在helloSparkRes文件夾中。
五、打包
file->Porject Structure->Artifacts->綠色的加號->JAR->from modules...
跳出以下對話框,選擇要打包的類,然后選擇copy to.....選項,這里的意思是只打包這一個類。
然后點擊ok,然后ok。然后build->build Artifacts
再然后點擊build
等待build完成。然后可以在項目的這個目錄中找到剛剛打包的這個jar包
這里的first的我的項目名。
六、啟動集群
先將剛才打包的jar包復制到虛擬機中,
helloSpark.txt是我將要操作的文件。接着就是啟動集群,分為三步
- 啟動master ./sbin/start-master.sh
- 啟動worker ./bin/spark-class
- 提交作業 ./bin/spark-submit
首先進入spark-2.2.1-bin-hadoop2.7文件夾,然后運行命令./sbin/start-master.sh
然后可以打開瀏覽器,進入localhost:8080,可以看到
這里的URL spark://localhost:7077需要記下來下一步需要使用,下一步啟動work,加上剛剛的URL,可以使用的命令是,
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077
這時啟動另一個窗口進行提交作業,同樣需要先進入spark文件夾,然后運行命令
./bin/spark-submit --master spark://localhost:7077 --class first /home/cjj/testfile/first.jar
這樣就算完成了,我們可以來看看結果,看結果之前需要先看一看helloSpark.txt的內容
結果保存在helloSparkRes中,下面是結果
這里的結果告訴我們have和word的個數為2,word和a的個數為1。