您的位置:首页 > 其它

Spark 分布式集群环境搭建

2016-08-24 23:12 387 查看
目录

一、前置知识:..............................................................................................................
3

sudo
命令.......................................................................................................................
3

密码.................................................................................................................................
3

输入法中英文切换.........................................................................................................
3

Ubuntu
终端复制粘贴快捷键.......................................................................................
3

~的含义...........................................................................................................................
4

二、运行环境:..............................................................................................................
4

三、安装步骤:..............................................................................................................
4

1、创建 hadoop
用户并增加管理员权限..................................................................
4

2、更新 apt....................................................................................................................
5

3、安装 vim...................................................................................................................
5

4、安装 SSH
以及配置 SSH 无密码登录..................................................................
5

5、固定 IP
地址............................................................................................................
6

6、修改 hosts................................................................................................................
6

7、配置 SSH
无密码登录节点....................................................................................
7

8、安装 JDK...................................................................................................................
8

9、安装 hadoop2.6.0....................................................................................................
9

10、配置集群/分布式环境..........................................................................................
10

11、安装 Scala............................................................................................................
14

12、安装配置 spark....................................................................................................
14

四、运行集群................................................................................................................
16

1、启动 hadoop
集群................................................................................................
16

2、启动 spark..............................................................................................................
16

五、参考资料................................................................................................................
16

 

 

一、前置知识:

sudo 命令

本文中会大量使用到sudo命令。sudo是ubuntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要 root 权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码.

在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码。而在 windows 系统中,输入密码一般都会以“*”表示你输入的密码字符

ubuntu中终端输入的命令一般都是使用英文输入。linux中英文的切换方式是使用键盘“shift”键来切换,也可以点击顶部菜单的输入法按钮进行切换。ubuntu自带的Sunpinyin中文输入法已经足够读者使用。

在 Ubuntu 终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v

~的含义

在 Linux
系统中,~ 代表的是用户的主文件夹,即 “/home/用户名”
这个目录,如你的用户名为 hadoop,则 ~
就代表“/home/hadoop/”。此外,命令中的 #
后面的文字是注释,只需要输入前面命令即可。

 

二、运行环境:

1、主机和从机同时安装同一Ubuntu系统(包括系统版本、系统位数必须要相同)。本教程使用Ubuntu16.04 32位作为系统环境。

2、确保系统处于联网状态下。

3、hadoop版本、spark版本、scala版本要对应。本教程使用scala2.10.6、 hadoop2.6.0、spark1.6.2pre-built for hadoop2.6版本。也可以从官网下载源码自己进行编译。

三、安装步骤:

1、创建 hadoop 用户并增加管理员权限

在终端中输入

sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell 接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:

sudo passwd Hadoop
为 hadoop 用户增加管理员权限:

sudo adduser hadoop sudo
最后注销当前用户(屏幕右上角的齿轮,点击注销-登出),返回登陆界面使用刚创建的hadoop用户进行登录。

2、更新 apt

打开终端,输入以下指令

sudo apt-get update
若出现 “Hash 校验和不符” 的提示,可通过更改软件源来解决。若没有该问题,则不需要更改。从软件源下载某些软件的过程中,可能由于网络方面的原因出现没法下载的情况,那么建议更改软件源。在学习Hadoop过程中,即使出现“Hash校验和不符”的提示,也不会影响Hadoop的安装。更改软件源:系统设置-软件和更新-下载自-其他节点-选择服务器-关闭-重新载入

3、安装 vim

sudo apt-get install vim
提示确认时按Y即可

4、安装 SSH 以及配置 SSH 无密码登录

 a)安装SSH

Ubuntu 默认已安装了 SSH client,此外还需要安装 SSHserver:

sudo apt-get install openssh-server
安装后,使用如下命令登录本机

ssh localhost
此时会有如下提示(SSH 首次登陆提示),输入 yes 。然后按提示输入密码hadoop,这样就登陆到本机了。

 
 

b)配置无密码登录

首先退出刚才的 ssh(exit 指令),就回到了我们原先的终端窗口,然后

利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

   exit           # 退出刚才的 ssh localhost
   cd ~/.ssh/     # 若没有该目录,请先执行一次ssh localhost     ssh-keygen -t rsa  # 会有提示,都按回车就可以

   cat ./id_rsa.pub >> ./authorized_keys  #加入授权
此时再使用命令即可无密码登录本机了

