HADOOP 伪分布式集群搭建

Posted missdanlan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HADOOP 伪分布式集群搭建相关的知识,希望对你有一定的参考价值。

一 linux 环境的搭建

由于笔者这里使用的是vmware 虚拟机 采用centos7 linux 操作系统进行搭建,所以一下示例均以centos7进行示例

1.  搭建vmware 虚拟机

(1)创建好虚拟机后采用linux ISO镜像文件启动安装centos7操作系统(其它方式也可以)

(2)完成之后设置网络模式,笔者采用桥接模式进行设置

         首先需要查看本机也就是宿主机的IP 地址以及网关,运行CMD命令进入DOS命令行窗口

         输入ipconfig 记下宿主机的默认网关

        打开vmware 网络适配器进行如下设置

     

   设置网卡IP地址以及DNS

vi /etc/sysconfig/network-scripts/ifcfg-ens33进行如下配置

BOOTPROTO=static

ONBOOT=yes

IPADDR=你的IP地址

NETMASK=255.255.255.0

GETWAY=宿主机的网关地址

DNS1和DNS2

设置完成保存 进行重启网络服务

    

重启之后可以使用IPADDR 查看配置是否生效

设置主机名

首先查看主机名

笔者这里已经设置过了,未设置 hostname 应该是localhost

设置主机名

 设置完成之后进行检查查看

设置hosts ip地址与主机名映射

vi /etc/hosts

 关闭防火墙

禁用防火墙服务

关闭之后可以查看防火墙状态进行检查

 进行selinux 安全设置

 vi /etc/selinux/config 命令进行编辑 设置SELINUX=disabled

 设置完成之后 输入命令reboot 进行重启,那么初始设置就设置好了

二 安装JDK 运行环境

由于Hadoop 依赖于JDK运行环境,笔者这里采用的是hadoop3.3.4版本,支持JDK11,所以笔者安装的也是JDK11 版本

1. 上传JDK 安装包至虚拟机后进行解压缩

2. 进入解压缩后的JDK目录 pwd 进行复制安装目录

         

 3. 进行环境变量设置

在文件末尾追加如下内容 后退出保存

 source /etc/profile 使环境变量设置生效

 4.使用java -version java javac 命令检查JDK 是否安装成功

二 安装Hadoop 

 1. 上传好Hdoop 安装包之后进行解压缩

 2. 进入hadoop 安装目录pwd 复制安装目录地址

3. 设置环境变量

打开之后追加如下内容

 

保存关闭后使用命令 source  /etc/profile 使环境变量配置生效

4. 进入/usr/local mkdir 创建目录hadoop (此目录用于存储namenode secondnamenode 快照文件)后面需要使用进行配置

至此为止hadoop 安装完成

三 配置hadoop 伪分布式集群

 1. 设置Hadoop 核心配置文件

进入Hadoop文件设置目录

其中有如下文件需要进行配置 

1. core-site.xml

(这里的属性hadoop.tmp.dir 就是你的hadoop namenode 快照存储位置)

2. mapred-site.xml

 

3. hdfs-site.xml

HDFS 会以128M为单位将上传的文件进行切分为若干个block 存储在不同的datanode中,由于为了在不可靠的机器上进行提供可靠的服务,所以采用多副本机制进行存储。 HDFS 副本数如果不进行设置则默认为3 

(这里笔者关闭了hdfs的权限认证)

  4.yarn-site.xml

5. hadoop-env.sh (运行环境配置)

添加安装好的JDK目录 进入hadoop 运行环境配置

6. 添加主机名至works 文件

2. 添加用户配置信息

1. 进入hadoop sbin目录

2. 编辑如下内容进入以下文件

(1) start-all.sh (2) stop-all.sh (3)start-dfs.sh (4) stop-dfs.sh (5) start-yarn.sh (6) stop-yarn.sh  

在这里以start-all.sh 为例:

3. 初始化HDFS 文件系统 

如果是第一次安装使用Hadoop那么在启动之前需要出示话HDFS文件系统

 看到如下信息则初始化完成

 4. 设置SSH免密登录

由于Hdoop namenode 与datanode 内部通讯协议采用RPC协议,则需要进行设置SSH免密登录

这里笔者采用RSA 对称加密算法

1. 创建密钥

2. 添加密钥进本机

 

 4. 启动hadoop

 使用JPS 查看是否启动成功

至此为止hadoop 伪分布式集群搭建完成

由于笔者是第一次进行编写,如有什么地方写的有遗漏欢迎指出进行更新改进

谢谢! 

Hadoop搭建伪分布式集群

前言

  前面只是大概介绍了一下Hadoop,现在就开始搭建集群了。我们下尝试一下搭建一个最简单的集群。之后为什么要这样搭建会慢慢的分享,先要看一下效果吧!

一、Hadoop的三种运行模式(启动模式)

1.1、单机模式(独立模式)(Local或Standalone  Mode)

  -默认情况下,Hadoop即处于该模式,用于开发和调式。

  -不对配置文件进行修改。
  -使用本地文件系统,而不是分布式文件系统
  -Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的
  -用于对MapReduce程序的逻辑进行调试,确保程序的正确

1.2、伪分布式模式(Pseudo-Distrubuted Mode)

  -Hadoop的守护进程运行在本机机器,模拟一个小规模的集群 

  -在一台主机模拟多主机
  -Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程
  -在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,

    以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。
  -修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)
  -格式化文件系统

1.3、全分布式集群模式(Full-Distributed Mode)

  -Hadoop的守护进程运行在一个集群上 

  -Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境
  -在所有的主机上安装JDK和Hadoop,组成相互连通的网络
  -在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表
  -修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数
  -格式化文件系统

