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

手把手教你搭建Hadoop全分布式集群

201次阅读
没有评论

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

阅读目录(Content)

  • 一、搭建 Hadoop 全分布式集群前提
    • 1.1、网络
    • 1.2、安装 jdk
    • 1.3、安装 hadoop
  • 二、Hadoop 全分布式集群搭建的配置
    • 2.1、hadoop-env.sh
    • 2.2、core-site.xml
    • 2.3、hdfs-site.xml
    • 2.4.mapred-site.xml
    • 2.5、yarn-site.xml
    • 2.6、创建上面配置的目录
  • 三、全分布式集群搭建测试
    • 3.1、运行环境
    • 3.2、服务器集群的启动与关闭
    • 3.3、效果
    • 3.4、监控平台
  • 四、Hadoop 全分布式集群配置免密登录实现主节点控制从节点
    • 4.1、配置主从节点之间的免密登录
  • 五、配置集群中遇到的问题

前言

上一篇介绍了 Hadoop 伪分布式集群的搭建,其实在我们的生产环境中我们肯定不是使用只有一台服务器的伪分布式集群当中的。接下来我将给大家分享一下全分布式集群的搭建!

其实搭建最基本的 Hadoop 全分布式集群和伪分布式集群基本没有什么区别,只有很小的区别。

一、搭建 Hadoop 全分布式集群前提

 

1.1、网络

1)如果是在一台虚拟机中安装多个 Linux 操作系统的话,可以使用 NAT 或桥接模式都是可以的。试一试可不可以相互 ping 通!

2)如果在一个局域网当中,自己的多台电脑(每台电脑安装相同版本的 linux 系统)搭建,将所要使用的 Ubuntu 操作系统的网络模式调整为桥接模式。

步骤:

一是:在要使用的虚拟机的标签上右键单击,选择设置,选择网络适配器,选择桥接模式,确定

二是:设置完成之后,重启一下虚拟机

三是:再设置桥接之前将固定的 IP 取消

桌面版:通过图形化界面设置的。
服务器版:在 /etc/network/interfaces
iface ens33 inet dhcp
#address …

四是:ifconfig 获取 IP。172.16.21.xxx

最后试一试能不能 ping 通

 

1.2、安装 jdk

每一个要搭建集群的服务器都需要安装 jdk,这里就不介绍了,可以查看上一篇 http://www.linuxidc.com/Linux/2017-10/147466.htm

 

1.3、安装 hadoop

每一个要搭建集群的服务器都需要安装 hadoop,这里就不介绍了,可以查看上一篇。http://www.linuxidc.com/Linux/2017-10/147466.htm

二、Hadoop 全分布式集群搭建的配置

配置 /opt/hadoop/etc/hadoop 相关文件

手把手教你搭建 Hadoop 全分布式集群

 

2.1、hadoop-env.sh

25 行左右:export Java_HOME=${JAVA_HOME}
改成:export JAVA_HOME=/opt/jdk

 

2.2、core-site.xml

<configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://mip:9000</value>
            </property>
        </configuration>

分析:

mip:在主节点的 mip 就是自己的 ip,而所有从节点的 mip 是主节点的 ip。

9000:主节点和从节点配置的端口都是 9000

 

2.3、hdfs-site.xml

注意:**: 下面配置了几个目录。需要将 /data 目录使用 - R 给权限为 777。

<configuration>
            <property>
                <name>dfs.nameservices</name>
                <value>hadoop-cluster</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>
            <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///data/hadoop/hdfs/nn</value>
            </property>
            <property>
                <name>dfs.namenode.checkpoint.dir</name>
                <value>file:///data/hadoop/hdfs/snn</value>
            </property>
            <property>
                <name>dfs.namenode.checkpoint.edits.dir</name>
                <value>file:///data/hadoop/hdfs/snn</value>
            </property>
            <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///data/hadoop/hdfs/dn</value>
            </property>
        </configuration>

分析:

dfs.nameservices:在一个全分布式集群大众集群当中这个的 value 要相同