5、固定 IP 地址

默认IP地址分配是自动获取的,我们需要手动获取一个固定的IP地址。系

统设置-网络-有线网络-选项-IPV4设置进行IP地址的分配。

Linux系统中查看IP地址的命令是ifconfig

 

6、修改 hosts

为了便于区分,修改各个节点的主机名,首先在 master 节点上作如下修改:

sudo vim /etc/hostname
将本机名字由localhost改为master(区分大小写)

然后执行如下命令修改自己所用节点的IP映射:

sudo vim /etc/hosts
 

 192.168.1.101是master的IP地址,192.168.1.102是slave1节点的IP

地址,如果有两个以上的节点依此修改即可。修改完成后重启电脑,在终端看到机器名的变化代表修改成功。

 以上是在 master 上面的修改,在各个 salve 节点也要做相应修改,对

/etc/hostname(修改为 slave1、slave2 等)和/etc/hosts(与主机配置一样)

两个文件进行修改。

 配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功。

ping master -c 3   # 只ping 3次,否则要按 Ctrl+c 中断
ping slave1 -c 3

7、配置 SSH 无密码登录节点

 这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。无密码登录本机在第4步执行过。

 在master节点执行:

scp ~/.ssh/id_rsa.pubhadoop@slave1:/home/hadoop/
scp 是secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:

在slave1节点上执行

mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keysrm ~/id_rsa.pub    #

完就可以删掉了



如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。

这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在

Master 节点上执行如下命令进行检验,如下图所示:

8、安装 JDK

 将下载的 JDK 包解压到/usr/lib/jvm 文件夹下,如果文件夹不存在则手动创建一个:

mkdir /usr/lib/jvm                 #创建文件夹
chown -hR hadoop:hadoop/usr/lib/jvm    #修改文件夹所有者
 运行解压

sudo tar zxvf./jdk-7u79-linux-i586.tar.gz -C /usr/lib/jvm 修改环境变量

