用户需要根据Spark官方规定的Scala版本进行下载和安装。
Scala官网地址为http://www.scala-lang.org。
以Scala-2.11.4为例进行介绍。
1) 下载Scala-2.11.7.tgz。
wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz
2) 在目录下解压
tar –zxvf scala-2.11.7.tgz
[hadoop@cmanager jars]$ sudo tar -zxvf scala-2.11.7.tgz
[hadoop@cmanager jars]$sudo mv scala-2.11.7 /gtabigdata/soft/scala
[hadoop@cmanager jars]$ sudo chown -R hadoop:hadoop/gtabigdata/soft/scala
3) 配置环境变量,在/etc/profile中添加下面的内容。
vim /etc/profile
#scala
export SCALA_HOME=/gtabigdata/soft/scala
export PATH=$PATH:${SCALA_HOME}/bin
4) 使profile文件更新生效
source /etc/profile
进入官网下载对应Hadoop版本的Spark程序包,官网地址为http://spark.apache.org/downloads.html
由于Hadoop已安装2.7的版本,Spark最新版本是1.4.1
wget http://archive.apache.org/dist/spark/spark-1.4.1/spark-1.4.1-bin-hadoop2.6.tgz
下载spark-1.0.2-bin-hadoop2.tgz
1) 解压tar –zxvf spark-1.4.1-bin-hadoop2.6.tgz
[hadoop@cmanager jars]$sudo tar -zxvf spark-1.4.1-bin-hadoop2.6.tgz
[hadoop@cmanager jars]$sudo mv spark-1.4.1-bin-hadoop2.6/gtabigdata/soft/spark
[hadoop@cmanager jars]$chown -R hadoop:hadoop/gtabigdata/soft/spark
2) 配置conf/spark-env.sh
[hadoop@cmanager conf]$cp spark-env.sh.template spark-env.sh
<1> 用户可以配置基本的参数,其他更复杂的参数请参加官网的配置(Configuration)页面,Spark配置地址为:http://spark.apache.org/docs/latest/configuration.html
<2> 编辑conf/spark-env.sh文件,加入下面的配置参数。
vim/gtabigdata/soft/spark/conf/spark-env.sh
exportSCALA_HOME=/gtabigdata/soft/scala/
exportSPARK_WORKER_MEMERY=5g
exportSPARK_MASTER_IP=cmanager
exportMASTER=spark://cmanager:7077
exportJAVA_HOME=/usr/java/jdk1.7.0_71
exportSPARK_EXECUTOR_MEMORY=512m
exportSPARK_DRIVER_MEMORY=1g
export SPARK_JAR=/gtabigdata/soft/spark/lib/spark-assembly-1.4.1-hadoop2.6.0.jar
exportHADOOP_CONF_DIR=/gtabigdata/soft/hadoop/etc/hadoop
exportYARN_CONF_DIR=/gtabigdata/soft/hadoop/etc/hadoop
exportSPARK_YARN_USER_ENV=/gtabigdata/soft/hadoop/etc/hadoop
exportSPARK_SUBMIT_LIBRARY_PATH=/gtabigdata/soft/hadoop/lib/native
参数SPARK_WORKER_MEMORY决定在每一个Worker节点上可用的最大内存,增加这个数值可以在内存中缓存更多数据,但是一定要给Slave数据节点的操作系统和其他服务预留足够的内存空间。
需要配置SPARK_MASTER_IP和MASTER否则会造成Slave无法注册主机错误。
3) 配置slaves文件
vim slaves
同Hadoop的slaves配置文件一致
以sbt-0.13.9为例。
官网地址:
wget https://dl.bintray.com/sbt/native-packages/sbt/0.13.9/sbt-0.13.9.tgz
解压sbt-0.13.5.tgz
如:[hadoop@cmanagerjars]$ sudo tar -zxvf sbt-0.13.9.tgz
[hadoop@cmanager jars]$ sudo mv sbt /gtabigdata/soft/sbt
[hadoop@cmanager jars]$ sudo chown -R hadoop:hadoop/gtabigdata/soft/sbt/
mv sbt sbt.bk
[hadoop@cmanagerjars]$ cd /gtabigdata/soft/sbt
[hadoop@cmanagersbt]$ vim sbt
然后输入如下内容:
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/bin/sbt-launch.jar"$@"
保存,然后修改其权限:
chmod u + x sbt
[hadoop@cmanager sbt]$ chmod u+x sbt
[hadoop@cmanager sbt]$ cd /gtabigdata/soft/sbt/bin
[hadoop@cmanager bin]$ ./sbt sbt-version
此命令会默认下载一些依赖包,等到下载完成,可以看到如下信息,说明安装成功。
新建文件夹test,然后输入如下内容保存:
echo 'object Hi { def main(args:Array[String]) = println("Hello World!") }' > hw.scala
控制台输入sbt,进入sbt shell界面
输入run命令,查看结果:
1) Hadoop账户安装完成sbt后,在~目录会生成一个隐藏文件夹 .sbt,执行如下命令:
cd ~/.sbt/0.13
2) 创建plugins文件夹
mkdir plugins
3) vimplugins.sbt
添加如下内容:
addSbtPlugin("com.typesafe.sbteclipse"% "sbteclipse-plugin" % "4.0.0-RC1")
注意版本问题,请参考https://github.com/typesafehub/sbteclipse
4) 控制台输入sbt eclipse进行验证
期间会下载一些依赖包如下所示:
1)在eclipse工作目录workspace下新建build.sbt文件
输入如下:(输入一行注意留空行)
name :="hello"
version :="1.0"
scalaVersion :="2.10.4"
2)在每个项目跟目录下project/下添加plugins.sbt文件,内容如下:
addSbtPlugin("com.typesafe.sbteclipse"% "sbteclipse-plugin" % "4.0.0-RC1")
3)执行sbt eclipse进行验证
参考https://github.com/sbt/sbt-assembly/tree/0.11.2
只需要添加sbt-assembly的依赖在project/assembly.sbt
内容如下:
addSbtPlugin("com.eed3si9n"% "sbt-assembly" % "0.11.2")
然后就可以在sbt的shell界面输入assembly,查看是否可以进行打包
更多详细的配置请参考官方文档
Hive on Spark更加详细的配置请参考如下地址:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
如上所述,安装好Spark。
注意,spark安装的版本不要带有hive的jar包,在Spark的安装目录下可以使用如下命令检查:
./make-distribution.sh --name"hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4"
在yarn-site.xml中添加如下属性:
[hadoop@cmanager hadoop]$ vim/gtabigdata/soft/hadoop/etc/hadoop/yarn-site.xml
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
有如下几种方式将Spark的依赖加入Hive。
1.设置spark.home指向spark安装目录
hive> setspark.home=/gtabigdata/soft/spark
2.
在启动Hive CLI/HiveServer2之前,设置好spark环境变量
export SPARK_HOME=/gtabigdata/soft/spark.
3.设置spark-assembly jar 到Hive auxpath
hive--auxpath /gtabigdata/soft/spark
/lib/spark-assembly-*.jar
4.在当前用户会话中加入spark-assembly jar
hive>add jar
/gtabigdata/soft/spark
/lib/spark-assembly-*.jar;
5. 将spark-assembly jar添加到Hive安装目录/lib下
注意:方法3和方法4是不被推荐的,因为这2种方式在查询的时候,会导致spark跳过spark-assembly jar到每一个执行器去执行
这里我们使用5
hive> set hive.execution.engine=spark;
我认为也可以在
hive-site.xml
中进行配置。
3.4
为
Hive
配置
spark
应用配置
详细配置参数请参考:http://spark.apache.org/docs/latest/configuration.html.
也可以添加一个文件"spark-defaults.conf"用如下的这些属性添加到Hive的classpath目录下。或者在hive-site.xml中进行设置。
hive> set spark.master=<Spark Master URL>
hive> set spark.eventLog.enabled=true;
hive> set spark.eventLog.dir=<Spark event logfolder (must exist)>
hive> set spark.executor.memory=512m;
hive>setspark.serializer=org.apache.spark.serializer.KryoSerializer;
spark.executor.memory:
每个执行器处理可以使用的内存数量
spark.executor.cores
: 每个执行器CPU的个数
spark.yarn.executor.memoryOverhead:
The amount of off heap memory (inmegabytes) to be allocated per executor, when running Spark on Yarn. This ismemory that accounts for things like VM overheads, interned strings, othernative overheads, etc. In addition to the executor's memory, the container inwhich the executor is launched needs some extra memory for system processes,and this is what this overhead is for.
spark.executor.instances:每个应用被分配的执行器个数。.
spark.driver.memory:分配到Remote Spark Context (RSC)的内存数量.推荐 4GB.
spark.yarn.driver.memoryOverhead: 推荐400 (MB).
cp/gtabigdata/soft/hive/conf/hive-site.xml /gtabigdata/soft/spark/conf/
[hadoop@cmanagerconf]$ cp hive-site.xml /gtabigdata/soft/spark/conf/
vim /gtabigdata/soft/spark/conf/hive-site.xml
将scala,spark安装软件风别拷贝到slave上
[hadoop@cmanager soft]$ scp -r scala/hadoop@cslave5:/gtabigdata/soft/
[hadoop@cmanager soft]$ scp -r spark/hadoop@cslave1:/gtabigdata/soft/
在主节点启动spark
因为这里没有配置spark的环境变量所以我们直接金融spark/sbin目录才进行启动
cd /gtabigdata/soft/spark/sbin
./start-all.sh
启动完成查看master和slave上spark进程:
namenode上master就是spark进程标志
Datanode上的worker进程就是spark的进程标志
因为前边我们已经配置了hive on spark,我们验证一下是否成功
[hadoop@cmanager ~]$/gtabigdata/soft/spark/bin/spark-shell --master spark://cmanager:7077
开启的过程中发现报错了
这种应该是hive-site.xml文档的问题,进行修改
vim /gtabigdata/soft/spark/conf/hive-site.xml
将有报错的1s后的s拿掉只留下数字