dfs.replication:因为 hadoop 是具有可靠性的,它会备份多个文本,这里 value 就是指备份的数量(小于等于从节点的数量)

一个问题:

dfs.datanode.data.dir:这里我在配置的时候遇到一个问题,就是当使用的这个的时候从节点起不来。当改成 fs.datanode.data.dir 就有用了。

但是官方给出的文档确实就是这个呀!所以很邪乎。因为只有 2.0 版本之前是 fs

 

2.4.mapred-site.xml

注意:如果在刚解压之后,是没有这个文件的,需要将 mapred-site.xml.template 复制为 mapred-site.xml。

<configuration>
            <property>
<!- 指定 Mapreduce 运行在 yarn 上 --> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
 

2.5、yarn-site.xml

<configuration>
            <!-- 指定 ResourceManager 的地址 -->
            <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>mip</value>
            </property>
            <!-- 指定 reducer 获取数据的方式 -->
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <property>
                <name>yarn.nodemanager.local-dirs</name>
                <value>file:///data/hadoop/yarn/nm</value>
            </property>

分析:

mip:在主节点的 mip 就是自己的 ip,而所有从节点的 mip 是主节点的 ip。

 

2.6、创建上面配置的目录

sudo mkdir -p /data/hadoop/hdfs/nn
    sudo mkdir -p /data/hadoop/hdfs/dn
    sudo mkdir -p /data/hadoop/hdfs/snn
    sudo mkdir -p /data/hadoop/yarn/nm

一定要设置成:sudo chmod -R 777 /data

三、全分布式集群搭建测试

 

3.1、运行环境

有三台 ubuntu 服务器(ubuntu 17.04):

主机名:udzyh1   IP:1.0.0.5     作为主节点(名字节点)

主机名:server1   IP:1.0.0.3     作为从节点(数据节点)

主机名:udzyh2    IP:1.0.0.7     作为从节点(数据节点)

jdk1.8.0_131

hadoop 2.8.1

 

3.2、服务器集群的启动与关闭

手把手教你搭建 Hadoop 全分布式集群

名字节点、资源管理器:这是在主节点中启动或关闭的。

数据节点、节点管理器:这是在从节点中启动或关闭的。

MR 作业日志管理器:这是在主节点中启动或关闭的。

 

3.3、效果

在主节点:udzyh1 中

手把手教你搭建 Hadoop 全分布式集群

在从节点:server1 中

手把手教你搭建 Hadoop 全分布式集群

在从节点:udzyh2 中

手把手教你搭建 Hadoop 全分布式集群

我们在主节点的 web 控制页面中:http:1.0.0.5:50070 中查看到两个从节点

手把手教你搭建 Hadoop 全分布式集群

说明配置成功

 

3.4、监控平台

手把手教你搭建 Hadoop 全分布式集群

四、Hadoop 全分布式集群配置免密登录实现主节点控制从节点

配置这个是为了实现主节点管理(开启和关闭��从节点的功能:

手把手教你搭建 Hadoop 全分布式集群

我们只需要在主节点中 使用 start-dfs.sh/stop-dfs.sh 就能开启或关闭 namenode 和所有的 datanode,使用 start-yarn.sh/stop-yarn.sh 就能开启或关闭 resourcemanager 和所有的 nodemanager。

 

4.1、配置主从节点之间的免密登录

1)在所有的主从节点中执行

如果以前配置过免密登录的话,建议删除重新建立过,因为我们需要配置的是多台服务器:
rm -r  ~/.ssh
 执行 ssh-keygen 为了在主节点中生成公钥和私钥,在从从节点生成.ssh 目录
2)在主节点中执行
scp  ~/.ssh/id_rsa.pub   从节点的用户名 @从节点 ip:~
注意:第一次远程连接的话,首先输入 yes,然后是从节点密码
手把手教你搭建 Hadoop 全分布式集群

3)在所有的从节点中执行

我们把主节点的公钥已经拿到了所有的从节点中,接下来就是:
cat id_rsa.pub>>.ssh/authorized_keys 当中
在从节点:1.0.0.3
手把手教你搭建 Hadoop 全分布式集群

