Spark集群搭建

百度文库链接:http://wenku.baidu.com/view/26ba843d941ea76e59fa040d

1安装系统

安装Ubuntu14.04 server版64位系统。

注意:主机名,即hostname分别为:master,worker1,worker2,worker3……,用户名都一样,例如ubuntu,密码为1,这样做的目的是,安装软件的时候可以复制,不用改很多配置文件。

注意过程:

地区为Asian,China.

网络自动配置。

用所有硬盘并设置LVM。

安装OpenSSH。

2配置网络

配置网络教程:


1.    编辑interfaces文件,该文件位于/etc/network/下,执行如下命令:

vim/etc/network/interfaces,回车,如图:


2.    添加:

#interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopback这以下的是为添加上去该文件上的内容:# The primary network interfaceauto eth0iface eth0 inetstaticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1

如图:

 

3.    
添加完毕后,保存退出,接下来就是配置DNS解析了,DNS解析文件再/etc/resolv.conf。执行:vim /etc/resolv.conf,如下图:

 

4.    再该文件下添加:

nameserver192.168.1.1

nameserver220.170.64.68

如图:

 

5.    改完上面,如果重启的话,还是会变为原来的样子,所以要让其永久改变,因此,执行: vim /etc/resolvconf/resolv.conf.d/base,如图:


6.    在里面添加

nameserver192.168.1.1nameserver 220.170.64.68

如图:

 

7.    然后保存退出,到这里基本就是完成了,然后如果还是不能连上网,要将/etc/NetworkManager/目录下的system-connections删除,或者移动到其他目录下。

8.    最后执行/etc/NetworkManager/就可以连上网了。


3配置SSH免密码登录

配置ssh

输入命令获取密钥



在/home/ubuntu下进入.ssh目录可以看到

(如果要产生known_hosts 只要ssh localhost 即可自动生成)


将公钥添加到authorized_keys里


进入到/etc/ssh/sshd_config里第三行和下一截图里显示的注释去掉使其有效




继续回到.ssh目录中

将id_dsa.pub复制到slave1,slave2中,然后在slave1,slave2中将master_dsa.pub加入到authorized_keys中

 

 

回到master中即可免密码登陆到slave1,slave2

(P.S:如果要相互通信,在slave1,slave2中做同样操作即可)

配置不用写IP登录

在linux下,要远程连接另外一台linux服务器,可以使用ssh,具体类似下面的命令:

$ ssh michael@192.168.0.222

但是,如果登陆linux服务器是每天的都要做的事情,那么这样每天输入用户名和IP地址是稍微有些麻烦的。使用下面的方法,你就可以避免这种麻烦。

在用户根目录下的.ssh文件内创建config文件,如下:

$

vi ~/.ssh/config
在其中以类似如下的格式输入要登陆的服务器的相关信息:
Host servername
User username
Hostname serverIP
其中的servername是服务器的别名,username是用户名,serverIP就是这台服务器的IP。比如最前面的那个登陆命令,就可以写成下面的形式:
Host ubuntu
User michael

Hostname 192.168.0.222

如果有多台服务器,可以空一行,然后以同样的格式写在这个文件中。

然后,你就可以直接使用类似下面的命令连接服务器了:

$ ssh ubuntu

4安装JDK

JDK安装

tar.gz为解压后就可使用的版本,这里我们将jdk-7u3-linux-i586.tar.gz解压到/usr/local/下。

1、解压

 解压到当前目录:$ tar -zxvf/opt/setup/jdk-7-ea-bin-b145-linux-i586-07_jun_2011.tar.gz

2、环境配置

① $sudo vi/etc/profile

② 在末尾行添加

#set java environment
     JAVA_HOME=/usr/local/jdk1.7.0
     CLASSPATH=.:$JAVA_HOME/lib.tools.jar
     PATH=$JAVA_HOME/bin:$PATH
     export JAVA_HOME CLASSPATH PATH

保存退出

③$ source/etc/profile 使更改的配置立即生效

④$ java-version 查看JDK版本信息,如果显示出1.7.0证明成功

⑤使JDK在所有用户中使用

$ Vi/etc/profile.d/java.sh  新建一个java.sh执行文件,填入JDK相关环境配置信息,如下图:

$ chmod 755/etc/profile.d/java.sh  给java.sh分配权限

5安装Hadoop-2.6.0

将hadoop安装在 /home/Ubuntu/hadoop2.6

1、  修改/etc/profile


#Hadoop
 
export HADOOP_HOME=/home/ubuntu/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HDAOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"


2、   
 修改/hadoop2.6/etc/hadoop/hadoop-env.sh
