hadoop分布式集群的搭建

1、实验目的与环境
1.1实验目的
搭建 hadoop 分布式集群
1.2实验环境
Linux 版本: Centos6.5
Jdk 版本: jdk7
Hadoop 版本: hadoop2.6
使用工具: SecureCRT,vmware12

2、步骤
2.1配置网络环境
(1) 安装完成三台 centos 机器后,为它们分别配置网络环境。
虚拟机网络配置选用 vmnet0 ,通过 setup 命令设置静态 ip dns 服务器。
如下:

分别为三台机器配置 ip 192.168.1.110 192.168.1.111 192.168.1.112
(2) 开启 eth0 的网卡。
输入命令如下:
vim /etc/sysconfig/network-scripts/ifcfg-eth0

eth0 网卡的 ONBOOT=no 修改为 ONBOOT=yes
BOOTPROTO=no 修改为 BOOTPROTO=yes
完成后重启网卡:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(3) 输入 ifconfig 测试。

说明网络配置成功。
4 同理,另外两台机器也是一样的方式配置。完成网络的配置后就可用 SecureCRT 工具进行远程登录了。
5 Centos 默认情况下的防火墙会阻止机器间进行通信,也不会开放 hadoop 用到的端口。所以为了方便,这里直接将防火墙关闭。
临时关闭防火墙命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
若想永久关闭防火墙,可输入命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(6)修改主机名并添加域名映射
本次实验 hadoop 分布式由三台 centos 组成,其中一台作为主节点 master ,另外两台作为从节点 slave ,所以为了更直观,分别修改主机名为 master slave1 slave2.
输入 hastname 可以查看当前机器名字。
修改主机名方式:
vim /etc/sysconfig/network

hostname 修改为需要的名字。
添加域名映射,需要修改 /etc/hosts 文件。输入:
vim /etc/hosts
在每台机器都执行如上操作并添加如图所示的三句,使得对应的主机名能与ip映射。

完成域名映射后,就可以使用其中一台机器直接通过名字ping通另外两台机器了。
2.2 建立集群间的 SSH 无密钥认证
SSH 的配置并不是必须的步骤,但是后续的操作需要在机器间传送文件或者集群在启动过程中需要启动从节点,为避免频繁输入密码,可以配置 SSH 无密钥认证。
配置过程:
(1)在每台机器输入:
ssh-keygen -t rsa

(2) 在每服务器上将公钥复制到需要免验证登录的服务器上
进入ssh目录:
cd ~/.ssh
类似下面在各台机上依次输入:
       ssh-copy-id -i id_rsa.pub "-p 22 root@slave1"
       ssh-copy-id -i id_rsa.pub "-p 22 root@slave2"
       ssh-copy-id -i id_rsa.pub "-p 22 root@master"


(3)测试
完成配置后,可通过 ssh 主机名的方式尝试登录到另一台机器,如果不需要输入密码即可登录,所以配置成功。

创建新的用户hadoop,使用 useradd hadoop 新建用户,使用 passwd hadoop 为新用户设置密码。并且可以为 hadoop 用户配置 ssh 免密钥登录。方式同上。这样使用 hadoop 用户时使用 scp ssh 等相关命令时可以不需要频繁输入密码。
2.3 安装 JDK
          (1)下载jdk
Centos 自带 openjdk ,一般不使用自带的jdk版本。可以自己卸载,并安装自己下载的 jdk 。可以去 oracl e官网下载jdk的 rpm 包或者 gz 包。本次实验的 jdk 版本为 1.7 。我下载的是 jdk-7u79-linux-x64.gz 并通过 SecureCRT 工具的 sftp 功能将该包传输到 master /user/local 目录下。
(2)解压
tar -zxvf jdk-7u79-linux-x64.gz
(3)设置环境变量
vim /etc/profile
在该文件尾添加jdk安装目录并添加到path如下:

刚配置完的环境变量并不会立即生效,可以重启或者输入如下命令让其立即生效:
source /etc/profile
  1. 测试
输入 java -version ,如果出现如下界面,说明配置成功。

2.4 搭建 hadoop 环境
(1)下载 hadoop 安装包
可以去 hadoop 官网下载。本次实验我用的 hadoop 版本为 hadoop-2.6.0 。同样使用 sftp 将该文件复制到 master hadoop 用户目录下,即 /home/hadoop