在从节点 1.0.0.7

手把手教你搭建 Hadoop 全分布式集群

4)测试

手把手教你搭建 Hadoop 全分布式集群

我们可以查看他们是用户名相同的,所以可以直接使用 ssh 1.0.0.3 远程连接

手把手教你搭建 Hadoop 全分布式集群

4.2、实现主节点控制从节点

1)在主节点中

打开 vi  /opt/hadoop/etc/hadoop/slaves

手把手教你搭建 Hadoop 全分布式集群

把它删掉,然后配置上 所有从节点的主机名
注意:这样配置的前提是 主节点要能免密登录到从节点中
你去执行 start-dfs.sh 时,它会去 slaves 文件中去找从节点(这就是配置免密登录的原因)
然后去启动从节点。同时 自己也需要做免密登录也就是说要自己对自己做免密登录.
2)在主节点中
  cat .ssh/id_rsa.pub >> .ssh/authorized_keys 
3) 测试
ssh  127.0.0.1
手把手教你搭建 Hadoop 全分布式集群

注意:在主节点 执行 start-dfs.sh 中主节点的用户名必须和所有从节点的用户名相同 。因为那个服务器执 行这个脚本
  就以这个用户名去远程登录到其他从节点的服务器中,所以在所有的生产环境中控制同一类集群的用户一定要相同。

4.3、测试实现主节点控制从节点

1)在主节点的服务器中执行 start-dfs.sh

手把手教你搭建 Hadoop 全分布式集群

2)在 web 监控平台查询

手把手教你搭建 Hadoop 全分布式集群

3)在主节点的服务器中执行 stop-dfs.sh

手把手教你搭建 Hadoop 全分布式集群

3)在主节点的服务器中执行 start-yarn.sh

手把手教你搭建 Hadoop 全分布式集群

4)在 web 监控平台查询到

手把手教你搭建 Hadoop 全分布式集群

5)在主节点的服务器中执行 stop-yarn.sh

手把手教你搭建 Hadoop 全分布式集群

五、配置集群中遇到的问题

2)主节点和从节点启动了,但是在主节点的 web 控制页面查找不到从节点(linux 系统安装在不同的物理机上面)

手把手教你搭建 Hadoop 全分布式集群

解决方案:

 在服务器添加完公钥之后,ssh 服务器然后报了这个错误
         sign_and_send_pubkey: signing failed: agent refused operation
        然后执行了以下命令才好。。
        eval “$(ssh-agent -s)”  注意:- s 前面有空格
           ssh-add
3)
手把手教你搭建 Hadoop 全分布式集群

在所有主节点和从节点的服务器中的 /etc/hosts 中:删除所有关于 ipv6 的配置
手把手教你搭建 Hadoop 全分布式集群

它不能建立 IPv6 的连接,所以删除了 IPv6 之后系统会使用 IPv4(在主节点上添加从节点的标识的)

4)在主节点的 web 控制页面查询不到从节点信息(但是使用 jps 可以查询到)

    我说过需要在 etc/hosts 文件中加入所有集群服务器的 ip 和主机名
    但是今天今天我测试的时候出现问题,然后我就把 主从节点的在 hosts 文件配置的各个节点的 ip+ 主机的配置删除了
   
我估计这是因为我是在一台虚拟机中安装了多台的 ubuntu 中进行搭建集群的原因。

Hadoop2.3-HA 高可用集群环境搭建  http://www.linuxidc.com/Linux/2017-03/142155.htm

Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署  http://www.linuxidc.com/Linux/2017-04/143095.htm

Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm

使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm

Ubuntu 14.04 下 Hadoop 集群安装  http://www.linuxidc.com/Linux/2017-02/140783.htm

CentOS 6.7 安装 Hadoop 2.7.2  http://www.linuxidc.com/Linux/2017-08/146232.htm

Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群  http://www.linuxidc.com/Linux/2017-07/145503.htm

CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建  http://www.linuxidc.com/Linux/2017-06/144932.htm

Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程  http://www.linuxidc.com/Linux/2017-06/144926.htm

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147504.htm

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