3、   
 修改/hadoop2.6/etc/hadoop/yarn-env.sh
4、   
 修改/hadoop2.6/etc/hadoop/core-site.xml

 

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/ubuntu/hadoop-2.6.0/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>


       1)fs.defaultFS是NameNode的URL。hdfs://主机名:端口/

2)hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过 如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。

5、  
修改/hadoop2.6/etc/hadoop/hdfs-site.xml


<configuration>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/ubuntu/hadoop-2.6.0/tmp/dfs/name</value>
    <description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description>
</property>
 
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/ubuntu/hadoop-2.6.0/tmp/dfs/data</value>
    <description>Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks.</description>
</property>
 
 
<property>
    <name>dfs.namenode.rpc-address</name>
    <value>master:9001</value>
</property>
 
 
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:50090</value>
</property>
 
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
</configuration>


1) dfs.namenode.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。

2) dfs.datanode.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。

3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

6、  
修改/hadoop2.6/etc/hadoop/mapred-site.xml

 

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
 
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>
</configuration>



 

7、  修改/hadoop2.6/etc/hadoop/yarn-site.xml


<configuration>
        <!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>Host or IP and port of JobTracker.</description>
</property>
 
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8032</value>
    </property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8088</value>
</property>
</configuration>



格式化命令:bin/hadoop  namenode  -format

启动: sbin/start-dfs.sh

       sbin/start-yarn.sh

我们也可以通过网页来看是否正常安装与配置,地址如下:http://master:50070/


6安装Scala2.10.4

scala-2.10.4.tgz解压缩即可。我解压缩到目录/usr/local/scala,之后配置~/.bash_profile或/etc/profile环境变量。

 

#scala

exportSCALA_HOME=/usr/local/scala

exportPATH=$SCALA_HOME/bin:$PATH

 

使用source~/.bash_profile生效。

或source/etc/profile

验证scala安装是否成功:
输入scala –version

输出:

[root@master scala]# scala -version
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL

表示成功!

7安装Spark1.4.0

1、解压缩spark-1.4.0-bin-hadoop2.6.tgz到/home/ubuntu/spark目录,之后配置/etc/profle环境变量。

 

#spark
 
exportSPARK_HOME=/home/vm/tools/spark
 
exportPATH=$SPARK_HOME/bin:$PATH
 
2、修改$SPARK_HOME/conf/spark-env.sh
如果没有,则cp spark-env.sh.template spark-env.sh
 
exportSPARK_HOME=/home/ubuntu/spark
 
exportSCALA_HOME=/home/ubuntu/scala
 
exportJAVA_HOME=/home/ubuntu/jdk
 
exportSPARK_MASTER_IP=192.168.100.130
 
exportSPARK_WORKER_MEMORY=2g
exportHADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.5.2/etc/hadoop
 
3、修改$SPARK_HOME/conf/spark-defaults.conf
 
spark.masterspark://192.168.100.130:7077
 
spark.serializerorg.apache.spark.serializer.KryoSerializer
 
修改$SPARK_HOME/conf/spark-defaults.conf
4、修改slaves文件,
[root@masterconf]# cat slaves
# ASpark Worker will be started on each of the machines listed below.
worker1
worker2
worker3

5、保存退出,这样master中spark就安装完成了,slave节点和maser一样的设置,用scp拷贝就行

测试:

启动spark

 

cd/home/vm/tools/spark/sbin
 
shstart-all.sh
 
测试Spark是否安装成功
 
cd$SPARK_HOME/bin/
 
./run-exampleSparkPi

 

在浏览器中打开地址http://192.168.100.130:8080可以查看spark集群和任务基本情况:

 

到bin里运行spark-shell



参考资料

1、Hadoop2.6.0 &Spark1.3.0分布式搭建

http://blog.sina.com.cn/s/blog_49cd89710102vc7r.html

 

2、Ubuntu14.04安装配置Hadoop2.6.0(完全分布式)与wordcount实例运行

http://www.linuxidc.com/Linux/2015-01/112029.htm

 

3、在Win7虚拟机下搭建Hadoop2.6.0+Spark1.4.0单机环境

http://www.linuxidc.com/Linux/2015-08/120945.htm

 

4、搭建hadoop/spark集群环境

http://www.open-open.com/lib/view/open1419490748562.html

 

5、SSH Automatic Login(免密码)

http://liluo.org/blog/2011/05/ssh-automatic-login/

 

6、Spark教程

http://book.51cto.com/art/201408/448456.htm

 

7、  jdk安装


 

8、  Ubuntu14.04下如何配置固定IP

http://jingyan.baidu.com/article/e5c39bf5bbe0e739d7603396.html

Congratulations