vim ~/.bashrc
(设置环境变量的方法和区别参见网页添加如下信息

exportJAVA_HOME=/usr/lib/jvm/java-1.7.0_79 export JRE_HOME=${JAVA_HOME}/jre exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效

source ~/.bashrc
此时在终端运行java -version命令,可以看到屏幕输出JDK的版本信息,代表JDK安装成功

注意!master 和 slave 安装路径要是一样的,并且两者系统版本要是一致的,否则启动集群时会报错!这一点同样适用于其他软件。

9、安装 hadoop2.6.0

 将下载的hadoop2.6.0安装到/usr/路径下,

sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/  # 解压 cd /usr/local/ sudo mv ./hadoop-2.6.0/./hadoop            # 将文件夹名改为hadoop
sudo chown -R hadoop:hadoop./hadoop       # 修改文件权限
 配置环境变量

vim ~/.bashrc
#添加以下信息
export HADOOP_HOME=/usr/hadoop exportPATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native expor
1083f
tHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/" exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

保存后执行source ~/.bashrc使配置生效

10、配置集群/分布式环境

集群/分布式模式需要修改 /usr/hadoop/etc/hadoop 中的5个配置文件,

更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项:

slaves 、
core-site.xml


hdfs-site.xml


mapred-site.xml


yarn-

site.xml

以下在master节点上进行。

(1)   文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅

作为 NameNode 使用。

本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加两行内容:slave1和slave2。

(2)   文件core-site.xml改为下面的配置

<configuration>
<property>
                <name>fs.defaultFS</name>

               <value>hdfs://master:9000</value>

        </property>

        <property>

               <name>hadoop.tmp.dir</name>

               <value>file:/usr/hadoop/tmp</value>

                <description>Abase directories.</description>

        </property>

</configuration>

for

other

temporary

(3)   文件 hdfs-site.xml

        <configuration>
<property>
               <name>dfs.namenode.secondary.http-address</name>

 
                <value>master:50090</value>
       </property>
      <configuration>
       <property>
               <name>dfs.replication</name>
                <value>3</value>
       </property>
       <property>
                <name>dfs.namenode.name.dir</name>
               <value>file:/usr/hadoop/tmp/dfs/name</value>

       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/usr/hadoop/tmp/dfs/data</value>

       </property>
</configuration>
(4)文件mapred-site.xml (可能需要先重命名,默认文件名为

mapred-site.xml.template),然后配置修改如下:

<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>
(5)文件 yarn-site.xml配置修改如下:

<configuration>
       <property>
               <name>yarn.resourcemanager.hostname</name>

               <value>master</value>
       </property>
       <property>
               <name>yarn.nodemanager.aux-services</name>

               <value>mapreduce_shuffle</value>
       </property>
</configuration>
配置好后,将 master 上的 /usr/Hadoop 文件夹复制到各个节点上。在 Master 节点上执行:

cd /usr/ tar -zcf~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制 cd ~scp./hadoop.master.tar.gz hadoop@slave1:/home/hadoop

 

在slave节点执行

sudo rm -r /usr/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C/usr/ sudo chown -R hadoop /usr/hadoop

同样,如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format
然后可以启动hadoop了,在master节点执行:

start-dfs.shstart-yarn.sh
mr-jobhistory-daemon.sh starthistoryserver
通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master

节点上可以看到NameNode、ResourceManager、SecondrryNameNode、 JobHistoryServer 进程,如下图所示:

在 slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:

缺少任一进程都表示出错。另外还需要在Master 节点上通过命令 hdfs

dfsadmin -report 查看 DataNode
是否正常启动,如果 Live datanodes 不

为 0 ,则说明集群启动成功。

如果出现slave结点没有DataNode进程,解决方式如下:切换到hadoo目录,将tmp文件夹下所有内容删除,然后重新执行格式化NameNode命令,再启动hadoop问题即可解决。 Hadoop配置全部完成.

11、安装 Scala

下载Scala(版本2.10.6),解压到/usr/lib路径下,添加环境变量

exportSCALA_HOME=/home/test/install/scala-2.11.6 export PATH=$SCALA_HOME/bin:$PATH

在终端中键入scala,能进入Scala命令行即安装成功

Slave需要在同样的路径下安装相同版本的Scala

12、安装配置 spark

在master机器上:

下载spark1.6.0pre-built for hadoop2.6.0,解压到/usr/目录下,重命

名为spark,修改所有者:

sudo chown -R hadoop:hadoop /usr/spark
修改环境变量:

vim ~/.bashrc

#添加如下内容

export SPARK_HOME=/usr/spark export

PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

使用source语句使环境变量生效。

配置spark

进入spark安装目录下的conf目录,修改配置文件:

cd /usr/spark/conf cp spark-env.sh.template spark-env.sh

#添加如下内容

export SCALA_HOME=/usr/lib/scala-2.10.6 export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79 export SPARK_MASTER_IP=192.168.1.101 export SPARK_WORKER_MEMORY=1g export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop

其中:

JAVA_HOME 指定 Java
安装目录; 

SCALA_HOME 指定 Scala
安装目录; 

SPARK_MASTER_IP 指定 Spark
集群 Master 节点的 IP 地址; 

SPARK_WORKER_MEMORY 指定的是 Worker
节点能够分配给 Executors 的最大内

存大小; 

HADOOP_CONF_DIR指定Hadoop
集群配置文件目录。将 slaves.template 拷贝到 slaves,编辑其内容为:

master slave01 slave02

至此master节点的spark安装完成,下面将spark拷贝到slave节点在master节点执行

cd /usr/ tar-zcf ~/spark.master.tar.gz ./spark  # 先压缩再复制

cd ~scp ./spark.master.tar.gzhadoop@slave1:/home/hadoop

在slave节点执行

sudo tar -zxf ~/spark.master.tar.gz -C/usr/
sudo chown -R hadoop:hadoop /usr/spark
和master一样,在slave节点添加环境变量。

四、运行集群

1、启动 hadoop 集群

start-dfs.sh start-yarn.sh
mr-jobhistory-daemon.sh starthistoryserver

2、启动 spark

start-master.shstart-slaves.sh

在浏览器中输入master:8080查看集群是否启动。

五、参考资料

1、Spark快速入门指南 – Spark安装与基础使用

http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/#more-577

2、Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

http://dblab.xmu.edu.cn/blog/install-hadoop/

3、Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOShttp://dblab.xmu.edu.cn/blog/install-hadoop-cluster/

4、Hadoop集群(第5期)_Hadoop安装配置

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

5、spark
介绍及本地模式、集群模式安装

http://www.aboutyun.com/thread-8160-1-1.html

6、hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档

http://www.aboutyun.com/thread-7684-1-1.html

7、Spark 1.6.1分布式集群环境搭建

http://www.w2bc.com/article/121907

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: