搭建Spark分布式集群

来源:互联网 发布:php留言板代码 编辑:程序博客网 时间:2024/05/22 04:24

搭建Spark分布式集群

环境:

  • Host OS: OS X Yosemite 10.10.2
  • VM OS: ubuntu-14.04.3-server
  • Java: jre-7u7-linux-x64
  • Hadoop: hadoop-2.6.1
  • Spark: spark-1.5.0-bin-hadoop2.6

1. 创建VM

在Virtualbox上新建一个Ubuntu 14.04 Server VM。网络设置为Bridged Adaptor,这样每一个VM会被路由器分配一个独立IP,从而VM之间可以互相交互,宿主与VM之间也可以互相交互。

将第一个创建好的VM取名为spark1.

virtualbox1

virtualbox2

下面在spark1上安装所需的dependencies。

2. 安装Dependencies

安装Java

由于在墙内下载jdk特别慢,这里到一个找到的链接人工下载,然后scp到VM。
http://download.csdn.net/detail/aqtata/8599477

gzip -d jdk-8u45-linux-x64.tar.gztar -xf jdk-8u45-linux-x64.tar

安装Scala

wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgzgzip -d scala-2.11.7.tgztar -xf scala-2.11.7.tarmv scala-2.11.7 /usr/local/opt/scala-2.11.7

安装Hadoop

wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gzgzip -d hadoop-2.6.0.tar.gztar -xf hadoop-2.6.0.tar.gz

安装Spark

wget http://mirrors.cnnic.cn/apache/spark/spark-1.5.0/spark-1.5.0-bin-hadoop2.6.tgzgzip -d spark-1.5.0-bin-hadoop2.6.tgztar -xf spark-1.5.0-bin-hadoop2.6.tar

3. 配置VM集群

现在配置3个node的集群。

复制VM

在spark1上安装完dependencies之后,再将其clone为两个相同的VM,取名为spark2,spark3.

virtualbox3

配置IP

用ifconfig查看eth0的IP地址

spark1: 192.168.1.102spark2: 192.168.1.103spark3: 192.168.1.104

在宿主主机上修改/etc/hosts,添加

# spark cluster configuration192.168.1.102   master192.168.1.103   slave1192.168.1.104   slave2

这样,就将spark1配置为master,spark2和spark3配置为spark1的slaves。

同时,需要将这个设置拷贝到master的/etc/hosts上

scp /etc/hosts master:/etc/hosts

注意:
因为ubuntu server默认的hostname事bogon,这样在之后一系列初始化时(如Hadoop启动HDFS格式化,Spark的slave启动)会出现Unknown hostname error,这时需要将/etc/hostname中的bogon修改为对应的名称(master, slave1, slave2)

配置SSH

在master上输入以下命令。

ssh-keygencd ~/.sshcp id_rsa.pub authorized_keyscp id_rsa.pub slave1_id_rsa.pubcp id_rsa.pub slave2_id_rsa.pubscp authorized_keys slave1:~/.sshscp authorized_keys slave2:~/.ssh

配置Hadoop

Hadoop的部署相对来说比较繁琐,可以直接跳过这一步如果不打算采用HDFS。

cd /home/yeqing/hadoop-2.6.0/etc/hadoop/hadoop-env.shexport JAVA_HOME=/home/yeqing/jdk1.8.0_45

core-site.xml

<configuration>    <property>        <name>fs.default.name</name>        <value>hdfs://master:9000</value>    </property>    <property>        <name>hadoop.tmp.dir</name>        <value>/tmp</value>        </value>    </property></configuration>

hdfs-site.xml

<configuration>    <property>        <name>dfs.name.dir</name>        <value>/home/yeqing/hadoop/name/name1,/home/yeqing/hadoop/name/name2</value>    </property>    <property>        <name>dfs.data.dir</name>        <value>/home/yeqing/hadoop/data/data1,/home/yeqing/hadoop/data/data2</value>    </property>    <property>        <name>dfs.replication</name>        <value>3</value>    </property>    <property>        <name>dfs.permissions</name>        <value>false</value>    </property></configuration>

注:dfs.name.dir、dfs.data.dir目录不能人为创建,由Hadoop自动创建。

其中,
(1)dfs.name.dir是执行hadoop namenode -format时创建。
(2)dfs.data.dir是执行start-all.sh时创建。

mapred-site.xml

<configuration>    <property>        <name>mapred.job.tracker</name>        <value>master:9001</value>    </property>    <property>        <name>mapred.local.dir</name>        <value>/home/yeqing/hadoop/mapred/mapred1,/home/yeqing/hadoop/mapred/mapred2</value>    </property></configuration>

masters文件

master

slaves文件

slave1slave2

配置Spark

cd /home/yeqing/spark-1.5.0-bin-hadoop2.6/confcp spark-env.sh.template spark-env.sh

修改spark-env.sh,添加

export JAVA_HOME=/home/yeqing/jdk1.8.0_45export SPARK_HOME=/home/yeqing/spark-1.5.0-bin-hadoop2.6export SCALA_HOME=/home/yeqing/scala-2.11.7

修改slaves文件,添加

slave1slave2

注:slave1和slave2对应/etc/hosts中slave的IP

4. 测试

启动spark服务器集群

cd /home/yeqing/spark-1.5.0-bin-hadoop2.6./sbin/start-all.sh

到master:8080会出现以下界面

sparkui1

启动Spark Shell

./bin/spark-shell

pysparkshell

打开master:4040会出现Spark Shell Application UI界面

sparkshellui

5. 分析案例

(先挖坑,待续)

6. 其他

Spark CSV Library

这是个非常有用的library,能让Spark读写CSV

git clone https://github.com/databricks/spark-csvcd spark-csv./sbt/sbt package

参考:

Spark相关:

  • http://www.tuicool.com/articles/MbuaUv
  • http://my.oschina.net/mup/blog/387619

Hadoop相关:

  • http://blog.csdn.net/aaronhadoop/article/details/24867257
  • http://my.oschina.net/vigiles/blog/208430

其他:

  • http://www.iteblog.com/archives/1380
  • http://www.csdn.net/article/2015-02-13/2823955?ref=myread
  • https://github.com/databricks/spark-csv
0 0
原创粉丝点击