(2)解压
source /etc/profile



(3)配置 hadoop-env.sh
进入安装目录下的 etc/hadoop ,可以看到有许多配置文件,接下来就是要对其中的文件进行修改配置。

修改 hadoop-env.sh hadoop 的jdk变量配置:
vim hadoop-env.sh

JAVA_HOME 的值改为具体的 jdk 安装位置。

改为:

(4)修改 core-site.xml
<configuration> 标签中添加如下内容:
<configuration>
         <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
         </property>
         <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/hadoop/hadoop-2.6.0/tmp</value>
         </property>
</configuration>

           
其中第一个配置的是hdfs的访问路径,第二个配置的是数据文件存放的路径。
(5)修改 mapred-site.xml
由于 hadoop 默认提供的是样本文件,名字为: mapred-site.xml.template ,并不会起效,所以需要修改该文件名字,再进行配置。
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration> 标签中添加如下内容:
<configuration>
        <property>
                <name>mapreduce.framawork.name</name>
                <value>yarn</value>
        </property>
</configuration>

选用 mapreduce 的资源调度 yarn
(6)修改 yarn-site.xml
<configuration> 标签中添加如下内容:
<configuration>

<!-- Site specific YARN configuration properties -->
         <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
         </property>
         <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
         </property>
</configuration>

配置资源主服务器的位置和相应的策略。
(7)修改 hdfs-site.xml
<configuration> 标签中添加如下内容:
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/hadoop-2.6.0/hdfs/name</value>
     </property>
     <property>
             <name>dfs.datanode.data.dir</name>
             <value>/home/hadoop/hadoop-2.6.0/hdfs/data</value>
     </property>
     <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>master:9001</value>
     </property>


配置 dfs 副本的数量以及相关 datanode namenode 存放路径。
(8)修改 slaves 文件
vim /home/hadoop/hadoop-2.6.0/etc/hadoop/slaves
删除原有内容,并添加如下:

这个文件是配置从节点的。我的从节点是名字为 slave1 slave2 的两台机器。
如果你没有配置ip与域名映射,这里就必须写具体的ip地址。
(9)将配置好的 hadoop-2.6.0 文件夹通过 scp 发送给另外两台 slave 机器的 /home/hadoop 目录下。
由于我用hadoop用户配置了ssh,所以这一步不需要输入密码验证
scp -r hadoop-2.6.0/ hadoop@slave1:/home/hadoop/
scp -r hadoop-2.6.0/ hadoop@slave2:/home/hadoop
-r表示传输的是文件夹
(10)修改环境变量
切换回 root 用户,输入: vim /etc/profile ,修改如下:

三台机器做同样修改
输入 source /etc/proflie 让配置立即生效。
到此。整个 hadoop 的环境配置基本完成了。
3、测试集群
第一次启动需要格式化主节点命名空间。
输入命令:
hadoop namenode -format

启动集群,可以分别启动 dfs yarn start-dfs.sh start-yarn.sh
也可以一次性启动: start-all.sh
如果没有配置 hadoop path 环境变量,需要进入hadoop安装目录的sbin下运行该命令。

可以看到在启动过程相继启动了 salve1 slave2 这两台机器的 datanode ,由于配置了 ssh ,所以这一步无需输入密码。
分别在三台机器上输入jps查看当前进程:





可以看到, Namenode 服务节点和资源服务都位于主节点 master 机上,而 dataNode 数据节点位于两台从节点机器上。
测试文件上传:
将原先 master 机上的 hadoop 压缩包上传

输入 hadoop hdfs 命令:
 hadoop fs -put hadoop-2.6.0.tar.gz hdfs://master:9000/
将该文件上传到 hdfs 文件系统。
输入: hadoop fs -ls /
查看 hdfs 上的文件情况:

同样, slave 机器上也能看到相同的文件,说明集群搭建成功。

打开电脑本机的浏览器,输入: http://192.168.1.110:50070/
(由于 window 系统并没有配置 master 与其 ip 的映射,所以这里必须使用具体 ip 地址访问)

点击 Utilities 下的 Browse the file system ,可以查看到刚刚上传的文件。

这说明集群搭建成功了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值