Spark集群安装
1. 确保服务器已安装jdk
若没有安装,请参照相应的文档安装。本次安装使用的jdk版本:jdk1.6.0_31
2. 安装 Scala 2.11.2
Spark 1.2.1 依赖 Scala 2.11.2, 我们必须要安装Scala 2.11.2.
上传scala-2.11.2.tgz到服务器, 并保存到home目录.
1、解压scala压缩包:
$ tar -zxf scala-2.11.2.tgz
2、root权限将压缩包传到/usr/lib目录下:
$ sudo mv scala-2.11.2 /usr/lib
3、编辑/etc/profile文件,
$ sudo vim /etc/profile 增加系统参数:
export SCALA_HOME=/usr/lib/scala-2.11.2
export PATH=$PATH:$SCALA_HOME/bin:$JAVA_HOME/bin
export JAVA_HOME=/usr/jdk/jdk1.6.0_31
4、source /etc/profile文件,使环境变量生效;
$ source /etc/profile
5、测试下scala安装是否成功
$ scala -version
若有如下信息展示,表示scala安装成功:
Scala code runner version 2.11.2 -- Copyright 2002-2013, LAMP/EPFL
3. 安装spark
3.1在master上安装并配置Spark
上传spark-1.2.1-bin-hadoop2.4.tgz至服务器,解压:
$ tar -zxf spark-1.2.1-bin-hadoop2.4.tgz
创建一个spark目录,将解压后的目录上传到spark目录中:
$ mkdir /home/spark
$ mv spark-1.2.1-bin-hadoop2.4 /home/spark
设置环境变量:
$ vim /home/spark/.bash_profile
增加如下参数:
export SPARK_HOME=/home/spark/spark-1.2.1-bin-hadoop2.4
export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export
PATH=$PATH:${SPARK_HOME}/bin:${SCALA_HOME}/bin:${JAVA_HOME}/bin
保存后退出
#source下.bash_profile。
$ source /home/spark/.bash_profile
把spark-env.sh.template重命名成spark-env.sh
$ cd /home/spark/spark-1.2.1-bin-hadoop2.4/conf
$ mv spark-env.sh.template spark-env.sh
在spark-env.sh中增加如下参数:
$ vim spark-env.sh
# 插入如下参数:
export SCALA_HOME=/usr/lib/scala-2.11.2 --scala安装目录
export JAVA_HOME=/usr/jdk/jdk1.6.0_31--jdk目录
export SPARK_MASTER_IP=192.168.150.128
export SPARK_WORKER_MEMORY=2g
export HADOOP_HOME=/usr/lib/Hadoop --指定hadoop的安装目录
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop/ --指定yarn配置文件目录
export
SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/lib/hive/lib/mysql-connector-java-5.1.31-bin.jar --指定mysql的jar。为sparkSQL使用
其中:SPARK_MASTER_IP为master的ip,SPARK_WORKER_MEMORY为worker
节点占用的内存
# 保存退出
在/conf/slaves文件中添加Spark worker的hostname, 一行一个。
$ vim slaves
yudong1
yudong2
yudong3
# 保存退出
将hive的配置文件:hive-site.xml复制到spark的conf目录下;
Spark的详细配置文件为spark-defaults.conf。可以通过该文件更改spark的默认配置;
3.2在所有worker上安装并配置Spark
在其他worker节点安装scala和spark,配置参数同上面;
注意,三台机器spark所在目录必须一致,因为master会登陆到worker上执行命
令,master认为worker的spark路径与自己一样。
3.3 启动 Spark 集群
在master上执行
$ cd /home/spark/spark-1.2.1-bin-hadoop2.4/sbin
$ ./start-all.sh
打印出如下信息:
starting org.apache.spark.deploy.master.Master, logging to
/home/spark/spark-1.2.1-bin-hadoop2.4/sbin/../logs/spark-root-org.apache.spark.deploy.master.Master-1-yudong1.out
yudong3: starting org.apache.spark.deploy.worker.Worker, logging to /home/spark/spark-1.2.1-bin-hadoop2.4/sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker-1-yudong3.out
yudong2: starting org.apache.spark.deploy.worker.Worker, logging to /home/spark/spark-1.2.1-bin-hadoop2.4/sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker-1-yudong2.out
yudong1: starting org.apache.spark.deploy.worker.Worker, logging to /home/spark/spark-1.2.1-bin-hadoop2.4/sbin/../logs/spark-root-org.apache.spark
.deploy.worker.Worker-1-yudong1.out
查看进程是否正常:
$ jps
2735 AmbariServer
21060 Jps
4766 QuorumPeerMain
20784 Master
2879 NodeManager
20928 Worker
30 NameNode浏览master的web UI(默认http://localhost:8080). 若8080端口被占用,会自动切换成8081端口,可以在SPARK_HOME/logs下的
spark-root-org.apache.spark.deploy.master.Master-1-yudong1.out日志中查看目前使用的端口信息。页面如下所示:
从上图可以看到所有的worker节点,以及它们的CPU个数和内存等信息。当有应用在执行时,可以在Running Application下查看到,当应用执行成功后,可以在Completed Application栏查看到。
3.4 进入spark-shell工作台
cd $SPARK_HOME/bin
执行如下命令:# spark-shell,系统会打印出如下日志:
出现上图所示的scala>,表示spark集群安装成功。
4.spark on yarn
Spark在YARN中有yarn-cluster和yarn-client两种运行模式。
使用Spark on yarn,要确保环境变量HADOOP_CONF_DIR或YARN_CONF_DIR已经设置;
在YARN集群中运行Spark应用程序的命令:
SPARK_JAR= --jar --class --args --num-workers --master-class --master-memory --worker-memory --worker-cores --name --queue --addJars --files --archives 例如: 1. SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \\ 2. ./spark-class org.apache.spark.deploy.yarn.Client \\ 3. --jar examples/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \\ 4. --class org.apache.spark.examples.SparkPi \\ 5. --args yarn-standalone \\ 6. --num-workers 3 \\ 7. --master-memory 2g \\ 8. --worker-memory 2g \\ 9. --worker-cores 1 在yarn集群上运行spark sql命令: ./spark-sql -- master yarn< MASTER_URL> -- deploy-mode client -- jars < JARS location> -- conf < PROP=VALUE> -- executor-memory< Memory per executor> --executor-cores < cores per executor > -- driver-memory < Memory for driver > -d,--define commands. e.g. -d A=B or --define A=B --database -e -f -h --hiveconf --hivevar commands. e.g. --hivevar A=B -i -p -S,--silent Silent mode in interactive shell -v,--verbose Verbose mode (echo executed SQL to the console) 例如: spark-sql --master yarn --deploy-mode client --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.enabled=true --executor-memory 1g --executor-cores 1 --driver-memory 2G --jars /home/spark/spark-1.2.1-bin-hadoop2.4/lib/datanucleus-api-jdo-3.2.6.jar \"select count(*) from vw_user_call;\" -e 在yarn的监控页面(http://ip:8088),可以查看spark on yarn的application运行情况: 5. 停止 Spark 集群 $ cd $SPARK_HOME/sbin $ ./stop-all.sh 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务