下面以ubuntu系统的两个计算机节点为例,介绍配置方法。
一、准备工作
笔者各软件包的使用版本为
spark:1.4.0
hadoop:2.7.0
jdk:Oracle JDK 7
操作系统: ubuntu, 14.04
两台计算机的host name分别为spark-cluster-1和spark-cluster-2 。
(1)按照上文所述,去各个软件的官网下载对应版本的软件包。下载好后,使用scp命令拷贝到服务器上(或者你想配置在本机上也可以)。
(2)在/etc/hosts文件里,添加IP地址和对应的hostname,例如:
192.168.124.38 spark-cluster-1
192.168.124.37 spark-cluster-2
(3)在机器之间,配置免密码登陆ssh。方法是在~/.ssh文件夹下,使用ssh-keygen, 将会生成两个文件:id_rsa id_rsa.pub。对方机器的~/.ssh/authorized_keys 文件里加入id_rsa.pub的字符串后,我方可以用ssh -i id_rsa name@ip 来登录对方机器。
二、配置JAVA
首先,我们来配置java。
(1)将java包jdk-7u79-linux-x64.gz解压到自己喜欢的目录,如/usr/lib/java
(2)在home目录下的.bashrc文件中,配置环境变量。
export JAVA_HOME=/usr/lib/java/jdk1.7.0_79
export JRE_HOME=/usr/lib/java/jdk1.7.0_79/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
(3)打一下java命令,运行正常说明配置完成。
三、配置HDFS
下面,配置Hadoop File System。
(1)把hadoop软件包解压在自己喜欢的目录,比如home下
(2)进入/hadoop-2.7.0/etc/hadoop下。
(3)配置hadoop-env.sh里面的JAVA_HOME,与上文保持一致。
(4)配置slaves文件
删除原内容,添加slave机器的host name
spark-cluster-2
(5)配置core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://spark-cluster-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/${user.name}/hadoop_data/${user.name}</value>
</property>
</configuration>
(6)配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
(7)配置mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>spark-cluster-1:9001</value>
</property>
</configuration>
(8) 执行完前面步骤之后,执行文中第五部分“五、集群间复制”。然后去bin目录下,执行./hdfs namenode -format
(9)sbin目录下,执行./start-dfs.sh来启动HDFS服务,执行后执行jps命令,看看name node,data node,secondary name node三个是否都起来
(10)上一步成功后,基本上就算是配置成功了!现在可以去bin目录下,执行几个基本命令玩玩,比如./hdfs dfs -ls /
四、配置Spark
下面开始配置Spark。
(1)将spark安装包解压在你喜欢的目录,比如home下。
(2)在conf文件夹下,配置spark-env.sh文件
export JAVA_HOME=/usr/lib/java/jdk1.7.0_79
export SPARK_MASTER_IP=192.168.124.38
export HADOOP_CONF_DIR=/home/ubuntu/hadoop-2.7.0/etc/hadoop
(3)在conf文件夹下,配置slaves文件
删除原内容,添加slave机器的host name
spark-cluster-2
(4)执行完前面步骤之后,执行文中第五部分“五、集群间复制”。然后在sbin下执行./start-all.sh,启动Spark服务,执行后执行jps命令,看看master,worker是否都起来
(5)在bin下面执行spark-submit, 后面跟一个python程序或者scala程序,执行没问题说明配置成功!
五、集群间复制
上面四步只是配好了一台机器,如何配置多个节点的集群呢?
一种方法是,把上文这些配好的文件目录,一股脑儿全部scp复制到其他想要配的机器上。
另一种方法是,如果各个计算机节点是你可以随意创建删除的虚拟机的话,配置好一台机器上,马上snapshot,然后用这个snapshot起若干台机器就可以了。