• Hadoop基础(五):基于Ubuntu16搭建Hadoop完全分布式运行模式


    0 概述

    1)准备3台客户机(关闭防火墙、静态ip、主机名称

    2)安装JDK

    3)配置环境变量

    4)安装Hadoop

    5)配置环境变量

    6)配置集群

    7)单点启动

    8配置ssh

    9群起并测试集群

    1 虚拟机准备

    1). 克隆虚拟机

    2). 修改克隆虚拟机的静态IP

    3). 修改主机名

    4). 关闭防火墙

    5). 创建atguigu用户

    6). 配置atguigu用户具有root权限(参考Hadoop基础(三):基于Ubuntu16搭建Hadoop运行环境搭建

    7)/opt目录下创建文件夹

    1)在/opt目录下创建modulesoftware文件夹

    [atguigu@hadoop101 opt]$ sudo mkdir module
    [atguigu@hadoop101 opt]$ sudo mkdir software

    2)修改modulesoftware文件夹的所有者cd 

    [atguigu@hadoop101 opt]$ sudo chown atguigu:atguigu module/ software/
    [atguigu@hadoop101 opt]$ ll
    总用量 8
    drwxr-xr-x. 2 atguigu atguigu 4096 1月  17 14:37 module
    drwxr-xr-x. 2 atguigu atguigu 4096 1月  17 14:38 software

    编写集群分发脚本xsync

    2.1 rsync 远程同步工具

    rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

    rsyncscp区别:rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

    1)基本语法

    rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname

    命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

      选项参数说明

    2-2

    选项

    功能

    -r

    递归

    -v

    显示复制过程

    -l

    拷贝符号连接

    2)案例实操

    ahadoop101机器上的/opt/software目录同步到hadoop102服务器的root用户下的/opt/目录

    [atguigu@hadoop101 opt]$ rsync -rvl /opt/software/ root@hadoop102:/opt/software

    2.2 xsync集群分发脚本

    1)需求:循环复制文件到所有节点的相同目录下

    2需求分析:

    arsync命令原始拷贝:

    rsync  -rvl     /opt/module    root@hadoop103:/opt/

    b)期望脚本:

    xsync要同步的文件名称

    c)说明:在/home/atguigu/bin这个目录下存放的脚本,atguigu用户可以在系统任何地方直接执行。

    (3)脚本实现

    a)在/home/atguigu目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

    [atguigu@hadoop102 ~]$ mkdir bin
    [atguigu@hadoop102 ~]$ cd bin/
    [atguigu@hadoop102 bin]$ touch xsync
    [atguigu@hadoop102 bin]$ vi xsync

    该文件中编写如代码

    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if ((pcount==0)); then
    echo no args;
    exit;
    fi
    
    #2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname
    
    #3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
    
    #4 获取当前用户名称
    user=`whoami`
    
    #5 循环
    for((host=102; host<105; host++)); do
            echo ------------------- hadoop$host --------------
            rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
    done

    b)修改脚本 xsync 具有执行权限

    [atguigu@hadoop102 bin]$ chmod 777 xsync

    c)调用脚本形式:xsync 文件名称

    [atguigu@hadoop102 bin]$ xsync /home/atguigu/bin

    注意:如果将xsync放到/home/atguigu/bin目录下仍然不能实现全局使用,可以将xsync移动/usr/local/bin目录下。

    集群配置

    1) 集群部署规划

     

    2-3

     

     

    hadoop102

    hadoop103

    hadoop104

    HDFS

     

    NameNode

    DataNode

     

    DataNode

    SecondaryNameNode

    DataNode

    YARN

     

    NodeManager

    ResourceManager

    NodeManager

     

    NodeManager

    2 )配置集群

    1核心配置文件

    配置core-site.xml

    [atguigu@hadoop102 hadoop]$ vi core-site.xml

    在该文件中编写如下配置

    <!-- 指定HDFS中NameNode的地址 -->
    <property>
            <name>fs.defaultFS</name>
          <value>hdfs://hadoop102:9000</value>
    </property>
    
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>

    2HDFS配置文件

    配置hadoop-env.sh

    [atguigu@hadoop102 hadoop]$ vi hadoop-env.sh
    export JAVA_HOME=/opt/module/jdk1.8.0_144

    配置hdfs-site.xml

    [atguigu@hadoop102 hadoop]$ vi hdfs-site.xml

    在该文件中编写如下配置

    <property>
            <name>dfs.replication</name>
            <value>3</value>
    </property>
    
    <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>hadoop104:50090</value>
    </property>

    3YARN配置文件

    配置yarn-env.sh

    [atguigu@hadoop102 hadoop]$ vi yarn-env.sh
    export JAVA_HOME=/opt/module/jdk1.8.0_144

    配置yarn-site.xml

    [atguigu@hadoop102 hadoop]$ vi yarn-site.xml

    在该文件中增加如下配置

    <!-- Reducer获取数据的方式 -->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop103</value>
    </property>

    4MapReduce配置文件

    配置mapred-env.sh

    [atguigu@hadoop102 hadoop]$ vi mapred-env.sh
    export JAVA_HOME=/opt/module/jdk1.8.0_144

    配置mapred-site.xml

    [atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml
    
    [atguigu@hadoop102 hadoop]$ vi mapred-site.xml

    在该文件中增加如下配置

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

    3)在集群上分发配置好的Hadoop配置文件

     

    [atguigu@hadoop102 module]$ xsync hadoop-2.7.2/

     

    4)查看文件分发情况

    [atguigu@hadoop103 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

    4 集群单点启动

     

    1)如果集群是第一次启动,需要格式化NameNode

    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

    2hadoop102上启动NameNode

    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start namenode
    [atguigu@hadoop102 hadoop-2.7.2]$ jps
    3461 NameNode

    3hadoop102hadoop103以及hadoop104上分别启动DataNode

    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
    [atguigu@hadoop102 hadoop-2.7.2]$ jps
    3461 NameNode
    3608 Jps
    3561 DataNode
    [atguigu@hadoop103 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
    [atguigu@hadoop103 hadoop-2.7.2]$ jps
    3190 DataNode
    3279 Jps
    [atguigu@hadoop104 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
    [atguigu@hadoop104 hadoop-2.7.2]$ jps
    3237 Jps
    3163 DataNode

    5 SSH无密登录配置

    1) 配置ssh

    1)基本语法

    ssh另一台电脑的ip地址

    2ssh连接时出现Host key verification failed的解决方法

    [atguigu@hadoop102 opt] $ ssh 192.168.1.103
    The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
    RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
    Are you sure you want to continue connecting (yes/no)? 
    Host key verification failed.

    3)解决方案如下:直接输入yes

    2)无密钥配置

     

    (1)生成公钥和私钥:

    [atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

    然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

    3)利用xsync将.ssh发送到三台机器上

    3) .ssh文件夹下~/.ssh的文件功能解释

     

    2-4

     

    known_hosts

    记录ssh访问过计算机的公钥(public key)

    id_rsa

    生成的私钥

    id_rsa.pub

    生成的公钥

    authorized_keys

    存放授权过得无密登录服务器公钥

    6 群起集群

    1)  配置slaves

    /opt/module/hadoop-2.7.2/etc/hadoop/slaves
    [atguigu@hadoop102 hadoop]$ vi slaves

    该文件中增加如下内容:

    hadoop102
    hadoop103
    hadoop104

    注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

    同步所有节点配置文件

    [atguigu@hadoop102 hadoop]$ xsync slaves

    2) 启动集群

    1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要停止上次启动的所有namenodedatanode进程,然后再删除data和log数据

    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode  -format

    2)启动HDFS

    [atguigu@hadoop102 hadoop-2.7.2]$ start-dfs.sh
    [atguigu@hadoop102 hadoop-2.7.2]$ jps
    4166 NameNode
    4482 Jps
    4263 DataNode
    [atguigu@hadoop103 hadoop-2.7.2]$ jps
    3218 DataNode
    3288 Jps
    [atguigu@hadoop104 hadoop-2.7.2]$ jps
    3221 DataNode
    3283 SecondaryNameNode
    3364 Jps

    (3)启动YARN

    [atguigu@hadoop103 hadoop-2.7.2]$ start-yarn.sh

    注意:NameNodeResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN

    4Web端查看SecondaryNameNode

    a)浏览器中输入http://hadoop104:50090/status.html

    b)查看SecondaryNameNode信息,如图2-41所示。

     2-41 SecondaryNameNode的Web

    7 集群启动/停止方式总结

    1)  各个服务组件逐一启动/停止

    1)分别启动/停止HDFS组件

    hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode

    2)启动/停止YARN

    yarn-daemon.sh  start / stop  resourcemanager / nodemanager

    2) 各个模块分开启动/停止(配置ssh是前提)常用

    1)整体启动/停止HDFS

    start-dfs.sh   /  stop-dfs.sh

    2)整体启动/停止YARN

    start-yarn.sh  /  stop-yarn.sh

  • 相关阅读:
    浙江省新一代多普勒天气雷达系统
    删除目录下的所有文件及子文件夹
    在南京14所测试出厂雷达(转)
    c++实现aes加密算法,对字符串进行加密
    自已在别人基础上封装的AES数法 C++
    IOS发布问题
    GameCenter 使用指南
    [iOS]AES加密在iOS上面的实现
    【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012625日更新iap恢复详解】
    基于cocos2dx引擎的游戏框架设计
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13286171.html
Copyright © 2020-2023  润新知