一、Spark集群部署
1、软件版本
OS版本:Ubuntu 14.04
Hadoop版本:Hadoop 2.6.0
JDK版本:Jdk1.8.0_40
Scala版本:scala-2.11.7.tgz
Spark版本:spark-1.5.0-bin-hadoop2.6.tgz
注:Spark程序包版本要根据下载及安装的hadoop版本进行下载和安装,Spark下载官网地址http://spark.apache.org/downloads.html;Scala官网地址http://www.scala-lang.org/,根据Spark官方规定的Scala版本进行下载和安装。
2、集群节点
Spark部署在安装有hadoop的Ubuntu系统集群中,在Ubuntu14.04中安装Spark,需要预先安装JDK、Scala等所需依赖。Spark只是计算框架,需要预先在集群中搭建好存储数据的持久化层(HDFS/Hive等),所以也需要预先安装Hadoop。
集群:1台master、10台salve计算节点,2台client。
主机名(节点)
IP地址
内存(GB)
VCPU
(个)硬盘(GB)
节点运行进程
Master
192.168.1.60
4
4
100
ResourceManager、NameNode、SecondaryNameNode、
Master
Node1
192.168.1.61
4
4
100
NodeManager、DataNode、Worker
Node2
192.168.1.62
4
4
100
NodeManager、DataNode、Worker
Node3
192.168.1.63
4
4
100
NodeManager、DataNode、Worker
Node4
192.168.1.64
4
4
100
NodeManager、DataNode、Worker
Node5
192.168.1.65
4
4
100
NodeManager、DataNode、Worker
Node6
192.168.1.66
4
4
100
NodeManager、DataNode、Worker
Node7
192.168.1.67
4
4
100
NodeManager、DataNode、Worker
Node8
192.168.1.68
4
4
100
NodeManager、DataNode、Worker
Node9
192.168.1.69
4
4
100
NodeManager、DataNode、Worker
Node10
192.168.1.70
4
4
100
NodeManager、DataNode、Worker
Client
192.168.1.80
4
4
100
Client_b
192.168.1.81
4
4
100
3、安装JDK
在服务器上搭建一台安装Ubuntu14.04的虚拟机,安装完JDK和Scala之后,克隆虚拟机13台。
(1)下载JDK
下载jdk1.8.0_40版本,官网地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
(2)下载后解压,解压目录/home/hadoop/jdk1.8.0_40;
# tar–xzvf jdk-8u40-linux-x64.tar
(3)配置环境变量,root权限下在/etc/profile文件下增加以下代码:
(4)使profile文件更新生效
#source/etc/profile
4、安装Scala
(1)下载scala-2.11.7.tgz
(2)解压至目录/home/hadoop/scala-2.11.7
# tar –xzvf scala-2.11.7.tgz
(3)配置环境变量,root权限下在/etc/profile文件下增加以下代码:
(4)使profile文件更新生效
# source/etc/profile
注:安装完JDK和Scala之后,克隆出另外12台虚拟机。
5、网络配置
服务器地址:192.168.0.80用户名:administrator密码:********
在服务器上搭建安装Ubuntu14.04的虚拟机,克隆12台。分别配置13台主机的网络地址。
IP地址:192.168.1.X
子网掩码:255.255.0.0网关:192.168.0.1
DNS:192.168.0.1
注:网络配置IPv4选择->Manual(手动),为每台主机配置静态IP地址(详细IP见2中表格)
6、修改主机名hostname
修改每台(13台)主机的hostname,分别为master、client、client_b、node1~node1。
命令:hostname//查看主机名
sudo vi /etc/hostname//打开hostname文件(root权限下可修改)
7、配置hosts文件
修改集群中所有节点的/etc/hosts文件,该文件是集群中所有节点的IP和主机名hostname的对应关系。
命令:sudo gedit/etc/hosts//打开该文件
添加:192.168.1.60master
192.168.1.61 node1
192.168.1.62 node2
……
192.168.1.70 node10
192.168.1.80 client
192.168.1.81 client_b
注:修改每个节点的hosts文件,且确保每个节点的hosts文件相同
8、配置SSH免密码登录
Spark的Master节点向Worker节点发命令需要通过ssh进行发送,用户不希望Master每发送一次命令就输入一次密码,因此需要实现Master无密码登录到所有Worker。这需要在Master上生成一个密钥对,包括一个公钥和一个私钥,然后将公钥复制到Worker上。
当Master通过ssh连接Worker时,Worker就会生成一个随机数并用Master的公钥对随机数进行加密,发送给Worker。Master收到加密数之后再用私钥进行解密,并将解密数回传给Worker,Worker确认解密数无误之后,允许Master进行连接。这就是一个公钥认证过程,其间不需要用户手工输入密码,主要过程是将Master节点公钥复制到Worker节点上。
(1)在Master节点上,生产密钥:
# ssh-keygen -tdsa -P '' -f ~/.ssh/id_dsa
此时,在~/.ssh/目录下生成id_dsa.pub文件,查看命令:
# ls –a~/.ssh
(2)复制Master的id_dsa.pub文件到其他slave节点、client、client_b
将master结点上的~/.ssh/id_dsa.pub的内容,添加到slave结点的~/.ssh/authorized_keys这个文件中。命令如下:
scp~/.ssh/id_dsa.pub hadoop@node1:~/.ssh/authorized_keys//添加到node1节点
scp~/.ssh/id_dsa.pub hadoop@node2:~/.ssh/authorized_keys//添加到node2节点
……
scp~/.ssh/id_dsa.pub hadoop@node10:~/.ssh/authorized_keys//添加到node10节点
scp~/.ssh/id_dsa.pub hadoop@client:~/.ssh/authorized_keys//添加到client节点
scp~/.ssh/id_dsa.pub hadoop@client_b:~/.ssh/authorized_keys//添加到client_b节点
(3)验证是否可以无密码登陆
在master结点上使用ssh连接其他slave结点,命令如下:
# ssh node1
……
# ssh node10
# ssh client
# ssh client_b
9、Hadoop安装与配置
(1)解压安装hadoop-2.6.0
将下载后的hadoop-2.6.0.tar.gz(官网地址http://hadoop.apache.org/)解压到master节点的/home/hadoop目录下,配置好master节点的hadoop后复制到其他节点即可。
解压命令如下:
# tar xzfvhadoop-2.6.0.tar.gz
复制命令如下:
scp –r /home/hadoop/hadoop-2.6.0 hadoop@node1:/home/hadoop///复制到node1
scp -r /home/hadoop/hadoop-2.6.0 hadoop@node2:/home/hadoop///复制到node2
……
scp -r /home/hadoop/hadoop-2.6.0 hadoop@node10:/home/hadoop///复制到node10
scp -r /home/hadoop/hadoop-2.6.0 hadoop@client:/home/hadoop///复制到client
scp -r /home/hadoop/hadoop-2.6.0 hadoop@client_b:/home/hadoop///复制到client_b
注:配置完之后再执行复制命令,且集群中所有的hadoop都安装在同一目录下。
(2)配置Hadoop环境变量
在/etc/profile文件中,添加以下代码:
使profile文件更新生效:# source /etc/profile
(3)编辑Hadoop配置文件
hadoop配置文件都在hadoop-2.6.0/etc目录下,配置时需要修改7个配置文件,包括hadoop-env.sh、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、masters和slaves文件。
①修改hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_40
②修改core-site.xml
注:修改属性,以name和value的关系对出现。
③修改hdfs-site.xml
注:在hadoop-2.6.0目录下,默认不存在dfs/name及dfs/data文件夹,需要新建。
命令如下:
cd/home/hadoop/hadoop-2.6.0/
mkdir dfs
cd dfs/
mkdir name
mkdir data
④修改yarn-site.xml
⑤修改mapred-site.xml
⑥配置masters文件
⑦配置slaves文件
注:slaves文件仅包括集群中作为计算节点的主机名(这里不包括client和client_b)。
配置完hadoop后,将hadoop2.6.0的所有文件通过scp命令复制到其他节点。
(4)启动和关闭hadoop
�格式化hdfs文件系统的namenode
# cd hadoop-2.6.0///进入hadoop-2.6.0目录
# bin/hdfs namenode -format//格式化
②启动hadoop集群
# sbin/start-dfs.sh//启动hdfs(一次性启动namenode和所有datanode)
# sbin/start-yarn.sh//启动yarn(一次性启动RM和所有NM)
通过jps命令查看是否启动成功。
③关闭hadoop集群
#sbin/stop-all.sh
10、安装spark
(1)下载spark-1.5.0-bin-hadoop2.6.tgz
官网地址http://spark.apache.org/downloads.html
(2)解压至目录/home/hadoop/spark-1.5.0-bin-hadoop2.6
# tar–xzvf spark-1.5.0-bin-hadoop2.6.tgz
(3)配置conf/spark-env.sh文件
参数SPARK_WORKER_MEMORY表示在每一个Worker节点上可用的最大内存(总内存4g,增加这个数值可以在内存中缓存更多数据,但是要给Slave的OS和其他服务预留出足够的内存,故这里设置为3g)
注:其他更复杂的配置参考官网的配置页面,地址为http://spark.apache.org/docs/latest/configuration.html
(4)配置slaves文件
进入spark安装目录,编辑/conf/slaves文件
注:将配置好后的spark所有文件,通过scp命令复制到其他节点相同目录下。
# scp –r /home/hadoop/spark-1.5.0-bin-hadoop2.6 hadoop@node*:/home/hadoop
11、启动集群
(1)启动hadoop
进入hadoop2.6.0安装目录,执行#sbin/start-all.sh
(2)启动spark
进入spark安装目录,执行#
sbin/start-all.sh(或者执行#sbin/start-master.sh、# sbin)
(3)检测是否安装成功
通过jps命令,查看启动的进程。master节点启动的进程有:NameNode、SecondaryNameNode、ResourceManager、Master;slaves节点启动的进程有:DataNode、NodeManager、Worker。
至此,spark集群安装完成。
二、Spark示例程序测试
部署完Spark集群之后,以Spark项目中自带的SparkPi(计算)程序为例,测试Spark集群的性能。
(1)启动hadoop、启动spark,进入Spark安装目录,执行:
# bin/run-example org.apache.spark.examples.SparkPi
(2)通过Web UI查看集群状态
浏览器访问http://masterIP:8080,观察Spark集群的整个状态是否正常,如下图所示。masterIP配置为用户的Spark集群的主节点IP,这里为http://192.168.1.60:8080。
网友评论