Spark的资料非常多,但是完整介绍Spark安装的资料却非常少见,本文就是记录一下安装配置Spark2.1.0的过程,希望能对大家有所帮助。
首先第一步是安装JDK,我们最好下载JDK8版本。由于Oracle上下载JDK需要同意协议条款,需要在浏览器上下载才行。而我们云服务器,通常都没有图形界面,我们可以在本机上下载下来,传到服务器上去,但是这个太麻烦了。在这里给大家介绍一个变通的方法。在Windows机器上,进入JDK下载界面,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择同意条款,浏览器就会开始下载JDK8。这时我们可以看到下载地址,把这个下载地址复制下来,用SSH登录到云服务器,运行如下命令:
wget -c http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz?AuthParam=1489462060_a8e8967d20cb53503d8c97ce4496bdf0
这时就可以将JDK下载到云服务器上去了。将tar.gz文件解压:
tar -xzvf jdk8.tar.gz
这时就会在当前目录下生成jdk1.8.0_121目录。
将其拷贝到系统目录下:mv jdk1.8.0_121 /usr/lib/jdk
修改~/.bashrc文件:sudo vim ~/.bashrc,在最前面添加如下内容:
export JAVA_HOME=/usr/lib/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
运行:source ~/.bashrc使其生效,然后运行:java -version,如果打出如下内容,则证明安装成功:
下面我们来安装Scala,本来安装Scala应该是一件很简单的事情,但是我们在云服务器上没有图形界面,没法启动浏览器,要想安装Scala就不容易了。还好有其他网站为我们想到了这一点,我们可以到如下地址下载Scala。我们首先到http://www.scala-lang.org,查看当前的最新版本,比如在我查看时为2.12.1,则运行如下命令:
wget http://downloads.typesafe.com/scala/2.12.1/scala-2.12.1.tgz
下载完成后解压该文件:tar -xzvf scala-2.12.1.tgz,会生成scala-2.12.1目录。
编辑环境文件:sudo vim ~/.bashrc,添加如下内容:
export SCALA_HOME=/root/dev/java/scala-2.12.1
export PATH=${SCALA_HOME}/bin:$PATH
在命令行运行:scala -version,如果打印出如下内容就证明安装成功了:
我们还需要安装Python环境,为了简单起见,我们直接安装Python科学计算库Anaconda,这个软件会直接替我们把所有的Python科学计算库全部安装好,使用起来非常方便,我们首先下载安装文件:
wget https://repo.continuum.io/archive/Anaconda3-4.3.1-Linux-x86_64.sh
下载完成后,利用chmod 777 Anaconda3-4.3.1-Linux-x86_64.sh,然后运行这个程序,依照提示安装即可。一定要将Anaconda加入到PATH中。安装完成后,我们可以通过运行python来看提示中的版本,如果显示是3.6的,就证明我们安装成功了。
我们知道,Spark依赖于Hadoop的运行,因为我们需要Hadoop的HDFS系统和集群管理系统YARN,所以我们在安装Spark之前,就需要先安装Hadoop。
先下载Hadoop安装文件,这里下载的是2.7.3版本:
wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
先解压文件:tar -xzvf hadoop-2.7.3.tar.gz
然后添加Hadoop相关的配置信息,编辑:sudo vim ~/.bashrc,添加如下内容:
# hadoop required
export HADOOP_HOME=/root/dev/java/hadoop-2.7.3
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
运行使其生效:source ~/.bashrc
查看$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件中,有关于$JAVA_HOME的正确定义。如果SSH服务不是监听在22端口的话,添加如下行:export HADOOP_SSH_OPTS="-p 18921"。
编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件,加入如下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://your_server_ip:9000</value>
</property>
</configuration>
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
确保可以不用密码登录:ssh -p 22000 localhost,这里我的SSH服务启动在22000端口,而不是默认的22端口。如果不能登录,则运行如下脚本:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
下面我们进入到$HADOOP_HOME目录:
bin/hdfs namenode -format
sbin/start-dfs.sh
我们通过浏览器访问:http://your_server_ip:50070可以看到HDFS namenode的管理界面,就证明这一步已经安装成功了。
下面建立MapReduce的工作目录,即创建HDFS上的目录:
bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/yantao
# 将文本文件拷贝到HDFS系统中
bin/hdfs dfs -mkdir /user/yantao/input
bin/hdfs dfs -put etc/hadoop/*.xml /user/yantao/input
# 运行实例
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /user/yantao/input /user/yantao/output 'dfs[a-z. ]+'
# 将结果文件取回本地
bin/hdfs dfs -get /user/yantao/output output
# 直接在HDFS中查看
bin/hdfs dfs -cat /user/yantao/output/*
下面我们来配置YARN集群。我们首先配置MapReduce,编辑vim etc/hadoop/mapred-site.xml,内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
编辑vim etc/hadoop/yarn-site.xml,添加或修改如下内容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
并将文件中所有Mater:修改为本机IP地址。
完成上述操作后,我们可以启动yarn:sbin/start-yarn.sh
此时访问nodemanager界面:http://your_server_ip:8042
访问resourcemanager界面:http://your_server_ip:8088
至此我们就完成了Hadoop伪分布式模式的安装。下面就可以正式进入Spark的安装了。
首先下载Spark安装文件,由于我们之前安装的是hadoop 2.7.3,所以我们需要下载绑定hadoop 2.7以上版本的Spark:
wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz
然后解压:tar -xzvf spark-2.1.0-bin-hadoop2.7.tgz
进入spark目录,拷贝Spark环境模板文件为环境文件:cp conf/spark-env.sh.template conf/spark-env.sh,然后添加如下内容:
export SCALA_HOME=/root/dev/java/scala-2.12.1
export SPARK_WORKER_MEMORY=1g
export SPARK_MASTER_IP=your_server_ip
export MASTER=spark://your_server_ip:7077
# 如果SSH端口不是缺省的22时加入下面行
export SPARK_SSH_OPTS="-p 22000"
生成Slave文件:cp conf/slaves.template conf/slaves。在这个文件中加入Worker节点的名称,由于这里是伪分布式部署,所以只需要有localhost就可以了。
我们进入到$HADOOP_HOME目录,启动HADOOP:
./sbin/start-dfs.sh
./sbin/start-yarn.sh
然后进入$SPARK_HOME目录,启动Spark:./sbin/start-all.sh
至此Spark 2.1.0就已经完全安装完成了。我们可以试验一下安装是否正确,进入到$SPARK_HOME目录,运行求PI的实例:
./bin/run-example org.apache.spark.examples.SparkPi
如果在输出中可以获得类似如下结果,就可以证明是正确的了:
我们还可以尝试启动Spark-shell:
./bin/spark-shell
如果出现如下图所示界面,则证明是成功的:
我们可以通过:quit业退出这个界面。