一. 环境介绍
三台主机,主机名和ip分别为:
ubuntu1 10.3.19.171
ubuntu2 10.3.19.172
ubuntu3 10.3.19.173
三台主机的登录用户名是bigdata,home目录是/home/bigdata
现在三台主机上部署spark集群。ubuntu1作为master, ubuntu1 ubuntu2 ubuntu3均作为worker。
二.在一台主机上部署spark
bigdata@ubuntu1:~/download$ tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz
bigdata@ubuntu1:~/download$ mv spark-2.1.0-bin-hadoop2.7 ../run/
bigdata@ubuntu1:~/download$ cd ../run/
bigdata@ubuntu1:~/run$ ln -s spark-2.1.0-bin-hadoop2.7 spark
创建spark日志目录:
bigdata@ubuntu1:~/run/spark$ mkdir logs
三. 在一台主机上配置spark
a. 创建脚本文件spark-env.sh,并增加如下配置
bigdata@ubuntu1:~/run/spark/conf$ cp spark-env.sh.template spark-env.sh
bigdata@ubuntu1:~/run/spark/conf$ cat spark-env.sh
......
export JAVA_HOME=/home/bigdata/usr/jdk1.8.0_25
export HADOOP_HOME=/home/bigdata/run/hadoop
export SPARK_MASTER_IP=ubuntu1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MERMORY=1G
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_DAEMON_JAVA_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/bigdata/run/spark/logs -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms128m -XX:PermSize=128m -XX:MaxPermSize=256m"
#export SPARK_DAEMON_JAVA_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/bigdata/run/spark/logs -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256m"
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://ubuntu1:9000/sparkHistoryLogs -Dspark.yarn.historyServer.address=ubuntu1:7788 -Dspark.history.fs.updateInterval=10"
b. 创建配置文件spark-defaults.conf,并增加如下配置
bigdata@ubuntu1:~/run/spark/conf$ cp spark-defaults.conf.template spark-defaults.conf
bigdata@ubuntu1:~/run/spark/conf$ cat spark-defaults.conf
......
spark.master spark://ubuntu1:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://ubuntu1:9000/sparkHistoryLogs
spark.eventLog.compress true
spark.history.updateInterval 5
spark.history.ui.port 7777
spark.history.fs.logDirectory hdfs://ubuntu1:9000/sparkHistoryLogs
c. 创建slaves,并增加如下配置
bigdata@ubuntu1:~/run/spark/conf$ cp slaves.template slaves
bigdata@ubuntu3:~/run/spark/conf$ cat slaves
......
# A Spark Worker will be started on each of the machines listed below.
ubuntu1
ubuntu2
ubuntu3
至此,在一台主机上部署spark已完成。
四. 部署spark到主机ubuntu2 ubuntu3
为了部署方便,直接拷贝ubuntu1上的spark目录到ubuntu1 ubuntu2
bigdata@ubuntu1:~/run$ tar -zcvf spark-2.1.0-bin-hadoop2.7.tar.gz spark-2.1.0-bin-hadoop2.7/
bigdata@ubuntu1:~/run$ scp spark-2.1.0-bin-hadoop2.7.tar.gz ubuntu2:/home/bigdata/run
bigdata@ubuntu1:~/run$ scp spark-2.1.0-bin-hadoop2.7.tar.gz ubuntu3:/home/bigdata/run
至ubuntu2 ubuntu3解压
ubuntu2:
bigdata@ubuntu2:~/run$ tar -zxvf spark-2.1.0-bin-hadoop2.7.tar.gz
bigdata@ubuntu2:~/run$ ln -s spark-2.1.0-bin-hadoop2.7 spark
ubuntu3:
bigdata@ubuntu3:~/run$ tar -zxvf spark-2.1.0-bin-hadoop2.7.tar.gz
bigdata@ubuntu3:~/run$ ln -s spark-2.1.0-bin-hadoop2.7 spark
至此,spark已部署到三机主机上。
五. 运行spark
bigdata@ubuntu1:~/run/spark/sbin$ ./start-all.sh
在ubuntu1上查看spark进程,包含worker和master
bigdata@ubuntu1:~/run/spark/sbin$ jps -l
1520 org.apache.spark.deploy.worker.Worker
1433 org.apache.spark.deploy.master.Master
1627 sun.tools.jps.Jps
在ubuntu2 ubuntu3上查看spark进程,只有worker
bigdata@ubuntu2:~/run$ jps -l
1057 sun.tools.jps.Jps
961 org.apache.spark.deploy.worker.Worker
查看页面:
访问:http://10.3.19.171:8080/
查看job历史记录, 先启动hadoop:
bigdata@ubuntu1:~/run/hadoop/sbin$ ./start-all.sh
bigdata@ubuntu1:~/run/spark/sbin$ ./start-history-server.sh
访问:http://10.3.19.171:7777/
六. 运行自己的JavaWordCount程序
获取程序源码通过:
使用mvn package命令编译得到jar包:mysparkdemo-0.0.1.jar
将mysparkdemo-0.0.1.jar包上传到目录 /home/bigdata/run/spark
至此执行程序已准备好。
创建一文本文件,程序会统计此文本中各单词出现的次数。
bigdata@ubuntu1:~/run/spark$ touch hello.txt
bigdata@ubuntu1:~/run/spark$ cat LICENSE > hello.txt
将hello.txt文件拷贝到hdfs上
bigdata@ubuntu1:~/run/spark$ hdfs dfs -mkdir -p /user/bigdata
bigdata@ubuntu1:~/run/spark$ hdfs dfs -copyFromLocal hello.txt /user/bigdata/hello.txt
bigdata@ubuntu1:~/run/spark$ hdfs dfs -cat /user/bigdata/hello.txt
执各程序命令:
bigdata@ubuntu1:~/run/spark/bin$ ./spark-submit --class com.ai.apark.demo.JavaWordCount --master spark://ubuntu1:7077 ../mysparkdemo-0.0.1.jar hello.txt