1、安装相应的软件
(1)安装jdk
下载地址:http://www.Oracle.com/technetwork/java/javase/downloads/index.html
(2)安装scala
下地地址: http://www.scala-lang.org/
(3)安装spark
下载地址:http://spark.apache.org/downloads.html
(4)安装sbt
如果需要使用到scala独立应用编程,还需一个用来构建应用的工具,sbt或者maven
sbt的安装过程见:http://blog.csdn.net/wuzhilon88/article/details/46300491
其中:
chmod u+x sbt
这一步,是把sbt文件的权限更改,表示给当前目录下sbt这个文件的所有者增加执行权限。
2、配置环境变量
可以配置用户环境变量文件:
vim ~/.bash_profile
添加如下几个环境变量:
export JAVA_HOME=/usr/lib/jvm/java-1.8.-openjdk-1.8.0.71-.b15.el6_7.x86_64
export SCALA_HOME=/home/zengzc/scala-2.10.
export SPARK_HOME=/home/zengzc/spark-1.6.-bin-hadoop2.
export SPARK_LOCAL_IP=localhost
其中,spark_local_ip这个变量可以在项目的启动脚本里面写。但是后来发现,到后面运行spark程序的时候,依然会出现
// :: ERROR : hefei-log-: hefei-log-: unknown error
java.net.UnknownHostException: hefei-log-: hefei-log-: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:)
at tachyon.util.network.NetworkAddressUtils.getLocalIpAddress(NetworkAddressUtils.java:)
at tachyon.util.network.NetworkAddressUtils.getLocalHostName(NetworkAddressUtils.java:)
这样的错误,解决办法是在/etc/hosts里面添加正确的主机名和IP的映射。
3、使用spark shell
在spark解压后的目录下,执行./bin/spark-shell,可以启动scala shell 并初始化一个sparkcontext对象。
执行./bin/pyspark,则可以在python shell中使用spark。
4、用sbt建立spark scala独立应用程序
(1)写.scala应用程序文件;
(2)写.sbt配置依赖文件;
(3)bash: find . 核对目录结构:
# Your directory layout should look like this
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
(4)bash: sbt package 打包;
(5)用spark中的spark-submit运行.jar:
$ YOUR_SPARK_HOME/bin/spark-submit \
--class "SimpleApp" \
--master local[] \
target/scala-2.10/simple-project_2.-1.0.jar
上面的 local[4] 表示程序运行在4个核上面,如果是在集群上面提交任务,则master后面的参数应该是yarn,然后--deploy-mode的参数是cluster;因为--deploy-mode的参数默认是client。
注意:在build.sbt添加新的dependencies library之后,有时会出现classdefnotfoundException这样的错误,解决方法如:
http://*.com/questions/28459333/how-to-build-an-uber-jar-fat-jar-using-sbt-within-intellij-idea/28498443#28498443
主要是需要添加一个sbt assembly插件,用来合并依赖库之间定义类的冲突。添加完后,以后运行scala程序就用sbt assembly取代sbt package,然后再submit即可。
5、spark集群查看log命令:
yarn --config /usr/local/hadoop-2.7.0/etc/hadoop-infosec-radar application -kill application_1479387059004_178692/