阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Spark 1.5、Hadoop 2.7 集群环境搭建

177次阅读
没有评论

共计 4855 个字符,预计需要花费 13 分钟才能阅读完成。

最近需要用到大数据的一些相关技术,于是实验了一下 spark 和 Hadoop 的集群环境搭建。实验包括三台虚拟机,linux-1、linux-2、linux-3,spark 是一个 master 两个 worker,hadoop 是一个主 NameNode、两个 DataNode,其中一个兼做副 NameNode。软件方面,spark 用的 1.5.2 版本,最新的 1.6.1 版本遇到一个 Java 代码访问拒绝的问题,网上有说是 bug,退回到 1.5.2 版。hadoop 用的最新 2.7.2 稳定版,只能在 jdk7 以上版本运行。

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 相关教程见以下内容

CentOS 7.0 下安装并配置 Spark  http://www.linuxidc.com/Linux/2015-08/122284.htm

Spark1.0.0 部署指南 http://www.linuxidc.com/Linux/2014-07/104304.htm

Spark 官方文档 – 中文翻译  http://www.linuxidc.com/Linux/2016-04/130621.htm

CentOS 6.2(64 位)下安装 Spark0.8.0 详细记录 http://www.linuxidc.com/Linux/2014-06/102583.htm

Spark 简介及其在 Ubuntu 下的安装使用 http://www.linuxidc.com/Linux/2013-08/88606.htm

安装 Spark 集群(在 CentOS 上) http://www.linuxidc.com/Linux/2013-08/88599.htm

Hadoop vs Spark 性能对比 http://www.linuxidc.com/Linux/2013-08/88597.htm

Spark 安装与学习 http://www.linuxidc.com/Linux/2013-08/88596.htm

Spark 并行计算模型 http://www.linuxidc.com/Linux/2012-12/76490.htm

Ubuntu 14.04 LTS 安装 Spark 1.6.0(伪分布式)http://www.linuxidc.com/Linux/2016-03/129068.htm

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

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135067.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4855字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中