二、搭建伪分布式集群的前提条件

环境:在ubuntu17.04

    jdk1.8.0_131

    hadoop 2.8.1

2.1、能够正常运行的Ubuntu操作系统

  在Ubuntu下,软件安装到/opt下,当前正在使用的用户,对于opt目录需要有读写权限: 

  1)将opt的权限给为777(漏洞文件),不推荐在生产环境中使用。但是可以在学习和调试环境中使用。     

  2)sudo

    在启动Hadoop的各个守护进程的时候,需要使用sudo。
    在管理Hadoop的时候,实际上由不同的用户启动不同集群的守护进程。
    统一使用当前的用户管理所有集群。

  3)该目录的所有者设置为当前用户

2.2、安装JDK,并配置环境变量

  1)将jdk安装包放在家目录下

  2)解压到opt目录下

    sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /opt

    此时在/opt目录下:会有一个jdk1.8.0_131

  3)创建软链接

    sudo ln -snf /opt/jdk1.8.0_131 /opt/jdk

    

    注意:创建软连接的目的是为了,我们在做项目的时候,可能会用到不同的jdk版本,这是要换软件的话,只需要修改软链接就可以了。而不用修改配置文件。

  4)配置环境变量   

    局部环境变量:~/.bashrc
    全局环境变量:/etc/profile
    export JAVA_HOME=/opt/jdk
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin

    source 相关文件(更新配置文件)

  5)查看是否安装成功

   java、javac、java -version

三、搭建伪分布式集群

3.1、安装hadoop

  1)解压hadoop安装包到opt目录下

    sudo  tar zxvf hadoop-2.8.1.tar.gz -C /opt

  2)创建软链接

    ln -snf /opt/hadoop-2.8.1   /opt/hadoop  

    

  3)配置环境变量  

    在/etc/profile文件中加入以下内容:
    export HADOOP_HOME=/opt/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    source /etc/profile

  4)使用hadoop version命令测试是否配置成功

    

3.2、配置hadoop

  配置文件存放在/opt/hadoop/etc/hadoop中有n多个文件,暂时我们只需要修改的只有5个

  1)hadoop-env.sh

    大约在25行左右   

  export JAVA_HOME=${JAVA_HOME}改成export JAVA_HOME=/opt/jdk

    

    注意:在配置文件中有提示我们怎么设置,我们一般不删除,二回选择注释它的提示。

  2)core-site.xml 

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

    

  分析:1.0.0.5是你主节点所在主机的ip,而9000为端口

  3)hdfs-site.xml   

            <configuration>
                <property>
                    <name>dfs.nameservices</name>
                    <value>hadoop-cluster</value>
                </property>
                <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:///data/hadoop/hdfs/nn</value>
                </property>
                <property>
                    <name>dfs.namenode.ch
                    eckpoint.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>

    

  4)mapred-site.xml

    在hadoop的相关目录中没有此文件,但是有一个mapred-site.xml.template文件,将该文件复制一份为mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

    

  5)yarn-site.xml

            <configuration>
                <!-- 指定ResourceManager的地址-->
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>1.0.0.5</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>
            </configuration>

    

  7)创建相关目录

        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启动hadoop的相关进程,这几目录的权限可以不用管
    如果是使用当前的用户启动相关进程,对于opt目录,当前用户得有读写权限,对于/data目录也需要读写权限

   遇到问题:

      笔者就是在这个目录权限的问题吃el很大得亏。首先为了不使用sudo我将/data目录的权限修改为777,然后进行

      HDFS集群格式化的时候,出现:

        

      这时我在想为什么呢?原来我只是给data目录设置了读写权限,但是没有给它的子目录设置读写权限。所以:    

        chmod -R 777 /data    递归设置权限

  8)对HDFS集群进行格式化,HDFS集群是用来存储数据的。  

    hdfs namenode -format

3.3、启动集群

  1)启动HDFS集群      

    hadoop-daemon.sh start namenode 启动主节点
    hadoop-daemon.sh start datanode 启动从节点

    

  2)启动YARN集群

    yarn-daemon.sh start resourcemanager
    yarn-daemon.sh start nodemanager

    

  3)启动作业历史服务器

    mr-jobhistory-daemon.sh start historyserver

    

  4)jps命令查看是否启动成功

    

  5)HDFS和YARN集群都有相对应的WEB监控页面

    HDFS:http://ip:50070

    

    YARN:http://ip:8088

    

  6)HDFS集群的简单操作命令

    hdfs dfs -ls /

    

    hdfs dfs -mkdir -p /user/zyh

    

  7) YARN集群的操作----提交任务/作业

    计算PI值的作业:
    yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100

    

四、一个问题

我之前没有注意发现我的yarn的从节点没有启动起来,在执行计算PI值的时候没有成功才看到:

  

查看日志发现是配置文件:

  在hdfs-site-web.xml中:

    

  查看http://1.0.0.5:50070可以查看从节点是否启动:

    

  在执行上面使用yarn集群来计算pi值得命令:

    

  查看http://1.0.0.5:8088可以看出计算pi值得任务正在执行:

    

  最后成功:

     这里就截图了,电脑卡住了,上图中在web页面可以查看到任务执行成功,终端中会显示执行结果!     

 

喜欢就点“推荐”哦!

 

以上是关于HADOOP 伪分布式集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop伪分布集群搭建(Hadoop)

Hadoop伪分布集群搭建(Hadoop)

Hadoop伪分布集群搭建(Hadoop)

Hadoop伪分布式集群搭建总结

Hadoop搭建伪分布式集群转载

Hadoop详解——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用