Spark 1.5、Hadoop 2.7 集群环境搭建

spark集群安装非常简单:

1.分别在各个机器上解压缩spark包,选定一个做master,其他的做worker。在master上启动 {spark_dir}/sbin/start-master.sh

2.worker机器上启动 {spark_dir}/sbin/start-slave.sh spark://{master}:7077

3.这里唯一要注意的是,spark是采用主机名作为服务识别,所以虽然用-h xx.xx.xx.xx 的参数也可以按ip方式启动成功,但在代码调用里往往遇到麻烦。所以还是老老实实用主机名算了。那么就要注意变更每台机器的/etc/hostname及把各个机器的hostname配置到每台机器的/etc/hosts文件里。

4.此外,这种方法虽然很好理解,但是要一台机器一台机器的操作,有点麻烦,也可以把配置文件写好,一个命令同时启动所有机器,这个后面说。

hadoop集群的安装略微麻烦些,因为组件也多一些。hadoop实际上由hdfs、mapreduce、yarn三个主要功能模块构成。hdfs是分布式文件系统;mapreduce是分布式计算系统(spark就是替代这部分的);yarn是任务调度和资源管理系统。

1.有了前面的第3步,这里就不用重复操作了。

2.下面要配置master能够ssh无密码登录其他slave。具体方法:先在master机器上生成公钥,ssh-keygen -t rsa,后续直接回车,之后会看到产生两个文件,id_rsa、id_rsa.pub,把id_rsa.pub分别拷贝到自身和各slave机器的~/.ssh目录(如果没有,手工创建)下,并改名为authorized_keys(如果以前有这个文件且不想破坏,可以用cat >>追加),这样从master就可以无密码登录各个机器了。

3.在各个机器上修改{hadoop_dir}/etc/hadoop/hadoop-env.sh 中的JAVA_HOME变量,形如export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 (这句必须改,在其他地方配置的JAVA_HOME环境变量没有作用)。
在各个机器上配置PATH环境变量 export PATH=$PATH:{hadoop_dir}/bin:{hadoop_dir}/sbin

4.配置集群环境,即编辑{hadoop_dir}/etc/hadoop 下的slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml五个文件。
slaves 文件中把每个slave主机名写在一行,很简单,就不给示例了。

core-site.xml文件示例如下:
    <configuration>
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://linux-1:9000</value>
            </property>
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>file:/home/clusterwork/hadoop-2.7.2/tmp</value>
                    <description>Abase for other temporary directories.</description>
            </property>
    </configuration>

hdfs-site.xml文件示例如下:
    <configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>linux-2:50090</value>
            </property>
            <property>
                    <name>dfs.replication</name>
                    <value>2</value>
            </property>
            <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:/home/clusterwork/hadoop-2.7.2/tmp/dfs/name</value>
            </property>
            <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:/home/clusterwork/hadoop-2.7.2/tmp/dfs/data</value>
            </property>
    </configuration>
 
 mapred-site.xml文件示例如下(没有这个文件先从mapred-site.xml.template拷贝一份,如果不使用map-reduce不配也可以):
    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>linux-1:10020</value>
            </property>
            <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>linux-1:19888</value>
            </property>
    </configuration>

 yarn-site.xml文件示例如下:
    <configuration>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>linux-1</value>
            </property>
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    </configuration>

以上配置均为示例,还可以有更多选项,具体参考官方文档。之后把这5个文件拷贝到每台机器上,覆盖原文件。
首次启动需要先在 Master 节点执行 NameNode 的格式化:hdfs namenode -format
之后在master上启动{hadoop_dir}/sbin/start-dfs.sh 、{hadoop_dir}/sbin/start-yarn.sh、{hadoop_dir}/sbin/mr-jobhistory-daemon.sh start historyserver,如果一切正常,使用jps命令,可以看到下面一些进程。
linux-1上:
  Jps
  NameNode
  ResourceManager
  JobHistoryServer
linux-2上:
  Jps
  NodeManager
  SecondaryNameNode
  DataNode
linux-3上:
  NodeManager
  DataNode
  Jps

现在hadoop就已经可用了。在使用hdfs之前先要创建用户:hdfs dfs -mkdir -p /user/clusterwork  (这个用户最好和当前操作用户同名,这样在操作时可免输绝对路径),以下是常用命令,和普通linux差不多,而且在集群中任意的机器上皆可:
hdfs dfs -mkdir data  ——建目录,其实是建在了/user/clusterwork/data 下
hdfs dfs -put *.xml data  ——传文件
hdfs dfs -ls data    ——显示文件
hdfs dfs -rm data/* ——删除文件
hdfs dfs -rmdir data ——删除目录
不一一列举

最后补充spark的集群启动。其实也是利用的ssh无密码登录了。但这个对于spark不是必须的,对于hadoop则是必须的。所以既然前面hadoop安装第2步已经做了,这里就省事了。配置各个机器的/conf/slaves ,把worker写进去。启动 {spark_dir}/sbin/start-all.sh 即可。
之后通过web访问检查一下各集群情况:http://linux-1:8080、 http://linux-1:50070、 http://linux-1:8088

更多Spark相关教程见以下内容

Spark 的详细介绍请点���里
Spark 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2016-09/135067.htm