环境:jdk1.8.0_111,scala-2.12.1,spark-2.1.0,Hive-2.1.1,hadoop-2.7.3
一、master安装
1.下载spark-2.1.0-bin-hadoop2.7.tgz并解压:
$tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz
$sudo mv spark-2.1.0-bin-hadoop2.7 spark-2.1.0-bin
$sudo spark-2.1.0-bin /usr/local
2.配置环境变量
$sudo gedit ~/.bashrc
添加以下内容
export SPARK_HOME=/usr/local/spark-2.1.0-bin
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
3.SPARK配置
进入conf目录当中
$cd $SPARK_HOME/conf
复制spark-env.sh.template 到 spark-env.sh。
$sudo cp spark-env.sh.template spark-env.sh
编辑 spark-env.sh,在其中添加以下配置信息:
export SCALA_HOME=/usr/local/scala-
2.12
.1
export JAVA_HOME=/usr/local/jdk1.8
.0_111
export SPARK_MASTER_IP=
192.168
.8.3
export SPARK_WORKER_MEMORY=512m
export HADOOP_CONF_DIR=/usr/local/hadoop
/etc/hadoop
SPARK_WORKER_MEMORY 指定的是 Worker 节点能够分配给 Executors 的最大内存大小;
将 slaves.template 拷贝到 slaves, 编辑其内容为:
master
slave1
slave2
master 既是 Master 节点又是 Worker 节点。如果集群是单节点伪分布,则只在slaves中填写master,master应该是自己的主机名字。比如我的是Desktop1,则编辑的内容应该是:
Desktop1
slave1
slave2
二、slave安装
slave1与slave2都参照master的安装
三、sparksql on hive配置
1.在master机器上的$SPARK_HOME/conf目录下面新建hive-site.xml,并添加以下内容:
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
<description>thrift URI for the remote metastore.Used by metastore client to connect to remote metastore. </description>
</property>
</configuration>
因为用sparksql操作hive实际上是把hive 当做数据仓库。数据仓库肯定有元数据和数据本身。要访问真正的数据就要访问他的元数据。所以只需要配置hive.metastore.uris 即可。(不需在每台机器上配置)
2.将$HIVE_HOME/lib中的mysql驱动(mysql-connector-java-x.y.z.jar)拷贝到$SPARK_HOME/lib目录下。
3.启动metastore
$hive --service metastore &
4.启动spark-shell
5.启动spark-sql
在启动4与5之前应先启动hadoop。如果4,5都能正常启动,说明配置成功了。
6.执行start-master.sh
如果执行$jps命令,看到在进程中多了一个master进程,则说明启动成功。
zhang@Desktop1:~$ start-master.sh
starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-2.1.0-bin/logs/spark-zhangchao-org.apache.spark.deploy.master.Master-1-Desktop1.out
zhang@Desktop1:~$ jps
2932 DataNode
12677 Jps
3320 SecondaryNameNode
2809 NameNode
12633 Master
11821 RunJar
7.执行start-slaves.sh
如果执行$jps命令,看到在进程中多了一个worker进程,则说明启动成功。
<strong>zhang@Desktop1:~$ start-slaves.sh
Desktop1: Warning: Permanently added 'desktop1' (ECDSA) to the list of known hosts.
Desktop1: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-2.1.0-bin/logs/spark-zhangchao-org.apache.spark.deploy.worker.Worker-1-Desktop1.out
zhang@Desktop1:~$ jps
2932 DataNode
3320 SecondaryNameNode
2809 NameNode
12633 Master
12794 Jps
12763 Worker
11821 RunJar</strong>
在浏览器中访问Master的8080端口,可以看到各个节点的状态