新建一个 Scala 类
演示了 ssh 不需要输密码的修改
执行 ssh-keygen (一路回车)
执行 cd .ssh 看到几个文件,其中 .pub 为公钥
创建文件 authorized_keys 文件
执行 cat 文件 > 文件 (把那个 .pub 导入 authorized_keys )
chmod 600 authorized_keys
验收:再执行 ssh localhost 看到启动后不需要输入密码
---------------------------------------------------------------
给集群提交作业,也是把作业(工程)打包成 jar 然后上传到服务路径
./bin/spark-submit .... xx.jar (工程)
Wordcount
//Scala Object WordCount{ def main(args: Array[String]){ val conf= new SparkConf().setAppName("wordcount") val sc = new SparkContext(conf) val input= sc.textFile("/home/soft/hello.txt") //RDD操作:压扁 val lines = input.flatMap(line=> line.split(" ")) //转换成kv对 val count= lines.map(word=>(word,1)).reduceByKey{case (x,y)=>x+y} val output= count.saveAsTextFile("/home/result") } }
Project Structure -> Artifacts ->+然后 BuildArtifacts 打包Jar
启动集群:
启动master start-master.sh
启动worker spark-class
提交作业 spark-submit
#启动worker spark-class org.apache.spark.deploy.worker.Worker spark://localhost.localdomain:4040 #提交 spark-submit --master spark://localhost.localdomain:4040 --class WordCount /home/soft/hello.jar #上传jar包 rz -be
WordCount程序开发
使用standalone mode启动spark:命令行输入
$ cd software/spark-2.4.4-bin-hadoop2.7/sbin $ ./start-master.sh 会输出log文件地址xxx $ tail xxx 会输出log文件末尾,找到Starting Spark master at spark://xxx.local:7077, 也可以浏览器访问http://localhost:8080/,出现视频中的网页
参考https://uohzoaix.github.io/studies//2014/09/13/sparkRunning/
开发Spark程序
具体命令:
启动集群相关步骤
然后出现如下截图
Build项目
点击OK后出现这个效果
然后重新配置
如果报错,原因是之前已经存在相关文件,只需要把相关文件删除即可
配置Jar包过程3
配置Jar包过程2
配置jar包过程
打包过程:
WordCount程序
新建一个Scala class,命名为WordCount,Kind为Object
配置build.sbt相关环境依赖
WordCount
配置ssh无密码登录
spark 启动 master worker 、
配置ssh免密登录
可以看到spark集群上的wordcount程序在跑,是4040端口,jobs。
用 rz -be命令可以上传一个本地文件
详细的集群启动操作,相关的参数
开发完spark程序后,启动集群:
启动master ./sbin/start-master.sh
启动worker ./bin/spark-class
提交作业 ./bin/spark-submit
如何添加jar包,有两种选择方式
开发第一个spark程序: wordcount
设置应用名,val conf=new sparkconf()。setappname(“”)
设置上下文根,val sc =new sparkcontext(conf)
加载文件,val input=sc。textfile(“”)
通过分隔符获取数据行(压扁操作),val lines = input。flatmap(line=》line。split(“”))
获取单词个数count,转换成map对象,val count= lines。map(word=》(word,1))。reducebykey{case (x,y)=》x+y}
输出结果,val output=count。saveastextfile(“”)